zoukankan      html  css  js  c++  java
  • 【Oracle】子查询、伪列、分页查询、表连接

    子查询、伪列、分页查询、表连接

    ①. 子查询
    子查询可代替表、属性值
    	
    ①子查询结果是1行1列
    	例:查询工资最高的员工信息
    	select * from employees where salary = (select max(salary) from employees);
    ②子查询结果是n行1列
    	例:查询和“king”一个姓的并且在同一部门的员工的信息
    	select * from employees where department_id in(select department_id from employees where last_name = ‘king’);
    ③子查询结果是n行n列
    	例:查询工资前五位到前十位之间的员工信息
    select * from (select employee_id, first_name, last_name,rownum as rn from (select * from employees order by salary desc)) where rn >= 5 and rn <= 10
    ②. 伪列、分页查询
    伪列:
    rowid			行的物理地址,不存在于任何表,可查询
    rownum			对查询满足条件的结果数据进行编号(从1开始)
    用法:
     		select rowid,rownum,其他字段 from 表;
    分页:
    	利用子查询,将查询所有表数据再加上序列(rownum)作为一个临时表
    
    例如:
    ①查询薪资从第五到第十位的员工信息
    	**先按工资降序排序,在加上序号字段形成临时表
    select * from (select employees_id, first_name, last_name, salary, rownum as rn from (select * from employees order by salary desc)) where rn >= 5 and rn <= 10
    
    ②对表加序号
      select employees.*, rownum as rn from employees;
    ③. 表连接
    将多张表连接为一张表进行处理(放在from后)
    
    1.内连接
    	关键词:…(inner)join … on  		 inner可以省略
    	语法:表1 (inner)join 表2 on 表1.xxx = 表2.xxx
    特点:①合并表1存在且表2也与之对应存在的数据②不保留表1存在且在表2中对应不存在的元组数据(与外连接对比)
    2.外连接
    	①左外连
    		关键词:left (outer) join … on    	outer可以省略
    		语法:表1 left join 表2 on 表1.xxx = 表2.xxx
    		特点:合并表1和表2,并且会保留表1存在且表2对应不存在的元组,并对其补充为空
    	②右外连
    		语法:表1 right join 表2 on 条件
    3.扩展
    	如果有两张以上的表进行连接时,先连接两个后成为一个表,再连接下一个,依次连接
    
  • 相关阅读:
    python pandas库和stats库计算偏度和峰度(附程序)
    python matplot 字体配置-中文手绘漫画风格
    流密码
    信息安全和密码学基础知识
    剑指offer48-把字符串转换成整数
    剑指offer47-不用加减乘除做加法
    剑指offer46-求1+2+...+n
    剑指offer45-孩子们的游戏
    剑指offer44-扑克牌顺子
    剑指offer43-翻转单词顺序列
  • 原文地址:https://www.cnblogs.com/jwnming/p/13634697.html
Copyright © 2011-2022 走看看