数据库多表二

简介: 数据库多表操作

多表查询

CREATE TABLE DEPT(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
);
INSERT INTO dept (NAME) VALUES(‘开发部’),(‘市场部’),(‘财务部’);
CREATE TABLE empp(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
gender CHAR(1),
salary DOUBLE,
join_date DATE,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES dept(id)
);
INSERT INTO empp(NAME,gender,salary,join_date,dept_id) VALUES(‘孙悟空’,‘男’,7200,‘2013-02-24’,1);
INSERT INTO empp(NAME,gender,salary,join_date,dept_id) VALUES(‘猪八戒’,‘男’,3600,‘2010-12-02’,2);
INSERT INTO empp(NAME,gender,salary,join_date,dept_id) VALUES(‘唐僧’,‘男’,9000,‘2008-08-08’,2);
INSERT INTO empp(NAME,gender,salary,join_date,dept_id) VALUES(‘白骨精’,‘女’,5000,‘2015-10-07’,3);
INSERT INTO empp(NAME,gender,salary,join_date,dept_id) VALUES(‘蜘蛛精’,‘女’,4500,‘2011-03-14’,1);

多表代码 SELECT * FROM empp, dept; 查询多表代码 会出以下结果,多表查询就是除去多余的结果

1 孙悟空 男 7200 2013-02-24 1 1 开发部

1 孙悟空 男 7200 2013-02-24 1 2 市场部

1 孙悟空 男 7200 2013-02-24 1 3 财务部

2 猪八戒 男 3600 2010-12-02 2 1 开发部

2 猪八戒 男 3600 2010-12-02 2 2 市场部

2 猪八戒 男 3600 2010-12-02 2 3 财务部

3 唐僧 男 9000 2008-08-08 2 1 开发部

3 唐僧 男 9000 2008-08-08 2 2 市场部

3 唐僧 男 9000 2008-08-08 2 3 财务部

4 白骨精 女 5000 2015-10-07 3 1 开发部

4 白骨精 女 5000 2015-10-07 3 2 市场部

4 白骨精 女 5000 2015-10-07 3 3 财务部

5 蜘蛛精 女 4500 2011-03-14 1 1 开发部

5 蜘蛛精 女 4500 2011-03-14 1 2 市场部

5 蜘蛛精 女 4500 2011-03-14 1 3 财务部

笛卡尔积:有两个集合A B 去这两个集合所有的组合情况

要完成多表查询需要消除无用的数据

多表查询分类

内连接查询

隐式内连接:

使用where条件 SELECT * FROM empp, dept WHERE empp.dept_id = dept.id;
SELECT empp.NAME,empp.gender,dept.NAME FROM empp, dept WHERE empp.dept_id = dept.id;
SELECT
t1.NAME,t1.gender,t2.NAME 把需要查询的定义成 t1 t2
FROM
empp t1,dept t2
WHERE
t1.dept_id = t2.id;

显式内连接:

语法:

SELECT 字段列表 FROM 表1 INNER JOIN 表2 ON 条件;
SELECT * FROM empp INNER JOIN dept ON empp.dept_id = dept.id;

外连接查询

左外连接:SELECT 字段列表 FROM 表1 LEFT OUTER JOIN 表2 ON 条件

查询的是左表所有数据以及交集部分

右外连接:SELECT 字段列表 FROM 表1 RIGHT OUTER JOIN 表2 ON 条件

查询的是右表所有数据以及交集部分

子查询

嵌套查询就是子查询

SELECT * FROM 表名 WHERE 表名.列名 = (其他查询语句);


相关文章
|
关系型数据库 MySQL 数据库
数据库的多表操作
数据库的多表操作
76 0
|
SQL 存储 分布式计算
【数据库评测】多表联合join零耗时——翰云数据库在国产龙芯硬件上的表现
【数据库评测】多表联合join零耗时——翰云数据库在国产龙芯硬件上的表现
107 0
|
数据库
FastAPI 学习之路(三十四)数据库多表操作
FastAPI 学习之路(三十四)数据库多表操作
FastAPI 学习之路(三十四)数据库多表操作
|
存储 数据库
【数据库评测】揭秘 Cloudwave 4.0 版本多表联合join零耗时(二)
【数据库评测】揭秘 Cloudwave 4.0 版本多表联合join零耗时(二)
95 0
|
SQL 算法 Cloud Native
【数据库评测】揭秘 Cloudwave 4.0 版本多表联合join零耗时
【数据库评测】揭秘 Cloudwave 4.0 版本多表联合join零耗时
149 0
|
SQL 关系型数据库 MySQL
数据库-MySQL基础(9)-多表关系
目录 概述 1、一对多 2、多对多 3、一对一 多表查询概述 多表查询分类 1、连接查询 2、子查询
201 0
数据库-MySQL基础(9)-多表关系