• 多表操作-内连接查询


    • 目录

      多表查询分类

      多表查询数据准备

      查询原理

      查询语法

      相关概念

      实例操作


    • 多表查询分类

    • 内连接查询
    • 外连接查询
    • 子查询
    • 自关联查询
    • 多表查询数据准备

    • 总共创建5个表
    • 分别为用户表,订单表,商品分类表,商品表,中间表
      1. -- 创建user表
      2. CREATE TABLE user(
      3. id INT PRIMARY KEY auto_increment, -- 用户id
      4. name VARCHAR(20), -- 用户姓名
      5. age INT -- 用户年龄
      6. );
      7. -- 添加数据
      8. INSERT INTO user VALUES (1,'张三',23);
      9. INSERT INTO user VALUES (2,'李四',24);
      10. INSERT INTO user VALUES (3,'王五',25);
      11. INSERT INTO user VALUES (4,'赵六',26);
      12. -- 创建订单表
      13. CREATE TABLE orderlist(
      14. id INT PRIMARY KEY auto_increment, -- 订单id
      15. number VARCHAR(20), -- 订单编号
      16. uid INT, -- 外键字段
      17. CONSTRAINT ou FOREIGN KEY (uid) REFERENCES user(id)
      18. );
      19. -- 添加数据
      20. INSERT INTO orderlist VALUES (1,'hm001',1);
      21. INSERT INTO orderlist VALUES (2,'hm002',1);
      22. INSERT INTO orderlist VALUES (3,'hm003',2);
      23. INSERT INTO orderlist VALUES (4,'hm004',2);
      24. INSERT INTO orderlist VALUES (5,'hm005',3);
      25. INSERT INTO orderlist VALUES (6,'hm006',3);
      26. INSERT INTO orderlist VALUES (7,'hm007',NULL);
      27. -- 创建商品分类表
      28. CREATE TABLE category(
      29. id INT PRIMARY KEY auto_increment, -- 商品分类id
      30. NAME VARCHAR(20) -- 商品分类名称
      31. );
      32. -- 添加数据
      33. INSERT INTO category VALUES (1,'手机数码');
      34. INSERT INTO category VALUES (2,'电脑办公');
      35. INSERT INTO category VALUES (3,'烟酒茶糖');
      36. INSERT INTO category VALUES (4,'鞋靴箱包');
      37. -- 创建商品表
      38. CREATE TABLE product(
      39. id INT PRIMARY KEY auto_increment, -- 商品id
      40. NAME VARCHAR(20), -- 商品名称
      41. cid INT, -- 外键字段
      42. CONSTRAINT cp_1 FOREIGN KEY (cid) REFERENCES category(id)
      43. );
      44. -- 添加数据
      45. INSERT INTO product VALUES (1,'华为手机',1);
      46. INSERT INTO product VALUES (2,'小米手机',1);
      47. INSERT INTO product VALUES (3,'联想电脑',2);
      48. INSERT INTO product VALUES (4,'苹果电脑',2);
      49. INSERT INTO product VALUES (5,'中华香烟',3);
      50. INSERT INTO product VALUES (6,'玉溪香烟',3);
      51. INSERT INTO product VALUES (7,'计生用品',NULL);
      52. -- 创建中间表
      53. CREATE TABLE us_pro(
      54. upid INT PRIMARY KEY auto_increment, -- 中间表id
      55. uid INT, -- 外键字段,需要和用户表的主键产生关联
      56. pid INT, -- 外键字段,需要和商品表的主键产生关联
      57. CONSTRAINT up_1 FOREIGN KEY (uid) REFERENCES user(id),
      58. CONSTRAINT up_2 FOREIGN KEY (pid) REFERENCES product(id)
      59. );
      60. -- 添加数据
      61. INSERT INTO us_pro VALUES (NULL,1,1);
      62. INSERT INTO us_pro VALUES (NULL,1,2);
      63. INSERT INTO us_pro VALUES (NULL,1,3);
      64. INSERT INTO us_pro VALUES (NULL,1,4);
      65. INSERT INTO us_pro VALUES (NULL,1,5);
      66. INSERT INTO us_pro VALUES (NULL,1,6);
      67. INSERT INTO us_pro VALUES (NULL,1,7);
      68. INSERT INTO us_pro VALUES (NULL,2,1);
      69. INSERT INTO us_pro VALUES (NULL,2,2);
      70. INSERT INTO us_pro VALUES (NULL,2,3);
      71. INSERT INTO us_pro VALUES (NULL,2,4);
      72. INSERT INTO us_pro VALUES (NULL,2,5);
      73. INSERT INTO us_pro VALUES (NULL,2,6);
      74. INSERT INTO us_pro VALUES (NULL,2,7);
      75. INSERT INTO us_pro VALUES (NULL,3,1);
      76. INSERT INTO us_pro VALUES (NULL,3,2);
      77. INSERT INTO us_pro VALUES (NULL,3,3);
      78. INSERT INTO us_pro VALUES (NULL,3,4);
      79. INSERT INTO us_pro VALUES (NULL,3,5);
      80. INSERT INTO us_pro VALUES (NULL,3,6);
      81. INSERT INTO us_pro VALUES (NULL,3,7);
      82. INSERT INTO us_pro VALUES (NULL,4,1);
      83. INSERT INTO us_pro VALUES (NULL,4,2);
      84. INSERT INTO us_pro VALUES (NULL,4,3);
      85. INSERT INTO us_pro VALUES (NULL,4,4);
      86. INSERT INTO us_pro VALUES (NULL,4,5);
      87. INSERT INTO us_pro VALUES (NULL,4,6);
      88. INSERT INTO us_pro VALUES (NULL,4,7);
    • 查询原理

    • 内连接查询的是两张表有交集的部分数据(有主外键关联的数据)
    • 查询语法

    • 显式内连接
    • select 列名 from 表名1 [inner] join 表名2 on 条件
    • 隐式内连接
    • select 列名 from 表名1,表名2 where 条件
    • 相关概念

    • 自连接
    • 概念:是内连接查询中一种特殊的等值连接,所谓的自连接就是指表与其自己当前表进行连接
    • 最大特点:一张表看作两张表
    • 自己连接自己
    • 等值连接
    • 就是在关键字on后的匹配条件是通过=来实现的;
    • 等值连接通常是一个表连接另外一张表
    • 不等值连接
    • 在关键字on后匹配条件中使用除了=以外的关系运算符实现的不等条件(> >= < <= !=)
    • 实例操作

    • 显式内连接
    • 查询用户信息和对应的订单信息
    • 查询用户信息和对应的订单信息,起别名
    • 查询用户姓名,年龄和订单编号
      1. -- 显式内连接
      2. -- 查询用户信息和对应的订单信息
      3. SELECT * FROM user INNER JOIN orderlist ON orderlist.uid=user.id;
      4. -- 查询用户信息和对应的订单信息,起别名
      5. SELECT * FROM user u INNER JOIN orderlist o ON o.uid=u.id;
      6. -- 查询用户姓名,年龄和订单编号
      7. SELECT
      8. u.name, -- 用户姓名
      9. u.age, -- 用户年龄
      10. o.number -- 订单编号
      11. FROM
      12. user u -- 用户表
      13. INNER JOIN
      14. orderlist o -- 订单表
      15. ON
      16. o.uid=u.id;
    • 隐式内连接
    • 查询用户姓名,年龄和订单编号
      1. -- 隐式内连接
      2. -- 查询用户姓名,年龄和订单编号
      3. SELECT
      4. u.name, -- 用户姓名
      5. u.age, -- 用户年龄
      6. o.number -- 订单编号
      7. FROM
      8. user u, -- 用户表
      9. orderlist o -- 订单表
      10. WHERE
      11. o.uid=u.id;
  • 相关阅读:
    Linux应用程序崩溃了怎么定位?
    苏格拉底告诉我们什么是爱情和婚姻
    CommonAPI Core Runtime 交叉编译
    【JavaSE】内部类
    AWS-CDK的实践和应用
    常用电子元器件基础知识
    警钟:SBP持有的MogaFX外汇储备暴跌9.56亿美元,达到79.6亿美元
    学习笔记11月27日
    Linux网络:关于TCP / IP 五层协议栈的总结
    宇宙的尽头是编制?七成毕业生进体制,清北2021届学子就业报告出炉
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/125591180