• 多表查询


    先建立两个表,员工表跟部门表

    部门表:

    员工表:

    1.交叉连接(笛卡尔积)

    关键字:select * from  tb_a  join  tb_b

    例如将部门表跟员工表交叉连接;

    可以看到这种连接是毫无意义的,只是纯粹的2x2连接,显示一共有四种连接方式

    2.内连接

    关键字:select * from  tb_a  join  tb_b on +连接条件

    例如查询员工和其部门的相关信息

    相当于去除了交叉连接中两个不符合条件的两种连接方式

    3.左外连接

    关键字:SELECT * FROM  tb_a  LEFT JOIN tb_b  on+连接条件

    LEFT 左边的是左表,右边的为右表
    链接结果为两个表的内链接加上左表不满足条件的数据,对应右边自动补 NULL

    4.右外连接

    关键字:SELECT * FROM  tb_a  right JOIN tb_b  on+连接条件

    与左外连接同理,链接结果为两个表的内链接加上右表不满足条件的数据,对应左表自动补 NULL 

    5.子查询

    关键字: in(结果不唯一)  ,   any(一部分),    all (全部)    ,not  in(in 的补集)

    一个语句的结果作为另一个语句的条件,当作为条件的结果中出现多个结果时,不能用 = 或者比较符号

    比如想查询跟张三不同部门的人

    思路:首先得找到张三部门

    select did from emp where ename='张三'

     

    再找出除了张三部门的其他部门

    select did from dept where did not in (select did from emp where ename='张三')

    最后再找出这些部门的人

    select ename from emp where did in (select did from dept where did not in (select did from emp where ename='张三'))

     

    6.联合查询

    关键字: union     (select * from tb_a)  union  (select * from tb_b)    注意:两个表查询用括号封装

    只要字段数相等,可以将两个表查询结果强行拼凑起来,字段名以第一个表为准

    我们试着把两个表连接起来,由于dept表只有两个字段,我们新建一个表dept1,然后把dept1跟emp连接起来

     

    (select * from dept1) union (select * from emp)

  • 相关阅读:
    day34-python-异常
    day33-python-反射、内置方法、元类、 属性查找
    day31/32待补
    day30-mixin、重载、多态、绑定与非绑定方法、内置函数
    day29-python-property、继承、属性查找、多继承带来的菱形问题
    day28-python-封装
    day27-python-面向对象介绍、实现面向对象编程、查找顺序
    luffy项目
    oc基本数据类型
    iOS 入门了解
  • 原文地址:https://www.cnblogs.com/quanjunkang/p/10291245.html
Copyright © 2020-2023  润新知