mysql得emp表查询_【MySQL】:多表查询

导读

正文

查询的一些概念和操作进行学习。

二话不说,直接创建一个例子:

CREATE TABLE dept(

id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20)

);

INSERT INTO dept VALUES (NULL,'法师'),(NULL,'坦克'),'剑客'),'战士');

CREATE TABLE emp(

id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),dept_id INT

);

INSERT INTO emp VALUES (NULL,'佐伊',1),'扎克',2),'亚索',3),'盖伦',4)

一、笛卡尔积查询

-- 直接书写两张表的名称进行查询即可获取笛卡尔积查询的结果

SELECT * FROM dept,emp;-- 两张表数据相乘

-- 在笛卡尔积查询的结果中需要筛选出正确的数据(类似内连接查询)

SELECT * FROM dept,emp WHERE emp.dept_id = dept.id;

ce834720d3125f7647a4620b9345f8c2.png

二、内连接查询

-- 在笛卡尔积查询的结果之上,获取两边表都有的记录。

SELECT * FROM dept INNER JOIN emp

ON dept.id = emp.dept_id ;

6e8e1afadc12a3b3010929702273d9de.png

-- 选择指定内容显示

SELECT emp.NAME AS 英雄,dept.NAME AS 职业 FROM dept INNER JOIN emp

ON dept.id = emp.dept_id;

-- 给表起别名,所有的字段需要用别名获取

SELECT e.NAME AS 英雄,d.NAME AS 职业 FROM dept d INNER JOIN emp e

ON d.id = e.dept_id;

522fe4cc18fa61378db4994e5cdf6c81.png

三、外连接查询

左外连接

在内连接查询的基础上获取【左边表有而右边没有的数据】。

首先先添加一下这样的数据测试一下:

INSERT INTO dept VALUES (NULL,'射手');

-- 左外连接

SELECT * FROM dept LEFT JOIN emp

ON dept.id = emp.dept_id;

64755f0a7e67c10c508d20dc8beca216.png

右外连接

在内连接查询的基础上获取【左边表没有而右边有的数据】。

还是再添加一个测试数据:

INSERT INTO emp VALUES(NULL,'菲兹',6);

-- 右外连接

SELECT * FROM dept RIGHT JOIN emp

ON dept.id = emp.dept_id;

69fb4f7d6e96cb67054474f2e9838a9d.png

全外连接

在内连接查询的基础上获取【左边表没有而右边有的数据+左边表有而右边没有的数据】。

MysqL中没有全外连接的关键字 FULL JOIN,只能通过UNION实现全外连接的查询效果。

再UNION中,如果结果有相同的数据,则只会保留一份。

-- 全外连接

SELECT * FROM dept LEFT JOIN emp ON dept.id = emp.dept_id

UNION-- 全外连接关键字

SELECT * FROM dept RIGHT JOIN emp ON dept.id = emp.dept_id ;

8cfc8cb8483e0ecb2ad0bdab2b2d7d0d.png

相关

总结

以上是编程之家为你收集整理的【MySQL】:多表查询全部内容,希望文章能够帮你解决【MySQL】:多表查询所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部