MySQL多表查询
2022/3/18 19:28:08
本文主要是介绍MySQL多表查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
**MySQL多表查询(笛卡尔集)**
- 说明
- 问题导入
- 命令行实现
- 补充
说明:本人只是分享一下学过的多表查询的基础东西,不喜勿喷,也欢迎大家在评论区讨论指教我。
1.大家都知道电商平台的商品下边都有评论,商品存放在商品表,那评论存放在哪呢,首先排除商品表,那自然就存放在评论表,这就出现了多表查询。
2.多表查询是指基于两个或两个以上的表查询,这里我给大家三张表的实例做演示,分别是emp(员工表) deptno(部门表)salgrade(薪资级别表)
3.查询emp表
SELECT * FROM emp
可以看到emp表中共有13条记录和8个字段,用同样的方式查看一下dept表和salgrade表
SELECT * FROM salgrade SELECT * FROM dept
4.现在我们试着一起查询查询emp和dept表
SELECT * FROM emp,dept
我们发现记录变成了52行,字段变成了13个而且显示在一张表里面了,这是怎么回事呢,我们仔细观察,发现emp表中的每一条员工记录(每一行)都和dept表中所有行都拼接了一次 即13*4=52,结果正好是52条记录,由此我们引出概念 取第一张表的每一行记录和第二张表所有的记录拼接,返回的结果就含有两张表的所有字段
5.那我们试着做一道题:显示雇员名 ,雇员工资以及所在部门的部门名称
分析一下,雇员名字段和雇员工资字段分别是ename,sal ,都在emp表中,但是部门名字段dname在dept表中,不在同一表中,这时候我们该怎么办呢,我的答案是找相同的地方,发现都有deptno这个字段
SELECT ename,sal,dname FROM emp,dept WHERE emp.`deptno` =dept.`deptno`
命令的前半段很好理解,要我们找什么字段,我们都写出来就行,但where条件是什么意思呢,这就是找相同的地方了,再用表名.出来就可以了。结果如下:
6.那我们想要把deptno字段显示出来该怎么办呢
思考一下这样写可以吗
SELECT ename,sal,dname,deptno FROM emp,dept WHERE emp.`deptno` =dept.`deptno`
我们发现报错了
Column ‘deptno’ in field list is ambiguous 它说字段列表中的“deptno”列不明确,这什么意思啊,是不是说系统不知道我们要显示哪个表中的deptno啊,那我们加上限制条件呢
SELECT ename,sal,dname,emp.`deptno` FROM emp,dept WHERE emp.`deptno` =dept.`deptno`
我们发现这样就可以了
7.简单了解后我们再做几道题
如何显示部门号是10的部门名,员工名,工资
分析一下 :这道题加了个条件,明确部门号是10,该怎么写呢 很简单我们也加个条件不就好咯
SELECT dname,ename,sal FROM emp,dept WHERE dept.`deptno`=emp.`deptno` AND emp.`deptno`=10
8.若两张表没有相同的部分该怎么办呢,比如下面一题
显示每个员工的姓名,工资,及其工资的级别
emp表和salgrade表没有重复的字段啊,但是salgrade表是不是对emp中sal子段操作的一张表啊,那这道题就很简单了
SELECT ename ,sal ,grade FROM emp,salgrade WHERE sal BETWEEN losal AND hisal
9.再补充一题让大家多多体会多表查询
显示雇员名,雇员工资以及所在部门的名字,并按部门排降序
命令如下
SELECT ename,sal,dname,emp.`deptno` FROM emp,dept WHERE emp.`deptno`=dept.`deptno` ORDER BY emp.`deptno` DESC
补充 :我在b站韩顺平老师那学的。
这篇关于MySQL多表查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南