DML
insert关键字
作用:往表中插入一条(多条)数据

语法1:元祖值式的插入
语法1: insert into tablename(column1,column2,...,columnN) values(value1,value2,...,valueN); 
      insert   into    表名      (列1      ,列2    ,...., 列N  ) values(值1  ,值2,.... , 值N)

如果往表中所有的列都添加数据时,表后面的字段可以不添加,直接写values

insert   into    表名  values(值1  ,值2,.... , 值N)

语法2:查询结果式的插入
语法2: insert into tablename sub-query

delete关键字
作用:从表中删除数据
语法: delete [from] tablename [where condition]

update关键字
作用:更新表中的数据
语法: update tablename set column1=value1,column2=value2,...,columnN=valueN [where condition]

事务

事务(Transaction)是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位。

目的:保证数据库的完整性

特点:事务不能嵌套

如何开启事务:
    一个DML语句(insert、delete、update)的执行

如何关闭事务:
    1.显示的调用commit或rollback
    2.当执行DDL(Create、Alter、Drop)语句事务自动提交
    3.用户正常断开连接时,事务自动提交。
    4.系统崩溃或断电时事务自动回滚

序列

一、概念:
    序列(sequence):oracle专有的专有对象
二、作用:
    产生一个自动递增的数列

三、创建一个序列:

  1. create sequence seq_name
  2. increment by 1
  3. start with 1

四、使用序列:
    序列名.nextval
    序列名.currval

视图

一、定义:
    视图(view):一种不占用物理空间的虚表。

二、作用:
    将一些查询复杂的SQL语句变为视图,便于查询

三、语法:

  1. create [or replace] view v$_name
  2. as sub-query
  3. [with read only]

四、需要注意的点:
    1.视图也可以从视图中产生
    2.我们把用于产生视图的表称之为基表
    3.我们对视图进行数据修改就是对基表进行数据修改,反之亦然
    4.不能对多张表的数据,通过视图进行修改。

五、使用视图需要注意
    1.一般来讲,只有重复出现非常多次的SQL语句,才会创建视图
    2.数据库迁移,视图也得随之迁移,否则在新数据中是不能用的
    3.创建视图时,尽量不要带or replace

数据类型

数据类型分类:
    1.number(x,y)  数字类型,x表示最大长度,y表示精度
    2.varchar2(x) 可变字符串,x表示最大长度
    3.char(x) 定长字符串,x表示最大长度
    4.long 长字符串,最大2G
    5.Date,日期(年月日时分秒)
    6.TIMESTAMP 时间戳,精确到微秒

DDL

1.create关键字作用:用于创建数据库对象(表、视图、序列等)

语法:    create table tablename(column1 dataType, column2 dataType,...,columnN dataType) 
语法2: create table tablename as subquery

2.alert关键字
作用:用于修改数据库对象(表、视图、序列等)

语法:
    1) alter table tablename add(columnname dataType) 
    2) alter table tablename modify( columnname dataType) 
    3) alter table tablename drop [column] columnname

3.drop关键字
作用:用于删除数据库对象(表、视图、序列等)

语法:
     drop table tablename

使用_例子:

DML

--insert关键字

--作用:往表中插入一条(多条)记录

--元祖(tuple)值式的插入(一次插入一条记录)
--语法1: insert into tablename(column1,column2,...,columnN) values(val1,val2,...,valN) 
--例子:

  1. insert into emp(empno,ename,sal,deptno) values(9527,'hua%an',100,40);

--如果往表中所有的列都添加数据时,表后面的字段可以不添加,直接写values

  1. insert into emp values(8888,'xiaoqiang','aaa',9527,sysdate,0,null,40);

--查询结果式的插入
--语法2: insert into tablename sub-query 
--例子:

  1. insert into emp_temp (select * from emp where deptno = 20)

--创建一个emp的临时复制表

  1. create table emp_temp as select * from emp where 1 = 2

--delete关键字

--作用:删除表中的数据
--语法: delete [from] tablename [where condition] 
--例子:

  1. delete emp_temp where empno = 8888;

小心使用  delete emp_temp;

--update关键字

--作用:更新表中的数据
--语法: update tablename set column1=value1,column2=value2,...,columnN=valueN [where condition] 
--例子:

  1. update emp_temp set sal = sal*1.2 where ename = 'SMITH';

事务

--转账

  1. update emp_temp set sal = sal - 500 where ename='JONES';
  2. update emp_temp set sal = sal + 500 where ename='SMITH';
  1. commit;
  2. rollback;
  3.  
  4. create table aaa(id number,name varchar2(20));
  5.  
  6. insert into emp_temp(empno,ename) values(1111,'cai10');
  7. insert into emp_temp(empno,ename) values(2222,'cai20');
    --savepoint 存档点
  8. savepoint sp1;
  9. insert into emp_temp(empno,ename) values(3333,'cai30');
  10. insert into emp_temp(empno,ename) values(4444,'cai40');
  11. rollback to sp1;

--事务的四个特性:ACID
--原子性(A)
--一致性(C)

  1. update emp_temp set sal = 5000 where empno=1111
  2. update emp_temp set sal = sal+1000 where empno = 1111;

--隔离性(I)
--持久性(D)

用户管理

--1.创建一个账户

  1. create user zhangsan identified by 123456;

--2.修改账户的密码

  1. alter user zhangsan identified by 654321;

--3.删除一个账户 [cascade 表示是否级联删除]

  1. drop user zhangsan;

--4.让一个用户的密码失效

  1. alter user zhangsan password expire;

--5.锁定、解锁一个账户

  1. alter user zhangsan account lock;
  2. alter user zhangsan account unlock;

--DCL

--grant授予权限
--revoke收回权限

--1.给用户授权
--允许用户登录

  1. grant create session to zhangsan;

--给账户授权可以操作表

  1. grant all on scott.emp_temp to zhangsan;

--2.取消用户的权限

  1. revoke all on scott.emp_temp from zhangsan;

--创建序列

  1. create sequence seq_emp_temp
  2. increment by 1
  3. start with 1

--使用序列

--通过序列名.next_val
自增序列: select seq_emp_temp.nextval from dual; 
查询序列: select seq_emp_temp.currval from dual; 
使用一次加一行序列加一: insert into emp_temp(empno) values(seq_emp_temp.nextval)

视图

--登录到sys账户给scott赋予创建视图的权限: grant create view to scott;

--1.视图的创建

  1. create view v$_emp_dept
  2. as
  3. select ename,sal,job,dname from emp,dept where emp.deptno = dept.deptno;

--视图也可以从视图中产生

  1. create view v$_emp_dept_tem
  2. as
  3. select ename,sal from v$_emp_dept

--修改视图的数据,就是修改基表的数据

  1. create or replace view v$_emp
  2. as
  3. select empno,ename from emp
  4. with read only
  5.  
  6. select * from v$_emp;
  7. select * from emp;
  8.  
  9. update emp set sal = 8888 where empno = 9527;

--视图的优点:可以使某些重复出现SQL语句变得更为简单
--视图的缺点:1.如果修改基表的结构,视图失效
--           2.增加数据库的维护成本
--           3.视图会被覆盖掉
--           4.一般情况下,不要对视图进行DML操作

--视图的例子

  1. select dname, grade
  2. from (select deptno, avg_sal, grade
  3. from (select deptno, avg(sal) avg_sal from emp group by deptno) t,
  4. salgrade s
  5. where t.avg_sal between s.losal and s.hisal) t1,
  6. dept
  7. where t1.deptno = dept.deptno
  8. and t1.grade =
  9. (select min(grade)
  10. from (select deptno, avg_sal, grade
  11. from (select deptno, avg(sal) avg_sal
  12. from emp
  13. group by deptno) t,
  14. salgrade s
  15. where t.avg_sal between s.losal and s.hisal));

--为上面的SQL中重复出现的sql语句创建视图

  1. create view v$_dept_avgsal
  2. as
  3. select deptno, avg_sal, grade
  4. from (select deptno, avg(sal) avg_sal from emp group by deptno) t,
  5. salgrade s
  6. where t.avg_sal between s.losal and s.hisal

--利用视图替换上面的sql语句

  1. select dname, grade
  2. from v$_dept_avgsal t1,
  3. dept
  4. where t1.deptno = dept.deptno
  5. and t1.grade =
  6. (select min(grade)
  7. from v$_dept_avgsal);

--删除视图所表示的基表

  1. create view v$_aaa
  2. as
  3. select * from aaa;

--删除表 aaa: drop table aaa;
--查询视图: select * from v$_aaa;
--删除视图 v$_aaa: drop view v$_aaa;

--DDL

--create

--作用:用来创建数据库的对象(表,视图,序列,索引等)
--语法1: create table tablename(column1 dataType, column2 dataType,...,columnN dataType) 
--例子:

  1. create table t_user(
  2. id number,
  3. username varchar2(30),
  4. password varchar2(30)
  5. );

--语法2: create table tablename as subquery

--例子:

  1. create table emp_e1 as select * from emp where 1=1;

--alter

--作用:用来修改数据库的对象(表,视图,序列,索引等)
--语法: alter table tablename [modify/add/drop] 
--例子1:

  1. alter table emp_e1 modify(ename varchar2(10));
  2. insert into emp_e1(empno,ename) values(9898,'cai10cai10cai');

--例子2:

  1. alter table emp_e1 add(phone varchar2(11));

--例子3:

  1. alter table emp_e1 drop column phone;
  2.  
  3. select * from emp_e1

--drop
--作用:用来删除数据库的对象(表,视图,序列,索引等)
--语法  drop table tablename 
 drop table emp_e1;

Oracle day04 DML_事务_序列_视图_数据类型_DDL的更多相关文章

  1. oracle中以dba_、user_、v$_、all_、session_、index_开头

    原 oracle中以dba_.user_.v$_.all_.session_.index_开头 2011年07月05日 11:26:06 clbxp 阅读数:3279   oracle中以dba_.u ...

  2. Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

    count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age ...

  3. 『流畅的Python』第10章笔记_序列类型

    一.基础知识 “__”前缀:私有属性.方法,在__dict__中存储时被改写为“_类名__”前缀 “_”前缀:是约定俗成的保护属性.方法,不过编译器不会对之采取任何处理 二.class特殊方法介绍 在 ...

  4. Django_Restframwork_APIVIEW视图_源码分析

    Django _VIEW视图_源码分析

  5. 51nod_1236_序列求和 V3 _组合数学

    51nod_1236_序列求和 V3 _组合数学 Fib(n)表示斐波那契数列的第n项,Fib(n) = Fib(n-1) + Fib(n-2).Fib(0) = 0, Fib(1) = 1. (1, ...

  6. BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划

    BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得 ...

  7. 【转】oracle中的NULL、''(空字符串)以及'_'(空格)

    在Oracle中使用null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? 1.NULL和''(空字符串)是一个意思 注:为了便于区分空字符串和空格,下面的示例均以'_'代表空格. ...

  8. Python基本语法_基本数据类型_序列类型详解

    目录 目录 序列 序列的标准操作符 切片操作符 一个例子 字符串的连接 序列的功能函数 enumerate 枚举出序列对象的元素 len 获取序列对象的长度 min 取出sequence中的最小值 m ...

  9. ORACLE主要的系统表和系统视图

    ORACLE主要的系统表和系统视图 1.系统表 ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYS进行查询.几个重要的表或者视图如下: v$controlfile:控制 ...

随机推荐

  1. Bandwagon的配置记录(二) —— ftp文件传输

    SSH登录服务器 登录的方法在Bandwagon的配置记录(一) —— kexue上网 配置前的准备 1.新建一个目录(  /home/ftp  ),以后可以把文件放在这里,这里相当于是个中转站 cd ...

  2. Object-C 编程问题汇总

    Object-C 编程问题汇总 Cocopods 安装时遇见的问题: error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, ...

  3. linux常见命令实践.

    ls -la : 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件 ls -a . .. 1 online_tools online_tools_0803 ll: 竖列显示所有文件 l ...

  4. ubuntu 16.04卸载不必要默认安装软件

    两个办法,一个在ubuntu软件里一个一个删,明显的windows下做法. 还有一个通过终端来删除.ctrl+alt+t打开终端. 1.卸载libreoffices(要删一起删了,然后去装office ...

  5. [Java]LeetCode237. 删除链表中的节点 | Delete Node in a Linked List

    Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

  6. [Swift]LeetCode519. 随机翻转矩阵 | Random Flip Matrix

    You are given the number of rows n_rows and number of columns n_cols of a 2D binary matrix where all ...

  7. [Swift]LeetCode782. 变为棋盘 | Transform to Chessboard

    An N x N board contains only 0s and 1s. In each move, you can swap any 2 rows with each other, or an ...

  8. [Swift]LeetCode1015. 可被 K 整除的最小整数 | Smallest Integer Divisible by K

    Given a positive integer K, you need find the smallest positive integer N such that N is divisible b ...

  9. 解决git pull出现: Your local changes to the following files would be overwritten by merge: ...的问题

    今天在服务器上git pull是出现以下错误: error: Your local changes to the following files would be overwritten by mer ...

  10. Spring Boot druid监控页添加登录访问权限(用户名+密码)

    需求 druid作为数据源的一名后起之秀,凭借其出色的性能,渐渐被大家使用.当然还有他的监控页面也有这非常大的作用.但是监控页面往往包含了很多隐私的数据信息,所以需要将其保密,所以可以为监控页面添加一 ...