美文网首页
多表连接查询

多表连接查询

作者: DOB_8199 | 来源:发表于2021-03-03 12:59 被阅读0次

    含义

    又称多表查询,当查询的字段来自于多个表时,就会用到连接查询

    笛卡尔乘积:如果连接条件省略或无效则会出现

    解决办法:添加上连接条件


    分类

        按年代分类:

        sql92标准:仅仅支持内连接

        sql99标准【推荐】:支持内连接+外连接(左外和右外)+交叉连接


    sql99语法

    通过join关键字实现连接

            含义:1999年推出的sql语法

            支持:等值连接、非等值连接 (内连接),外连接,交叉连接

            语法:

                select 字段,...

                from 表1

                【inner|left outer|right outer|cross】join 表2 on  连接条件

                【inner|left outer|right outer|cross】join 表3 on  连接条件

                【where 筛选条件】

                【group by 分组字段】

                【having 分组后的筛选条件】

                【order by 排序的字段或表达式】

             好处:语句上,连接条件和筛选条件实现了分离,简洁明了!


    sql92标准

    1. 等值连接

        ① 多表等值连接的结果为多表的交集部分

        ②n表连接,至少需要n-1个连接条件

        ③ 多表的顺序没有要求

        ④一般需要为表起别名

        ⑤可以搭配前面介绍的所有子句使用,比如排序、分组、筛选

    技巧

    为表起别名

        ①提高语句的简洁度

        ②区分多个重名的字段

    注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限定

    2. 非等值连接

    自连接

    在表内寻找两次,第一次寻找目标的结果为第二次寻找目标的索引


    sql 99标准

    分类:

        内连接(★):inner

        外连接

            左外(★):left 【outer】

            右外(★):right 【outer】

            全外:full【outer】

        交叉连接:cross

    1. 内连接

    语法:

        select 查询列表

        from 表1 别名

        inner join 表2 别名

        on 连接条件;

    分类:

    等值,非等值,自连接

    特点:

    ①添加排序、分组、筛选

    ②inner可以省略

    ③ 筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读

    ④inner join连接和sql92语法中的等值连接效果是一样的,都是查询多表的交集

    (1)等值连接

    (二)非等值连接

    (三)自连接

    2. 外连接

    应用场景:

    用于查询一个表中有,另一个表没有的记录

    左外 右外

    特点:

    1、外连接的查询结果为主表中的所有记录

            如果从表中有和它匹配的,则显示匹配的值

            如果从表中没有和它匹配的,则显示null

            外连接查询结果=内连接结果+主表中有而从表没有的记录

    2、左外连接,left join左边的是主表

          右外连接,right join右边的是主表

    3、左外和右外交换两个表的顺序,可以实现同样的效果

    4、全外连接=内连接的结果+表1中有但表2没有的+表2中有但表1没有的

    扩展

    3. 交叉连接

    扩展

    相关文章

      网友评论

          本文标题:多表连接查询

          本文链接:https://www.haomeiwen.com/subject/pkqbfltx.html