当前位置:网站首页>多表操作-内连接查询
多表操作-内连接查询
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;
边栏推荐
- Comment utiliser async awati asynchrone Task Handling au lieu de backgroundworker?
- 牛客小白月赛7 F题
- 线上数据库迁移的几种方法
- Oracle with as ORA-00903: invalid table name 多表报错
- Hough Transform 霍夫变换原理
- 在线文本行固定长度填充工具
- Personal thoughts on Architecture Design (this article will be revised and updated continuously later)
- FPGA时序约束分享01_四大步骤简述
- Some thoughts on whether the judgment point is located in the contour
- Online sql to excel (xls/xlsx) tool
猜你喜欢
Stream stream
Pointnet/Pointnet++点云数据集处理并训练
Master the use of auto analyze in data warehouse
黑马程序员-软件测试--09阶段2-linux和数据库-31-43修改文件权限字母发的说明,-查找链接修改文件,查找文件命令,链接文件,压缩解压方式,vi编辑器基本使用,
PointNeXt:通过改进的模型训练和缩放策略审视PointNet++
黑马程序员-软件测试--08阶段2-linux和数据库-23-30-进程端口相关,修改文件权限,端口号信息的获取,程序和进程相关操作,linux命令案例
TCP两次挥手,你见过吗?那四次握手呢?
西门子HMI下载时提示缺少面板映像解决方案
FPGA timing constraint sharing 01_ Brief description of the four steps
一文掌握数仓中auto analyze的使用
随机推荐
The page element is vertically and horizontally centered, realizing the vertical and horizontal centering of known or unknown width.
生成XML元素
1002. A+B for Polynomials (25)(PAT甲级)
kotlin 基本使用
Online data migration scheme encountered in the project 1 - general idea sorting and technical sorting
Niuke Xiaobai monthly race 7 I new Microsoft Office Word document
BCG 使用之CBCGPProgressDlgCtrl進度條使用
Shell 编程核心技术《四》
To sort out messy header files, I use include what you use
Shell 编程核心技术《一》
Shell programming core technology "three"
HMM隐马尔可夫模型最详细讲解与代码实现
欧拉函数
There are multiple divs in the large div, which are displayed on the same line. After overflow, scroll bars are generated without line breaks
92.(cesium篇)cesium楼栋分层
Pytorch学习(四)
Add namespace declaration
如何使用Async-Awati异步任务处理代替BackgroundWorker?
1011 World Cup Betting (20 分)(PAT甲级)
BCG 使用之CBCGPProgressDlgCtrl进度条使用