MySQL中的连接查询(等值连接)
作者:jingxian 发布时间:2024-01-18 05:37:52
标签:MySQL,连接查询,等值连接
1. 笛卡尔乘积
表1有m行数据,表2有n行数据,查询结果有m*n行数据。
2. 分类
(1)按年代分类
sql92标准:仅支持内连接
sql99标准(推荐):支持内连接、外连接(左外连接和右外连接)、交叉连接
(2)按功能分类
内连接:等值连接、非等值连接、自连接
外连接:左外连接、右外连接、全外连接
交叉连接
3. 等值连接
(1)查询女生名及其对应的男朋友名
SELECT
girlname,
boyname
FROM
boys,
girls
WHERE
girls.boyfriend_id=boys.girlfriend_id;
(2)查询员工名(last_name)和对应的部门名(department_name)-------------(根据关联的id查询)
SELECT
last_name,
department_name
FROM
JDSC,
SNSC
WHERE
JDSC.`id`=SNSC.`id`;
(3)查询员工名(last_name)、工种号(job_id)、工种名(job_title) (员工表:JDSC 工作表:JOBSC)------为表起别名,提升简洁度,避免歧义
#"e.job_id"是为了避免歧义
SELECT
last_name,
e.job_id,
job_title
FROM
ESC e,
JOBSC j
WHERE
e.`job_id`=j.`job_id`;
注意:
如果为表起了别名,则查询的字段不能使用原来的表名去限定。
上述两个表的顺序可互换
(4)查询有奖金的员工名、部门名
#员工名:last_name
#部门名:department_name
#奖金率:commissiom_pct
SELECT
last_name,
department_name,
commissiom_pct
FROM
employees e,
department d
WHERE
e.`department_id`=d.`department_id`
AND
e.`commissiom_pct` IS NOT NULL;
(5)分组查询——查询每个城市的部门个数
#城市分组表名:city
#部门分组表名:departments
SELECT
COUNT(*) 个数,
city
FROM
departments d,
locations l
WHERE
d.`location_id`=l.`location_id`
GROUP BY
city;
(6)排序——查询每个工种的工种名和员工个数,并按员工个数降序
SELECT
job_title,
COUNT(*)
FROM
emloyees e,
jobs j
WHERE
e.`job_id`=j.`job_id`
GROUP BY
job_title
ORDER BY
COUNT(*) DESC;
(7)三表连接——查询员工名、部门名和所在的城市
SELECT
last_name,
department_name,
city
FROM
employees e,
departments d,
locations l
WHERE
e.`department_id`=d.`department_id`
AND
d.`location_id`=l.`location_id`
AND
city LIKE 's%';
4. 总结
1)多表等值连接的结果为多表的交集部分
2)m表连接,至少需要n-1个连接条件
3)多表的顺序没有要求
4)一般需要为表起别名
5)可以搭配所有子句使用,例如排序、分组、筛选
来源:https://blog.csdn.net/www_dong/article/details/120228561


猜你喜欢
- MySQL、Sphinx及许多数据库和搜索引擎中的查询是单线程的。比如说,在一台32个CPU核心、16个磁盘的R910服务器上执
- 问题背景我创建了一个函数,里面包含了一个获取当前执行文件路径的代码current_path = os.path.dirname(os.pat
- 本文实例讲述了Python高级编程之消息队列(Queue)与进程池(Pool)。分享给大家供大家参考,具体如下:Queue消息队列1.创建i
- 众所周知,由于 GIL 的存在,Python 单进程中的所有操作都是在一个CPU核上进行的,所以为了提高运行速度,我们一般会采用多进程的方式
- 相信许多小伙伴都玩过数字 * 游戏,就是指在一定数字范围(一般是整数,不包含边界)里,一个玩家选中一个数字当作 * ,其余玩家在这个范围猜数字,
- 在MySQL服务器启动时,它检查其命令行的操作,来查看它是否应该执行登录并打开相应的日志文件(如果应该的话)。可以让服务器生成两种主要类型的
- 使用python进行程序编写时,经常会使用第三方模块包。这种包我们可以通过python setup install 进行安装后,通过impo
- python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”我遇到的问题:电脑上已经有
- 记录了mysql 8.0.21 的安装配置方法,分享给大家。一、下载1、下载安装包mysql下载路径直接点击链接也可以下载:mysql 8.
- 一、背景故事圣诞节风波马上不就到圣诞节了嘛,我看到朋友圈里很多小伙伴再纷纷炫耀自己收到的专属圣诞树,也有小伙伴私信我,说还没有自己的圣诞树!
- SQL Server常见的问题主要是SQL问题造成,常见的主要是CPU过高和阻塞。一、CPU过高的问题1、查询系统动态视图查询执行时间长的s
- 导航设计是结构层面设计中的主要工作之一,在软件中,导航设计的好坏,直接关系到用户使用是否能够流畅。面对较复杂的导航,我们第一反应是将其简化。
- 操作步骤进入命令行环境。我使用的是conda。有两种方式进入命令行。方法1:通过anconda navigator界面,选择environm
- 本文实例为大家分享了python数据写入excel表格的具体代码,供大家参考,具体内容如下安装: xlsxwriter第三方库code:#!
- 在使用matplotlib绘制图片时,x轴的刻度可能比较密集,特别是以日期作为x轴时,则最后会显示不出来。数据如下,速度V的数组与时间字符串
- 什么是设计模式设计模式是针对软件开发中出现的常见问题的可重用解决方案。它们并不特定于任何编程语言或框架,而是描述了可应用于各种情况的一般原则
- 1、概述在前面的文章中,我有分享了vue+drf+第三方滑动验证码接入的实现 (文中也留了分享图片验证码功能的实现),即本文将要分享的是基于
- // 方法1 对象直接量var obj1 = { v1 : "", get_v1 : function() { &nbs
- 本文实例分析了Flask和Django框架中自定义模型类的表名、父类相关问题。分享给大家供大家参考,具体如下:一. Flask和Django
- 前言在做项目的时候一些配置文件都会写在settings配置文件中,今天在研究"州的先生"开源文档写作系统-MrDoc的时