• MySQL教程(十四)—— 连接


    1  连接的语法结构

    MySQL在SELECT语句、多表更新、多表删除语句中支持JOIN操作。

    语法结构:

    1 table_reference//第一张表
    2 {[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN}//连接选择:内连接,左外、右外连接
    3 table_reference//第二张表
    4 ON conditional_expr//ON后面是连接条件

    数据表参照:

    1 table_reference//表的参照
    2 tbl_name [[AS] alias | table_subquery [AS] alias]//加别名
    3 //数据表可以使用tbl_name AS alias_name或tbl_name alias_name赋予别名
    4 //table_subquery可以作为子查询使用在FROM子句中,这样的子查询必须为其赋予别名

    连接类型:

    • INNER JOIN,内连接
    • 在MySQL中,JOIN,CROSS JOIN和INNER JOIN是等价的。
    • LEFT [OUTER] JOIN,左外连接
    • RIGHT [OUTER] JOIN,右外连接

    连接条件:

    • 使用ON关键字来设定连接条件,也可以使用WHERE来代替。
    • 通常使用ON关键字来设定连接条件。
    • 使用WHERE关键字进行结果集记录的过滤。

    2  内连接

    内连接,即显示左表及右表符合连接条件的记录(A、B表交叉的部分)

    (下例中,左表总共23条数据,但最后一条的cate_id并没有在右表中出现,所以运行下例程序得到22条数据)

    (查询所有商品的详细信息(通过内连接实现))

    3  外连接

    3.1  左外连接

    左外链接:显示左表的全部记录及右表符合连接条件的记录。

    (下例中,左表总共23条数据,但最后一条的cate_id并没有在右表中出现,但是因为是左外查询,所以运行程序后会有23条数据)

    (查询所有商品的详细信息(通过左外连接实现))

    3.2  右外连接

    右外连接:显示右表的全部记录及左表符合连接条件的记录。

    (下例中,右表总共10条数据,但最后三条的cate_id并没有在左表中出现,但是因为是右外查询,所以运行程序后会有25条数据,即左表符合右表的22条(也就是内查询的结果)+右表最后三条)

    (查询所有商品的详细信息(通过右外连接实现))

    3.3  连接说明

    1 A LEFT JOIN B join_condition
    • 数据表B的结果集依赖数据表A。
    • 数据表A的结果集根据左连接条件依赖所有数据表(B表除外)。
    • 左外连接条件决定如何检索数据表B(在没有指定WHERE条件的情况下)。
    • 如果数据表A的某条记录符合WHERE条件,但是在数据表B不存在符合连接条件的记录,将生成一个所有列为空的额外的B行。
    • 如果使用内连接查找的记录在连接数据表中不存在,并且在WHERE子句中尝试以下操作:col-namd IS NULL时,如果col_name被定义为NOT NULL,MySQL将在找到符合连执着条件的记录后停止搜索更多的行。

    4  无限极分类表设计

    (创建一张表)

    (插入数据)

    (0是顶级,后面的都是以数字相对应的type_id为父类的子类)

    【注】自身连接:同一个数据表对其自身进行连接。

    (自身连接,查找所有分类及其父类)

    (自身连接,查找所有分类及其子类)

    (查找所有分类及其子类的数目)

  • 相关阅读:
    仿造email后缀自动添加功能(1)
    仿造email后缀搜索功能(2)
    取出input内的空格
    小知识点
    关于闭包
    js清除浏览器缓存的几种方法
    动态生成模板(模板生成器)
    安卓端调用h5界面js方法和ios端调用h5界面js方法
    linux 命令
    如何做个好员工
  • 原文地址:https://www.cnblogs.com/qijunhui/p/8454357.html
Copyright © 2020-2023  润新知