zoukankan      html  css  js  c++  java
  • 多表查询

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

    部门表:

    员工表:

    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)

  • 相关阅读:
    文学、哲学段子
    文学、哲学段子
    js技术要点---JS 获取网页源代码
    泛型类,泛型方法,泛型委托的定义方法
    数组元素的逆序数
    stm32 ARM中的RO、RW和ZI DATA
    poj 3040 Allowance 贪心
    schedule()函数的调用时机(周期性调度)
    以JTextPanel为例Swing的鼠标事件详解
    实习生面试总结
  • 原文地址:https://www.cnblogs.com/quanjunkang/p/10291245.html
Copyright © 2011-2022 走看看