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

    我们先建立一个表 EMP(15行):

     如果想查询所有数据,很简单

    select * from EMP;

    这样就能查询到EMP的所有数据

    在了解多表查询之前 我们应该先复习一下数学中笛卡尔积的概念

    比如一个集合有(1,2,3)三个元素 另一个集合有(4,5,6)三个元素

    他们的笛卡尔积 其实有3*3 9种情况 


    连接查询分为 内连接 ,外连接,交叉连接

    内连接

    内连接分显式和隐式 关键字是inner join 其实这个inner可以不写

    隐式的内连接就是笛卡尔积

    这里 建立一个DEPT表(4行)

     我们想看到这两个表所有的东西,所以要求它们的笛卡尔积 也就是隐式的内连接

    隐式的内连接用cross join 关键字

    select *from emp cross join dept;

    这两个表就会结合到一起:

    很明显有15*4 = 60种情况

    显式内连接

    之前的数据太重叠了 我们实际中不想这样

    这里先介绍一种等值连接

    原理就是先做笛卡尔积 然后再根据条件筛选,条件是:字段的值要相同,才能筛选 也就是说其实两个字段的名字可以不同

    等值连接 有一个自然连接 自然连接就是根据名称相同的字段进行连接 关键字:natural join 

    我们注意到 emp和dpt这两个表有一个相同字段 :DEPTNO

    我们直接做一个 natural join 

    select *from emp natural join dept;

    运行:

     此时就是15 行  这个自然连接其实就能帮到我们很多忙了

    如果字段名称不相同呢:

    用这种语法: 

    表一 inner join 表二 on 筛选条件

    我们可以这么写:

    select * from emp e inner join dept p on e.deptno = p.deptno

    结果和上一个natural join 是类似的 但是有一点不同:

     这个重复列 并没有消去

    其实字段的名称相同也可以:

    表一 inner join 表二 using (字段名)
    select * from emp inner join dept using (deptno);

    结果和natural join 一样

    下面再介绍一种不等值连接:

    select * from emp e inner join dept p on e.sal between 1000 and 1500;

    还有一种自连接

    select * from emp a inner join emp b on a.empno = b.mgr

    外连接:

    我们研究内连接的时候都是研究的等值 不等值的情况就会被忽略 外连接还是比较重要的

    外连接分为左连接和右连接

    我们先改一下表emp

    改为50 很显然  关键字“马云”和另一个表的对应是不存在的

    我们用内连接查一下

    select * from emp e inner join dept p on e.deptno = p.deptno

     这个表成为了14行

    我们想用emp作为主表 将那行没有筛选到的数据加入进来

    所以下面介绍左外连接:

    表一 leftouterjoin 表二 on 筛选条件

    这个outer 也可以省

    我们来跑一下

    select * from emp e left join dept p on e.deptno = p.deptno

     就会发现 这个没有被筛选的不等条件 关键字“马云”这一行被查了出来

    左外连接是以左表为主 那么右外连接就是以右表为主呗

    满外连接:整合了左外连接和右外链接 关键字full join

    就先介绍到这里

  • 相关阅读:
    远程仓库
    本地仓库
    仓库
    坐标和依赖
    my24_mysql索引-使用篇
    my23_pxc其中一个节点重建记录
    1.1 Rust安装
    1.2 学习笔记之数据类型
    my22_mydumper 使用总结
    my21_myloader -o参数
  • 原文地址:https://www.cnblogs.com/ranzhong/p/14223022.html
Copyright © 2011-2022 走看看