MySQL_2_查询基础(SELECT)

分组查询(GROUP BY)

语法:
GROUP BY 分组条件
描述:
就像在分类一样。
举个例子,比如你现在有一些水果,里面有香蕉,有苹果,有橘子等等,我现在要把每个水果的数量搞错了,那这个GROUP BY 就像给你分好框,自己去数数量就好了。那这个SQL语句要怎么写呢。

SELECT 水果名称,水果数量
FROM 水果表
GROUP BY 水果名称

分组后查询(HAVING)

特点:

分组查询

分组函数条件肯定是放在having子句中
能用分组前筛选的尽量在分组前筛
WHERE和HAVING的区别
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

连接查询(JOIN ON)

99语法:
SELECT 要查询的内容
FROM 表名1
JOIN 表名2
ON 连接条件 表1.主键 = 表2.外键

连接类型:
连接类型
内连接 inner 重点
外连接 outer
左外 left outer 重点
右外 right outer 重点
左外连接:left join 左边的是主表
右外连接:right join 右边的是主表
全外 full outer
交叉连接 cross

主表和副表的区别

案列1: 查询部门平均工资大于7000的部门名称

# 查询部门平均工资大于7000的部门名称
SELECT d.`department_name`
FROM `departments`d LEFT JOIN `employees`e
ON d.`department_id` = e.`department_id`
GROUP BY d.`department_id`
HAVING AVG(salary) > 7000;

案例2: 查询部门id大于50的部门分布在那个城市

# 查询部门id大于50的部门分布在那个城市
SELECT l.`city` ,d.`department_name`
FROM `locations`l LEFT JOIN `departments`d
ON l.`location_id` = d.`location_id`
WHERE `department_id` > 50;

连接

查询会出现笛卡尔乘积的情况
笛卡尔乘积
表1表2 = 表1的行数表2的行数
出现原因:没有有效的连接条件
如果查询的字段来自不同的表,要用连接条件

子查询(难)

为什么要用子查询?
假如我要查询公司工资最少的员工名、工种编号和工资。要怎么写?

#先查询工资最低是什么
SELECT MIN(salary)
FROM employees;
# 然后把工资记起来2100
SELECT `first_name`,`job_id`,`salary`
FROM employees
WHERE salary = 2100;

我们这样写语法就很麻烦,于是就要用子查询
子查询怎么写呢?

#  把两个查询语句连接起来就好了。
SELECT `first_name`,`job_id`,`salary`
FROM employees
WHERE salary = (
SELECT MIN(salary)
FROM employees
);

子查询基本语法写法:
SELECT 需要查的东西
FROM 表1 JOIN 表2
ON 连接条件
WHERE 筛选条件 = (
SELECT 需要查的东西
FROM 表1 JOIN 表2
ON 连接条件
WHERE 筛选条件 =(
。。。


GROUP BY 分组条件
HAVING (
SELECT 需要查的东西
FROM 表1 JOIN 表2
ON 连接条件
WHERE 筛选条件 =(
。。。


ORDER BY 排序依据
LIMIT 分页查询

我觉得叫嵌套查询比较合适。
一个查询里面嵌套一个查询,一直套娃。

案例1:查询平均工资最低的部门信息和该部门的平均工资
#查询平均工资最低的部门信息和该部门的平均工资
SELECT *,AVG(salary)
FROM `departments`d LEFT JOIN `employees`e
ON d.`department_id` = e.`department_id`
WHERE e.`department_id` = (
SELECT department_id
FROM employees
GROUP BY department_id
HAVING AVG(salary) =(
SELECT AVG(salary)
FROM employees
GROUP BY department_id
ORDER BY AVG(salary)
LIMIT 1
)
);

可能会看不懂
我们把这个例题分成三步来写
1、先查询最低平均工资

SELECT AVG(salary)
FROM employees
GROUP BY department_id
ORDER BY AVG(salary)
LIMIT 1

2、查询最低平均工资的部门ID

SELECT department_id
FROM employees
GROUP BY department_id
HAVING AVG(salary) =(
SELECT AVG(salary)
FROM employees
GROUP BY department_id
ORDER BY AVG(salary)
LIMIT 1
)

3、查询平均工资最低的部门信息和该部门的平均工资

SELECT *,AVG(salary)
FROM `departments`d LEFT JOIN `employees`e
ON d.`department_id` = e.`department_id`
WHERE e.`department_id` = (
SELECT department_id
FROM employees
GROUP BY department_id
HAVING AVG(salary) =(
SELECT AVG(salary)
FROM employees
GROUP BY department_id
ORDER BY AVG(salary)
LIMIT 1
)
);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容