oracle

来源:互联网 发布:win7照相机软件 编辑:程序博客网 时间:2024/05/23 05:09

多表查询

笛卡尔积:两个集合相乘的结果

内连接 :

特点:内链接必须两张表同时满足匹配数据才会提取数据

显示内连接: select * from A  inner join B  on  A.lie = B.列

隐士内连接: select * from A B where A.lie=B.列

外连接:

左外连接: left join 特点以左表为基准,右表为补充显示

右外连接:right join  特点 以右表为基准,左表为数据作为补充显示

   oracle特有外连接使用符号(+)    放置位置: 防在补充显示的表,跟等号左右无关

select * from A ,B where A.列 = B.列(+) 


 自连接:自己跟自己做连接  select * from A A1 , A A2, where A1.列=A2.列


五表查询:

查询员工信息和员工的领导信息

查询部门信息 加入dept表 逗号隔开

查询员工的工资 e.sal between s.losal and s.hisql

查询领导的工资 e.sal between s2.losal and s2.hisql 


子查询:

在查询语句中嵌套查询语句  可以多个

     单行子查询: select * from A where A.列 = sql 语句 返回的唯一的值

多行子查询: select * from A where A 列  in (sql 语句返回单列多个值)

    select * from A ,(sql语句临时) t where A 列 = t.列 

exists :  存在的意思用来判断记录结果集是否存在  存在返回true  不存在返回false 

查询有员工的部门信息  

使用了主表的列做子查询 执行顺序跟普通子查询不一致,先提取主表记录作为条件使用


oracle rownum ;  虚拟列  是oracle 数据记录产生时  产生的一系列的序号(1,2,3) 为了实现分页显示  相当于  mysql limit .

简单实例:  select rownum ,emp .* from emp;


集合 

交集取两个集合共同的补分  intersect  A(1,2,3)  B(2,3,4) A与B做交集(2,3)

并集 取两个集合取全部 去重 union  A(1,2.3) B(2,3,4) A与B做并集(1,2,3,4)

差集         从一个集合去掉另外一个集合的补分 minus  A(1,2,3)  B(2,3,4) A与B做差集 (1)

原创粉丝点击