day03 dml,ddl,dcl,序列,视图,事务以及数据类型
--insert关键字
--作用:往表中插入一条(多条)记录
--元祖(tuple)值式的插入(一次插入一条记录)
--语法1:insert into tablename(column1,column2,...,columnN) values(val1,val
--DML --insert关键字 --作用:往表中插入一条(多条)记录 --元祖(tuple)值式的插入(一次插入一条记录) --语法1:insert into tablename(column1,column2,...,columnN) values(val1,val2,...,valN) --例子: insert into emp(empno,ename,sal,deptno) values(9527,'hua%an',100,40); --如果往表中所有的列都添加数据时,表后面的字段可以不添加,直接写values insert into emp values(8888,'xiaoqiang','aaa',9527,sysdate,0,null,40); --查询结果式的插入 --语法2:insert into tablename sub-query --例子: insert into emp_temp (select * from emp where deptno = 20) --创建一个emp的临时复制表 create table emp_temp as select * from emp where 1 = 2 --delete关键字 --作用:删除表中的数据 --语法:delete [from] tablename [where condition] --例子: delete emp_temp where empno = 8888; delete from emp_temp; --update关键字 --作用:更新表中的数据 --语法:update tablename set column1=value1,column2=value2,...,columnN=valueN [where condition] --例子: update emp_temp set sal = sal*1.2 where ename = 'SMITH'; select * from emp_temp;我 事务 --转账 update emp_temp set sal = sal - 500 where ename='JONES'; update emp_temp set sal = sal + 500 where ename='SMITH'; commit; rollback; create table aaa(id number,name varchar2(20)); --savepoint 存档点 insert into emp_temp(empno,ename) values(1111,'cai10'); insert into emp_temp(empno,ename) values(2222,'cai20'); savepoint sp1; insert into emp_temp(empno,ename) values(3333,'cai30'); insert into emp_temp(empno,ename) values(4444,'cai40'); rollback to sp1; --事务的四个特性:ACID --原子性(A) --一致性(C) update emp_temp set sal = 5000 where empno=1111 update emp_temp set sal = sal+1000 where empno = 1111; --隔离性(I) --持久性(D) 用户管理(dcl) --用户管理 --1.创建一个账户 create user zhangsan identified by 123456; --2.修改账户的密码 alter user zhangsan identified by 654321; --3.删除一个账户 [cascade 表示是否级联删除] drop user zhangsan; --4.让一个用户的密码失效 alter user zhangsan password expire; --5.锁定、解锁一个账户 alter user zhangsan account lock; alter user zhangsan account unlock; --DCL --grant授予权限 --revoke收回权限 --1.给用户授权 --允许用户登录 grant create session to zhangsan; --给账户授权可以操作表 grant all on scott.emp_temp to zhangsan; --2.取消用户的权限 revoke all on scott.emp_temp from zhangsan; 序列 --创建序列 create sequence seq_emp_temp increment by 1 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) select * from emp_temp; 视图 --登录到sys账户给scott赋予创建视图的权限 grant create view to scott; --1.视图的创建 create view v$_emp_dept as select ename,sal,job,dname from emp,dept where emp.deptno = dept.deptno; --视图也可以从视图中产生 create view v$_emp_dept_tem as select ename,sal from v$_emp_dept --修改视图的数据,就是修改基表的数据 create or replace view v$_emp as select empno,ename from emp with read only select * from v$_emp; select * from emp; update emp set sal = 8888 where empno = 9527; --视图的优点:可以使某些重复出现SQL语句变得更为简单 --视图的缺点:1.如果修改基表的结构mssql 使用序列,视图失效 --2.增加数据库的维护成本 --3.视图会被覆盖掉 --4.一般情况下,不要对视图进行DML操作 --视图的例子 select dname, grade from (select deptno, avg_sal, grade from (select deptno, avg(sal) avg_sal from emp group by deptno) t, salgrade s where t.avg_sal between s.losal and s.hisal) t1, dept where t1.deptno = dept.deptno and t1.grade = (select min(grade) from (select deptno, avg_sal, grade from (select deptno, avg(sal) avg_sal from emp group by deptno) t, salgrade s where t.avg_sal between s.losal and s.hisal)); --为上面的SQL中重复出现的sql语句创建视图 create view v$_dept_avgsal as select deptno, avg_sal, grade from (select deptno, avg(sal) avg_sal from emp group by deptno) t, salgrade s where t.avg_sal between s.losal and s.hisal --利用视图替换上面的sql语句 select dname, grade from v$_dept_avgsal t1, dept where t1.deptno = dept.deptno and t1.grade = (select min(grade) from v$_dept_avgsal); --删除视图所表示的基表 create view v$_aaa as 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) --例子: create table t_user( id number, username varchar2(30), password varchar2(30) ); --语法2:create table tablename as subquery --例子: create table emp_e1 as select * from emp where 1=1; --alter --作用:用来修改数据库的对象(表,视图,序列,索引等) --语法:alter table tablename [modify/add/drop] --例子1: alter table emp_e1 modify(ename varchar2(10)); insert into emp_e1(empno,ename) values(9898,'cai10cai10cai'); --例子2: alter table emp_e1 add(phone varchar2(11)); --例子3: alter table emp_e1 drop column phone; select * from emp_e1 --drop --作用:用来删除数据库的对象(表,视图,序列,索引等) --语法 drop table tablename drop table emp_e1; (编辑:上海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |