zoukankan      html  css  js  c++  java
  • SQL入门之多表查询

    如果查询需要针对两个或者更多个表,则在需要涉及到表的连接操作(join)。

    0.笛卡儿积

    最简单的连接方式是直接在from子句中加入两个表,并且用join操作符隔开。形式为Table1 join Table2。下面是例子:

    select e.fname, e.lname, d.name
    from employee e join department d;

    产生108行数据,这是因为,对于单纯使用join进行的是笛卡儿积运算。对于两个表,分别由m和n个元组,进行笛卡尔积后将产生mXn个元组。但这个不是我们需要的结果,包含由很多不需要的数据。若要得到正确的结果,则需要内连接。

    1.内连接

    内连接根据相同属性值进行连接。只需要在上面的表中加上on和所需要相等的属性即可。

    select e.fname, e.lname, d.name
    from employee e join department d
    on e.dept_id = d.dept_id;

    结果正是想要的。其实,在join前可加inner这是默认情况。但对于良好习惯,应该加上,以指明这是什么连接,这有助于代码阅读。对于on e.dept_id = d.dept_id可以用using(dept_id)来代替。

    以上结果也可以用SQL92的标准进行操作

    select e.fname, e.lname, d.name
    from employee e, department d
    where e.dept_id = d.dept_id;

    对于两种标准,选择在于自己,各有优缺点。

    2.自连接

    不仅在同一查询中多次包含同一个表,还可以对表自身进行连接。只需要取不同别名即可。

    总结:对于连接操作方法挺好懂的,比较简单,对于连接3个以上,连接子查询,不等连接等类似。

  • 相关阅读:
    nuxt项目打包上线,以及nuxt项目基础代码分享
    SVG学习之stroke-dasharray 和 stroke-dashoffset 详解
    从零开始使用mocha测试
    小程序开发,视频播放和下载
    小程序开发中遇到的坑
    记录一次面试中的HTTP请求相关问题
    css3 min-content,max-content,fit-content, fill属性
    GC的 算法和种类
    JVM 的运行机制
    各种同步控制工具的使用
  • 原文地址:https://www.cnblogs.com/pipinet/p/6686541.html
Copyright © 2011-2022 走看看