语言分类:
1.ddl:create,alter,drop
2.dcl:grant ,revoke
3.dml:select,insert,delete,update
完全匹配的内连接:
简洁写法: select tt1.name,t2,name from t1,t2 where t1.id=t2.id
标准写法:select t1.name,t2.name from t1 join t2 on t1.id=t2.id
不完全匹配的内连接:
左外连接:select t1.name,t2.name from t1 left outer join t2 on t1.id=t2.id
select t1.name,t2.name from t1,t2 where t1.id=t2.id(+)(oracle9.0以上方式,t1表的数据无条件显示出来)
右连接:select t1.name,t2.name from t1,t2 where t1.id(+)=t2.id
子查询:
独立子查询:select * from e where id in (select id from d);
相关子查询:select * from e where id in(select id#不可用*,否则会出现too many value错误# from d where id=e.id and id='03');
总结:有时在相同的情况下,表连接与子查询都能实现的,用表连接执行,效率会高些
orcle独有的并集(union)与交集(intersect):
1.union:只起显示作用,当有重复时,只显示一个,select ename from t1 union select dname from t2;
2.intersect:可返回两个语句中重复的行, select eid from t1 intersect select id from t2;
批量插入:
1.insert into e(id,name) select id,name from d;
2.create table tee as (select * from t);
视图:是一条存储起来的select语句,是数据的显示方式,也可作为简单报表
作用:安全(权限管理,隐藏数据结构),方便,一致性
限制:组成的表有两个或以上,不允许对两个或以上的表同时更新,只能对一个表进行更新,但可用替代触发器解决这个问题
视图中有聚合函数distance,不允许更新
同义词:一个对象替代名,使不同用户模式下可进行操作同一个对象
公共同义词:dba建立,所有用户可使用
私有同义词:当前用户建立,自己使用
序列:发布一系列唯一数字整型的oral对象,独立型的事务,每次访问时都会按照事先规定的增加或减少,自动完成,提交完成回滚事务,不影响序列的变化,以表的形式存储,默认从1开始,每次增量为1
eg:create sequence myseq
select myseq.netxtval from dual
or
select myseq.currval from dual
触发器:特殊的过程,不接受参数
事务:用于确保数据完整性和并发处理的能力,一条或一组sql语句作为一个逻辑单元保障语句成功或失败
隔离性(加锁):隔离性越强,并发性越差,否则,并发性越强
原子性:手段 一致性:目的 永久性:物理上
行级触发器:
select * from t1 for update(加锁过程),表示查完后立马上要修改(严厉的规则),不允许有别的用户修改操作,直到当前用户修改完成,别的用户处于等待状态(但可以查询)
触发器语句体中不可用commit,rollback;但可在触发器中抛出异常,阻止操作
重要的内存表:old,new
old;内存中的特殊逻辑表,删除时数据移到old边中,结构与删除表一样
eg:delete from emp where id=:old.id
insert into emp(eid,ename,id) values(1,'ee',:new.id);
update emp set id=:new.id where id=:old.id;
记录:是由几个相关值构成的复合变量,常用于支持select语句的返回值,使用记录可将一行数据看成一个单元进行处理,而不必将每一列单独处理,使用前需事先声明
%type 制定字段 %rowtype 整个表的字段类型
游标:是一种pl/sql控制结构,可对sql语句的处理进行显式控制,便与对表的行数据逐条处理,可传参数,数据量大时不推荐使用
补充:判断字段是否为空: is not null
1.ddl:create,alter,drop
2.dcl:grant ,revoke
3.dml:select,insert,delete,update
完全匹配的内连接:
简洁写法: select tt1.name,t2,name from t1,t2 where t1.id=t2.id
标准写法:select t1.name,t2.name from t1 join t2 on t1.id=t2.id
不完全匹配的内连接:
左外连接:select t1.name,t2.name from t1 left outer join t2 on t1.id=t2.id
select t1.name,t2.name from t1,t2 where t1.id=t2.id(+)(oracle9.0以上方式,t1表的数据无条件显示出来)
右连接:select t1.name,t2.name from t1,t2 where t1.id(+)=t2.id
子查询:
独立子查询:select * from e where id in (select id from d);
相关子查询:select * from e where id in(select id#不可用*,否则会出现too many value错误# from d where id=e.id and id='03');
总结:有时在相同的情况下,表连接与子查询都能实现的,用表连接执行,效率会高些
orcle独有的并集(union)与交集(intersect):
1.union:只起显示作用,当有重复时,只显示一个,select ename from t1 union select dname from t2;
2.intersect:可返回两个语句中重复的行, select eid from t1 intersect select id from t2;
批量插入:
1.insert into e(id,name) select id,name from d;
2.create table tee as (select * from t);
视图:是一条存储起来的select语句,是数据的显示方式,也可作为简单报表
作用:安全(权限管理,隐藏数据结构),方便,一致性
限制:组成的表有两个或以上,不允许对两个或以上的表同时更新,只能对一个表进行更新,但可用替代触发器解决这个问题
视图中有聚合函数distance,不允许更新
同义词:一个对象替代名,使不同用户模式下可进行操作同一个对象
公共同义词:dba建立,所有用户可使用
私有同义词:当前用户建立,自己使用
序列:发布一系列唯一数字整型的oral对象,独立型的事务,每次访问时都会按照事先规定的增加或减少,自动完成,提交完成回滚事务,不影响序列的变化,以表的形式存储,默认从1开始,每次增量为1
eg:create sequence myseq
select myseq.netxtval from dual
or
select myseq.currval from dual
触发器:特殊的过程,不接受参数
事务:用于确保数据完整性和并发处理的能力,一条或一组sql语句作为一个逻辑单元保障语句成功或失败
隔离性(加锁):隔离性越强,并发性越差,否则,并发性越强
原子性:手段 一致性:目的 永久性:物理上
行级触发器:
select * from t1 for update(加锁过程),表示查完后立马上要修改(严厉的规则),不允许有别的用户修改操作,直到当前用户修改完成,别的用户处于等待状态(但可以查询)
触发器语句体中不可用commit,rollback;但可在触发器中抛出异常,阻止操作
重要的内存表:old,new
old;内存中的特殊逻辑表,删除时数据移到old边中,结构与删除表一样
eg:delete from emp where id=:old.id
insert into emp(eid,ename,id) values(1,'ee',:new.id);
update emp set id=:new.id where id=:old.id;
记录:是由几个相关值构成的复合变量,常用于支持select语句的返回值,使用记录可将一行数据看成一个单元进行处理,而不必将每一列单独处理,使用前需事先声明
%type 制定字段 %rowtype 整个表的字段类型
游标:是一种pl/sql控制结构,可对sql语句的处理进行显式控制,便与对表的行数据逐条处理,可传参数,数据量大时不推荐使用
补充:判断字段是否为空: is not null