zoukankan      html  css  js  c++  java
  • Mysql的联合查询

    联合查询

    union联合查询

    语法:

        select 语句 union 【all|distinct】 select 语句;

    示例:

    特点:

        条件:两表的查询出来的字段数目必须相同

        字段上会不会进行拼接

        只有在记录上对两个表查询出来的结果进行联合。

     

    【all|distinct】

    all            显示所有的记录,包含重复

    distinct        (缺省)不显示结果集中的重复记录

    示例:

    作用:

        1、对一个大的数据表进行分表存储,联合查询。

        2、对于同一个表实现不同的需求

    需求:对学生表sex=1按年龄降序,sex=0的按年龄升序

    连接查询

        由于数据库每一个表存储一个实体信息,实体之间还有联系。根据需求,经常会对具有关系的实体表进行,连接查询。

        连接查询实现的,结果集中的字段数增加,记录数不增加。

    连接查询分

    cross join

    交差连接

    语法:

        select * 或字段列表 from 表A cross join表B 【where条件】;

    示例:

        

    说明:

        结果是一个迪卡尔积,

    示例:

    使用条件进行连接

    演示:

        将stu表中的id为12的记录c_id设置为null(也不是与班级表不匹配)

    说明:

        最终的结果少了一个学生的信息。

    内连接

    inner join

    语法:

        select *或字段列表 from 表A 【inner】 join 表B【where子句】;

    说明:

        如果内连接没有指定条件,那么结果也是一个迪卡尔积

    示例1:

     

    外连接

        外连接分为左外连接与右外连接,如果以左边的表为主表那么就叫左外连接;如果以右边的表为主表,那么就叫右外连接。

    左外连接

        left join

    语法:

        select *或字段列表 from 表A left join 表B on 条件;

    示例:

    原理:

        1、在内存中产生两个结果集

        2、进行连接

        2.1、使用主表中的第1条记录,去匹配从表中的第1条记录,判断条件是否匹配,如果匹配,将两个表的记录连接在一起保留。如果不成功,保留主表的字段,从表的字段置null

        2.2、使用主表中的第1条记录,去匹配从表中的第2条记录,判断条件是否匹配,如果匹配,将两个表的记录连接在一起保留。如果不成功,保留主表的字段,从表的字段置null

        2.3、使用主表中的第1条记录,去匹配从表中的第3条记录,判断条件是否匹配,如果匹配,将两个表的记录连接在一起保留。如果不成功,保留主表的字段,从表的字段置null

        3、主表中的第1条记录匹配完成后,再使用主表的第2条记录,依次进行匹配。

        。。。。。。

    右外连接

        right join

     

    内连与外连的区别:

    1、内连可以省略条件。

    2、外连必须使用条件。

    3、内连时,如果条件不匹配,丢弃。

    4、外连时,如果条件不匹配,也会保留主表中的字段。从表中的置null

    自然连接

        自动根据表中的同名字段作为匹配条件。

    nature join

    语法:

        select *或字段列表 from 表A natural join 表B;

        自然左外连接

        select *或字段列表 from 表A natural left join 表B where

        自然右外连接

        select *或字段列表 from 表A natural rightjoin 表B where

     

    示例:

  • 相关阅读:
    解决在Apple Silicon (M1)安装php MongoDB扩展失败
    dyld: Library not loaded: /usr/local/opt/libpng/lib/libpng16.16.dylib
    docker自建bitwarden_rs服务器更新支持send功能
    centos安装puppeteer遇到的报错及解决方案
    Centos宝塔安装NextCloud
    苹果设备型号代码(更新至iPhone12)
    electron内使用vue-slider-component组件报“$attrs is readonly”错误
    ZSH隐藏命令行前面的用户名和主机名
    Android9.0配置charles的https抓包
    记一次discuz修改首页图片路径问题
  • 原文地址:https://www.cnblogs.com/nyxd/p/5359756.html
Copyright © 2011-2022 走看看