• 多表查询


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

    部门表:

    员工表:

    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)

  • 相关阅读:
    Ubutun 安装oh-my-zsh
    归并算法
    3n+1问题
    插入排序
    二分查找
    rehl7配置本地yum仓库
    解决Anaconda3报错:AttributeError: '_NamespacePath' object has no attribute 'sort'
    深度学习情感分析(随机梯度下降代码实现)
    MySQL中创建数据库/表(外键约束),向表中插入数据
    python---利用unittestreport模块输出测试报告
  • 原文地址:https://www.cnblogs.com/quanjunkang/p/10291245.html
Copyright © 2020-2023  润新知