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 ...
随机推荐
- django 名词解释
1) 什么是slug http://stackoverflow.com/questions/427102/what-is-a-slug-in-django 如上链接红色部分就是slug,它就是链接的最 ...
- 【Linux多线程】三个经典同步问题
在了解了<同步与互斥的区别>之后,我们来看看几个经典的线程同步的例子.相信通过具体场景可以让我们学会分析和解决这类线程同步的问题,以便以后应用在实际的项目中. 一.生产者-消费者问题 问题 ...
- C++求解数组中出现超1/4的三个数字。
#include <iostream> using namespace std; //求x!中k因数的个数. int Grial(int x,int k) { int Ret = 0; w ...
- ios打地鼠游戏源代码
打地鼠游戏源代码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源代码,这也是一款高质量的打地鼠游戏源代码,能够拥有逐步上升的关卡的设置,大家能够在关卡时设置一些商业化的模式来盈利的,很完美的 ...
- Python 不同对象比較大小
万恶的源泉: Fireboo的疑问(当然 lambda 本身写的就有问题): >>> filter( lambda x: x > 2, [ 1, [ 1, 2, 3 ], 2, ...
- Wordpress3.9开启多网站配置配置nginx进行局域网測试.
由于须要帮staff迁移一些数据, 所以想到了使用wordpress的多网站. 这个功能在wordpress3.0后就有了. 软件系统等信息: OS: linux debian wheezy php ...
- Wicket实战(一)概述
今天给大家介绍一个很好的东西.一个被称作Java平台上的ASP.NET--Wicket. 什么是Wicket 什么是Wicket,假设你用谷歌或其它搜索引擎搜索一番之后,就会发现wicket是Java ...
- Open Source Computer Vision Library
https://opencv.org/ OpenCV (Open Source Computer Vision Library) is released under a BSD license and ...
- bzoj4237 稻草人——分治
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4237 分治: 先把所有点按 y 排序,然后二分递归: 对于每个 mid ,计算经过它的矩形的 ...
- bzoj4825
LCT 昨天调试一天没出来,今天推倒重写还是gg了,内心崩溃照着源代码抄,结果发现自己把原树fa和splay的fa一起维护,各种re... 其实我们手玩一下,发现其实树的形态变化很小,那么就可以用lc ...