当前位置:网站首页>多表操作-内连接查询
多表操作-内连接查询
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;
边栏推荐
- 西门子HMI下载时提示缺少面板映像解决方案
- Online data migration scheme encountered in the project 1 - general idea sorting and technical sorting
- Pytest 可视化测试报告之 Allure
- 求2的n次方
- BCG 使用之CBCGPProgressDlgCtrl进度条使用
- “只跑一趟”,小区装维任务主动推荐探索
- 1006 sign in and sign out (25 points) (PAT class a)
- Find the nth power of 2
- YOLOv5s-ShuffleNetV2
- In flinksql, in addition to data statistics, is the saved data itself a state
猜你喜欢
OpenCV的二值化处理函数threshold()详解
Comment utiliser async awati asynchrone Task Handling au lieu de backgroundworker?
如何使用Async-Awati异步任務處理代替BackgroundWorker?
abc229 总结(区间最长连续字符 图的联通分量计数)
Bi skills - permission axis
PolyFit软件介绍
MySQL数据库基本操作-DDL | 黑马程序员
用实际例子详细探究OpenCV的轮廓绘制函数drawContours()
There are multiple divs in the large div, which are displayed on the same line. After overflow, scroll bars are generated without line breaks
Stream流
随机推荐
“只跑一趟”,小区装维任务主动推荐探索
Detailed explanation of the binary processing function threshold() of opencv
1005 Spell It Right(20 分)(PAT甲级)
勾股数规律(任意三个数能够满足勾股定理需要满足的条件)
页面元素垂直水平居中、实现已知或者未知宽度的垂直水平居中。
如何使用Async-Awati异步任务处理代替BackgroundWorker?
【问题】druid报异常sql injection violation, part alway true condition not allow 解决方案
Educational Codeforces Round 22 E. Army Creation
《工作、消费主义和新穷人》的微信读书笔记
Pointnet/Pointnet++点云数据集处理并训练
Some thoughts on whether the judgment point is located in the contour
Generate XML elements
Shell programming core technology "I"
ftp、sftp文件传输
BCG 使用之CBCGPProgressDlgCtrl進度條使用
English语法_名词 - 使用
1002. A+B for Polynomials (25)(PAT甲级)
有关架构设计的个人思考(本文后续不断修改更新)
测试工程师如何“攻城”(上)
1007 maximum subsequence sum (25 points) (PAT class a)