MySQL学习笔记(十二)__连接查询(一)
连接查询
含义:
又称多表查询,当查询的字段来自多个表时,就会用到连接查询
笛卡尔乘积现象:表1 有 m 行,表2 有 n 行,结果 = m*n 行
发生原因:没有有效的连接条件
如何避免:添加有效的连接条件
分类:
按年代分类:
sql192 标准:仅支持内连接
sql199 标准;支持内连接+外连接(左外、右外)+交叉连接
按功能分类:
内连接:
等值连接
非等值连接
自连接
外连接:
左外连接
右外连接
全外连接
交叉连接
一、sql192 标准
内连接
1、等值连接
a.多表等值连接的结果为多表的交集部分
b.n表连接,至少需要n-1个连接条件
c.多表的顺序没有要求
d.一般需要为表取别名
e.可以搭配前面所有的子句使用,比如排序、分组、筛选
1
2
3
4
5
e.g.:查询员工名和对应的部门名
SELECT
last_name,
department_name
FROM
employees,
departments
WHERE
employees.department_id = departments.department_id;
1
2
3
4
5
6
7
8
2、为表起别名
a.提高语句的简洁度
b.区分多个重名的字段
注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限定
1
2
3
e.g.:查询员工名、工种号、工种名
SELECT
last_name,
e.job_id,
j.job_title
FROM
employees AS e,
jobs AS j
WHERE
e.job_id = j.job_id;
1
2
3
4
5
6
7
8
9
3、两个表的顺序可以调换
e.g.:查询员工名、工种号、工种名
SELECT
last_name,
e.job_id,
j.job_title
FROM
jobs AS j,
employees AS e
WHERE
e.job_id = j.job_id;
1
2
3
4
5
6
7
8
9
4、可以加筛选
e.g.:查询有奖金的员工名、部门名
SELECT
last_name,
department_name,
commission_pct
FROM
employees AS e,
departments AS d
WHERE
e.department_id = d.department_id
AND commission_pct IS NOT NULL;
1
2
3
4
5
6
7
8
9
10
e.g.:查询城市名中第二个字符为o的部门名和城市名
SELECT
city,
department_name
FROM
locations l,
departments d
WHERE
l.location_id = d.location_id
AND city LIKE '_o%’;
1
2
3
4
5
6
7
8
9
5、可以加分组
e.g.:查询每个城市的部门个数
SELECT
COUNT( * ) 个数,
city
FROM
departments d,
locations l
WHERE
d.location_id = l.location_id
GROUP BY
city;
1
2
3
4
5
6
7
8
9
10
e.g.:查询有奖金的每个部门名和部门的领导编号和该部门的最低工资
SELECT
department_name,
d.manager_id,
MIN( salary )
FROM
departments d,
employees e
WHERE
d.department_id = e.department_id
AND commission_pct IS NOT NULL
GROUP BY
department_name,
manager_id;
1
2
3
4
5
6
7
8
9
10
11
12
13
6、可以加排序
e.g.:查询每个工种的工种名和员工个数,并按员工个数降序
SELECT
job_title,
COUNT( * )
FROM
jobs j,
employees e
WHERE
e.job_id = j.job_id
GROUP BY
job_title
ORDER BY
COUNT( * ) DESC;
1
2
3
4
5
6
7
8
9
10
11
12
7、三表连接
e.g.:查询员工名、部门名、所在城市
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;
1
2
3
4
5
6
7
8
9
10
11
非等值连接
与等值连接类似
自连接
e.g.:查询员工名与上级名字
SELECT
e.employee_id 员工编号,
e.last_name 员工名,
m.employee_id 上级编号,
m.last_name 上级名
FROM
employees e,
employees m
WHERE
e.manager_id = m.employee_id;
---------------------
MySQL学习笔记(十二)__连接查询(一)的更多相关文章
- MySQL学习笔记十二:数据备份与恢复
数据备份 1.物理备份与逻辑备份 物理备份 物理备份就是将数据库的数据文件,配置文件,日志文件等复制一份到其他路径上,这种备份速度一般较快,因为只有I/O操作.进行物理备份时,一般都需要关闭mysql ...
- Mysql学习笔记(二)数据类型 补充
原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- Go语言学习笔记十二: 范围(Range)
Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...
- MySQL学习笔记十五:优化(2)
一.数据库性能评测关键指标 1.IOPS:每秒处理的IO请求次数,这跟磁盘硬件相关,DBA不能左右,但推荐使用SSD. 2.QPS:每秒查询次数,可以使用show status或mysqladmin ...
- java jvm学习笔记十二(访问控制器的栈校验机制)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 本节源码:http://download.csdn.net/detail/yfqnihao/4863854 这一节,我们 ...
- MySQL学习(四) SQL连接查询
更多情况下,我们查询的数据来源于多张表,所有有必要了解一下MySQL中的连接查询. SQL中将连接查询分成四类:交叉连接,内连接,外连接和自然连接. 数据准备 student表 -- -------- ...
- MySQL学习笔记(二)
二.SQL基本知识 SQL 是一种典型的非过程化程序设计语言,这种语言的特点是:只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这些操作是如何执行的,则未被指定.非过程化程序设计语言的优点在于 ...
- (C/C++学习笔记) 十二. 指针
十二. 指针 ● 基本概念 位系统下为4字节(8位十六进制数),在64位系统下为8字节(16位十六进制数) 进制表示的, 内存地址不占用内存空间 指针本身是一种数据类型, 它可以指向int, char ...
随机推荐
- hdu4057 Rescue the Rabbit(AC自己主动机+DP)
Rescue the Rabbit Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
IT咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
- HDU 1269 迷宫城堡 最大强连通图题解
寻找一个迷宫是否是仅仅有一个最大强连通图. 使用Tarjan算法去求解,经典算法.必需要学习好,要自己创造出来是十分困难的了. 參考资料:https://www.byvoid.com/blog/scc ...
- Mac OS X 10.10下Versions crash的问题
升级完系统.Versions由于兼容性到问题,各种闪退,网上搜索了一下.知乎到一个帖子提到了暂时解决的方法,例如以下: Blackpixel 正在研究此崩溃的修复方案.暂时解决方式例如以下: 在文本编 ...
- C#下JSON字符串的反序列化
C#下JSON字符串的反序列化,一般都是用newtonsoft.json,比较方便..net当然也有提供相应功能,但觉得比较复杂. 所谓反序列化,就是将一个包含JSON内容的字符串,转换回指定对象(不 ...
- iOS开发——优化篇—— 25个性能优化/内存优化常用方法
1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露.它自动为你 ...
- luogu2827 蚯蚓
题目大意 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」= [3.9」=3. 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓 ...
- 加载jQuery库
使用google <head> <script type="text/javascript" src="http://ajax.googleapis.c ...
- Eclipse中直接执行sql语句(图文说明)
转自:https://blog.csdn.net/changjyzzu/article/details/45487847 1.首先新建sql文件,然后打开文件 22.右键点击空白处,点击set-con ...
- E20170612-sl
tampon n. 卫生棉塞; 止血棉塞; sanitary n. 公共厕所; adj. 卫生的; 清洁的; belonging n. 附属品,附件,属性; ...