当前位置:网站首页>多表操作-内连接查询
多表操作-内连接查询
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;
边栏推荐
- Technologie de base de la programmation Shell IV
- Wechat reading notes of "work, consumerism and the new poor"
- OpenCV的二值化处理函数threshold()详解
- 1008 elevator (20 points) (PAT class a)
- Functional interface
- kotlin 类和对象
- 1009 Product of Polynomials(25 分)(PAT甲级)
- kotlin 基本数据类型
- BCG 使用之CBCGPTabWnd控件(相当于MFC TabControl)
- English grammar_ Noun - use
猜你喜欢
PolyFit软件介绍
"Only one trip", active recommendation and exploration of community installation and maintenance tasks
Opencv functions and methods related to binary threshold processing are summarized for comparison and use
LM10丨余弦波动顺势网格策略
如何使用Async-Awati异步任務處理代替BackgroundWorker?
node_ Exporter deployment
Oracle with as ORA-00903: invalid table name 多表报错
FPGA时序约束分享01_四大步骤简述
Bi skills - permission axis
大div中有多个div,这些div在同一行显示,溢出后产生滚动条而不换行
随机推荐
1006 Sign In and Sign Out(25 分)(PAT甲级)
一文掌握数仓中auto analyze的使用
Shell 編程核心技術《四》
【问题】druid报异常sql injection violation, part alway true condition not allow 解决方案
Pytorch学习(四)
黑马程序员-软件测试--08阶段2-linux和数据库-23-30-进程端口相关,修改文件权限,端口号信息的获取,程序和进程相关操作,linux命令案例
黑马程序员-软件测试--07阶段2-linux和数据库-09-24-linux命令学习步骤,通配符,绝对路径,相对路径,文件和目录常用命令,文件内容相关操作,查看日志文件,ping命令使用,
关于判断点是否位于轮廓内的一点思考
黑马程序员-软件测试--09阶段2-linux和数据库-31-43修改文件权限字母发的说明,-查找链接修改文件,查找文件命令,链接文件,压缩解压方式,vi编辑器基本使用,
牛客小白月赛7 F题
The explain statement in MySQL queries whether SQL is indexed, and several types in extra collate and summarize
BCG 使用之CBCGPTabWnd控件(相当于MFC TabControl)
kotlin 类和对象
长城证券开户安全吗 买股票怎么开户
92. (cesium chapter) cesium building layering
English语法_名词 - 使用
1005 spell it right (20 points) (pat a)
Shell programming core technology II
Cbcgpprogressdlgctrl progress bar used by BCG
1009 Product of Polynomials(25 分)(PAT甲级)