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

    DQL多表查询

    一、多表查询
    实现多个表之间查询数据

    1.交叉连接
    笛卡尔积:A表中的每一行匹配B表中的每一行
    基本结构:
    select [数据库名1.]表名1,属性名1,......,
    [数据库名.]表名.属性名
    from [数据库名.]表名;

    2.交叉连接的条件筛选

    select [数据库名1.]表名1,属性名1,......,
    [数据库名.]表名.属性名
    from [数据库名.]表名
    where 条件表达式;

    外键:

    3、内连接
    使用比较运算符,根据表中匹配的属性 列出与条件相匹配的数据

    内连接关键字:inner join

    select [数据库名1.]表名1,属性名1,......,
    [数据库名.]表名.属性名
    from [数据库名.]表名1
    inner join [数据库名2.]表名2
    on 条件表达式;

    交叉连接与内连接的区别:
    内连接比交叉连接更省空间,并且效率更高

    4.外连接
    连接就是把内连接再进行筛选 又分为左外链接 右外连接和全外连接

    1.左外连接
    是以左表为基准,显示左表查询字段所有记录,右表值显示和左表相匹配的记录,没有匹配的用null代替。

    关键字:left join
    select [数据库名1.]表名1.属性名1,……,
    [数据库名n.]表名n.属性名n
    from [数据库名1.]表名1 left join [数据库名2.]表名2
    on 条件表达式;

    2、右外连接(右连接)
    是以右表为基准,显示右表查询字段所有记录,左表只显示和右表匹配的记录,没有匹配的用null代替。
    关键字:right join;
    select [数据库名1.]表名1.属性名1,……,
    [数据库名n.]表名n.属性名n
    from [数据库名1.]表名1 right join [数据库名2.]表名2
    on 条件表达式;
    ==
    select [数据库名1.]表名1.属性名1,……,
    [数据库名n.]表名n.属性名n
    from [数据库名2.]表名2 left join [数据库名1.]表名1
    on 条件表达式;


    3、全外连接(全连接)
    全连接的左右表不做限制,显示全部数据,没有匹配的数据用NULL代替。
    关键字:full join;
    mysql不支持全连接;

    使用左连接和右连接实现全连接
    连接:union

    五、多表联查
    可以连接查询多个表中的数据(一般最好不要超过4个表)

    一般格式:
    select [数据库名1.]表名1.属性名1,……,[数据库名n.]表名n.属性名n
    from [数据库名1.]表名1 inner join [数据库名2.]表名2
    on 条件表达式
    inner join [数据库名3.]表名3 on 条件表达式
    inner join [数据库名n.]表名n on 条件表达式……;

    六、表取别名
    表取别名格式:
    在查询的from 表名 表的别名


    多表联查的两种格式的区别及表取别名的使用:
    select s.s_name 姓名,c.c_name 班级,cou.cou_name 课程
    from student s inner join class c on s.sc_no=c.c_no
    inner join course cou on s.scou_no=cou.cou_no;

    select s.s_name 姓名,c.c_name 班级,cou.cou_name 课程
    from student s inner join class c inner join course cou
    on s.sc_no=c.c_no && s.scou_no=cou.cou_no;

  • 相关阅读:
    IPC总结学习
    机器学习中的范数规则
    机器学习的几个误区-转载
    来几道大数据的面试题吧
    海量数据随机抽样问题(蓄水池问题)
    字符串类算法题目总结
    RPC学习
    如何做出健壮的系统设计
    关于bind函数和connect函数的测试结论
    [置顶] Codeforces Round #197 (Div. 2)(完全)
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/11723455.html
Copyright © 2011-2022 走看看