oracle

oracle部分整理

一、子查询

 查询的注意地方   

1. 括号
2. 合理的书写风格
3. 可以在主查询的where select having from后面都可以放置子查询
4. 不可以在group by放置子查询
5. 强调from后面的子查询
6. 主查询和子查询可以不是同一张表;只要子查询返回的结果主查询可以使用 即可
7. 一般不在子查询中排序;但在top-n分析问题中,必须对子查询排序
8. 一般先执行子查询,再执行主查询;但相关子查询例外
9. 单行子查询只能使用单行操作符;多行子查询只能使用多行操作符
10. 子查询中null(参考http://www.cnblogs.com/lulu638/p/4498098.html)

 

SQL> --6. 主查询和子查询可以不是同一张表;只要子查询返回的结果主查询可以使用 即可
SQL> --查询部门名称是SALES的员工
SQL> select *
  2  from emp
  3  where deptno=(select deptno
  4                from dept
  5                where dname=SALES);
SQL> --SQL优化原则: 理论上,尽量使用多表查询
SQL> host cls

 

SQL> --in 在集合中
SQL> --查询部门名称是SALES和ACCOUNTING的员工
SQL> select *
  2  from emp
  3  where deptno in (select deptno from dept where dname=SALES or dname=ACCOUNTING);

 

SQL> --any:和集合中的任意一个值比较
SQL> --查询工资比30号部门任意一个员工高的员工信息
SQL> select *
  2  from emp
  3  where sal > any (select sal from emp where deptno=30);

 

SQL> --all: 和集合中的所有值比较
SQL> --查询工资比30号部门所有员工高的员工信息
SQL> select *
  2  from emp
  3  where sal > all (select sal from emp where deptno=30);

分页的例子:

 --第5-8条记录
 select *
 from     (select rownum r,e1.*
     from (select * from emp order by sal) e1
      where rownum <=8
    )
 where r >=5;

相关子查询:

需求:员工表中薪水大于本部门平均薪水的员工

SQL> --相关子查询: 将主查询中的值作为参数传递给子查询
SQL> select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal
  2  from emp e
  3  where sal > (select avg(sal) from emp where deptno=e.deptno);

sql类型

 SQL的类型:
1. DML(Data Manipulation Language 数据操作语言): select insert updete delete
2. DDL(Data Definition Language 数据定义语言): create table,drop table,truncate table
                                                 create/drop view,sequence,index,synonym(同义词)
3. DCL(Data Control Language 数据控制语言): grant(授权) revoke(撤销权限)

 海量拷贝数据(移动数据)

1.  数据泵(导出 导入 拷贝): PLSQL程序

2.  SQL*Loader SQL>

3.  外部表(external table)

 delete和truncate的区别:

1. delete逐条删除;truncate先摧毁表,再重建 

2.(根本)delete是DML(可以回滚)  truncate是DDL(不可以回滚)

3. delete不会释放空间 truncate会  (原因:undo表空间 undo数据) 

4. delete会产生碎片 truncate不会 

5. delete可以闪回(flashback) truncate不可以

Oracle中事务的标志
1. 起始标志: 事务中第一条DML语句
2. 结束标志: 提交: 显式 commit
                   隐式 正常退出exit
                   回滚     显式 rollback
                   隐式 非正常退出,掉电,宕机

数据库对象

技术分享

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。