当前位置:网站首页>多表操作-内连接查询
多表操作-内连接查询
2022-07-04 18:32:00 【汤键.TJ】
目录
多表查询分类
- 内连接查询
- 外连接查询
- 子查询
- 自关联查询
多表查询数据准备
- 总共创建5个表
- 分别为用户表,订单表,商品分类表,商品表,中间表




-- 创建user表 CREATE TABLE user( id INT PRIMARY KEY auto_increment, -- 用户id name VARCHAR(20), -- 用户姓名 age INT -- 用户年龄 ); -- 添加数据 INSERT INTO user VALUES (1,'张三',23); INSERT INTO user VALUES (2,'李四',24); INSERT INTO user VALUES (3,'王五',25); INSERT INTO user VALUES (4,'赵六',26); -- 创建订单表 CREATE TABLE orderlist( id INT PRIMARY KEY auto_increment, -- 订单id number VARCHAR(20), -- 订单编号 uid INT, -- 外键字段 CONSTRAINT ou FOREIGN KEY (uid) REFERENCES user(id) ); -- 添加数据 INSERT INTO orderlist VALUES (1,'hm001',1); INSERT INTO orderlist VALUES (2,'hm002',1); INSERT INTO orderlist VALUES (3,'hm003',2); INSERT INTO orderlist VALUES (4,'hm004',2); INSERT INTO orderlist VALUES (5,'hm005',3); INSERT INTO orderlist VALUES (6,'hm006',3); INSERT INTO orderlist VALUES (7,'hm007',NULL); -- 创建商品分类表 CREATE TABLE category( id INT PRIMARY KEY auto_increment, -- 商品分类id NAME VARCHAR(20) -- 商品分类名称 ); -- 添加数据 INSERT INTO category VALUES (1,'手机数码'); INSERT INTO category VALUES (2,'电脑办公'); INSERT INTO category VALUES (3,'烟酒茶糖'); INSERT INTO category VALUES (4,'鞋靴箱包'); -- 创建商品表 CREATE TABLE product( id INT PRIMARY KEY auto_increment, -- 商品id NAME VARCHAR(20), -- 商品名称 cid INT, -- 外键字段 CONSTRAINT cp_1 FOREIGN KEY (cid) REFERENCES category(id) ); -- 添加数据 INSERT INTO product VALUES (1,'华为手机',1); INSERT INTO product VALUES (2,'小米手机',1); INSERT INTO product VALUES (3,'联想电脑',2); INSERT INTO product VALUES (4,'苹果电脑',2); INSERT INTO product VALUES (5,'中华香烟',3); INSERT INTO product VALUES (6,'玉溪香烟',3); INSERT INTO product VALUES (7,'计生用品',NULL); -- 创建中间表 CREATE TABLE us_pro( upid INT PRIMARY KEY auto_increment, -- 中间表id uid INT, -- 外键字段,需要和用户表的主键产生关联 pid INT, -- 外键字段,需要和商品表的主键产生关联 CONSTRAINT up_1 FOREIGN KEY (uid) REFERENCES user(id), CONSTRAINT up_2 FOREIGN KEY (pid) REFERENCES product(id) ); -- 添加数据 INSERT INTO us_pro VALUES (NULL,1,1); INSERT INTO us_pro VALUES (NULL,1,2); INSERT INTO us_pro VALUES (NULL,1,3); INSERT INTO us_pro VALUES (NULL,1,4); INSERT INTO us_pro VALUES (NULL,1,5); INSERT INTO us_pro VALUES (NULL,1,6); INSERT INTO us_pro VALUES (NULL,1,7); INSERT INTO us_pro VALUES (NULL,2,1); INSERT INTO us_pro VALUES (NULL,2,2); INSERT INTO us_pro VALUES (NULL,2,3); INSERT INTO us_pro VALUES (NULL,2,4); INSERT INTO us_pro VALUES (NULL,2,5); INSERT INTO us_pro VALUES (NULL,2,6); INSERT INTO us_pro VALUES (NULL,2,7); INSERT INTO us_pro VALUES (NULL,3,1); INSERT INTO us_pro VALUES (NULL,3,2); INSERT INTO us_pro VALUES (NULL,3,3); INSERT INTO us_pro VALUES (NULL,3,4); INSERT INTO us_pro VALUES (NULL,3,5); INSERT INTO us_pro VALUES (NULL,3,6); INSERT INTO us_pro VALUES (NULL,3,7); INSERT INTO us_pro VALUES (NULL,4,1); INSERT INTO us_pro VALUES (NULL,4,2); INSERT INTO us_pro VALUES (NULL,4,3); INSERT INTO us_pro VALUES (NULL,4,4); INSERT INTO us_pro VALUES (NULL,4,5); INSERT INTO us_pro VALUES (NULL,4,6); INSERT INTO us_pro VALUES (NULL,4,7);查询原理
- 内连接查询的是两张表有交集的部分数据(有主外键关联的数据)
查询语法
- 显式内连接
- select 列名 from 表名1 [inner] join 表名2 on 条件
- 隐式内连接
- select 列名 from 表名1,表名2 where 条件
相关概念
- 自连接
- 概念:是内连接查询中一种特殊的等值连接,所谓的自连接就是指表与其自己当前表进行连接
- 最大特点:一张表看作两张表
- 自己连接自己
- 等值连接
- 就是在关键字on后的匹配条件是通过=来实现的;
- 等值连接通常是一个表连接另外一张表
- 不等值连接
- 在关键字on后匹配条件中使用除了=以外的关系运算符实现的不等条件(> >= < <= !=)
实例操作
- 显式内连接
- 查询用户信息和对应的订单信息
- 查询用户信息和对应的订单信息,起别名
- 查询用户姓名,年龄和订单编号

-- 显式内连接 -- 查询用户信息和对应的订单信息 SELECT * FROM user INNER JOIN orderlist ON orderlist.uid=user.id; -- 查询用户信息和对应的订单信息,起别名 SELECT * FROM user u INNER JOIN orderlist o ON o.uid=u.id; -- 查询用户姓名,年龄和订单编号 SELECT u.name, -- 用户姓名 u.age, -- 用户年龄 o.number -- 订单编号 FROM user u -- 用户表 INNER JOIN orderlist o -- 订单表 ON o.uid=u.id;- 隐式内连接
- 查询用户姓名,年龄和订单编号

-- 隐式内连接 -- 查询用户姓名,年龄和订单编号 SELECT u.name, -- 用户姓名 u.age, -- 用户年龄 o.number -- 订单编号 FROM user u, -- 用户表 orderlist o -- 订单表 WHERE o.uid=u.id;
边栏推荐
- 1005 spell it right (20 points) (pat a)
- Pointnet/Pointnet++点云数据集处理并训练
- The CDC of sqlserver can read the data for the first time, but it can't read the data after adding, deleting and modifying. What's the reason
- 长城证券开户安全吗 买股票怎么开户
- 用实际例子详细探究OpenCV的轮廓绘制函数drawContours()
- HDU 6440 2018 Chinese college student program design network competition
- 牛客小白月赛7 谁是神箭手
- Allure of pytest visual test report
- Stream流
- Shell 编程核心技术《一》
猜你喜欢

与二值化阈值处理相关的OpenCV函数、方法汇总,便于对比和拿来使用

勾股数规律(任意三个数能够满足勾股定理需要满足的条件)

FPGA timing constraint sharing 01_ Brief description of the four steps

English语法_名词 - 使用

Online text line fixed length fill tool

node_ Exporter deployment

There are multiple divs in the large div, which are displayed on the same line. After overflow, scroll bars are generated without line breaks

在线文本行固定长度填充工具

黑马程序员-软件测试--08阶段2-linux和数据库-23-30-进程端口相关,修改文件权限,端口号信息的获取,程序和进程相关操作,linux命令案例

Bi skills - permission axis
随机推荐
测试工程师如何“攻城”(上)
Mysql database basic operation -ddl | dark horse programmer
The 300th weekly match of leetcode (20220703)
Educational Codeforces Round 22 E. Army Creation
English grammar_ Noun - use
Find the nth power of 2
长城证券开户安全吗 买股票怎么开户
Shell 编程核心技术《四》
How test engineers "attack the city" (Part 2)
PointNeXt:通过改进的模型训练和缩放策略审视PointNet++
西门子HMI下载时提示缺少面板映像解决方案
SSRS筛选器的IN运算(即包含于)用法
函数式接口
Personal thoughts on Architecture Design (this article will be revised and updated continuously later)
English语法_名词 - 使用
socket编程demo二
In flinksql, in addition to data statistics, is the saved data itself a state
1002. A+b for Polynomials (25) (PAT class a)
kotlin 条件控制
Allure of pytest visual test report





