MySQL深入浅出(三)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL深入浅出(三)
SELECT last_name 
 FROM employees
 WHERE last_name LIKE '_o%';

1670058918455.jpg

NULL


使用 IS (NOT) NULL 判断空值

SELECT last_name , manager_id
 FROM employees
 WHERE manager id IS NULL;

1670058937190.jpg

逻辑运算


1670058949499.jpg

AND


AND要求并的关系为真

SELECT employee_id , last_name , job_id , salary
 FROM employees
 WHERE salary >= 10000
 AND job_id LIKE '%MAN%'

1670058964232.jpg

OR


OR要求或关系为真

SELECT employee_id , last_name , job_id , salary
 FROM employees
 WHERE salary >= 10000
 OR job_id LIKE '%MAN%'

1670058980336.jpg

NOT


SELECT last_name , job_id 
 FROM employees
 WHERE job_id 
 NOT IN(
 'IT_PROG','ST_CLERK','SA_REP'
 )

1670059003617.jpg

ORDER BY子句


使用ORDER BY子句排序

(1)ASC:升序

(2)DESC:降序

ORDER BY子句在SELECT语句的结尾

SELECT last_name , job_id , department_id , hire_date
 FROM employees
 ORDER BY hire_date;

1670059024418.jpg

降序排序


SELECT last_name , job_id , department_id , hire_date
 FROM employees
 ORDER BY hire_date DESC;

1670059039996.jpg

按别名排序


SELECT employee_id , last_name , salary * 12 annsal 
 FROM employees
 ORDER BY annsal;

1670059054333.jpg

多个列排序


按照ORDER BY列表的顺序排序

SELECT last_name , department_id , salary
 FROM employees
 ORDER BY department_id , salary desc;

1670059072040.jpg

可以使用不在SELECT列表中的列排序


分组函数


分组函数作用于一组数据,并对一组数据返回一个值


组函数语法


SELECT [column,]group function(column), ...
 FROM table
 [where condition]
 [GROUP BY column]
 [ORDER BY column]


AVG和SUM函数


可以对数值型数据使用AVGSUM函数

SELECT AVG(salary),MAX(salary)
 MIN(salary),SUM(salary)
 FROM employees
 WHERE job_id LIKE '%REP%';


MIN和MAX


可以对任意数据类型的数据使用MINMAX函数

SELECT MIN(hire_date),MAX(hire_date)
 FROM employees;


COUNT函数


COUNT(*)返回表中记录欧洲那个数,适用于任意数据类型

1670059112327.jpg

COUNT返回expr不为空的记录总数

SELECT COUNT(commission_pct)
 FROM employees
 WHERE department_id = 50;

1670059129938.jpg


分组数据


GROUP BY 子句

可以使用GROUP BY子句将表中的数据分成若干组

SELECT    column , group_function(column)
 FROM      table
 [WHERE    condition]
 [GROUP  BY    group_by_expression]
 [ORDER BY      column]

WHERE一定要放在FROM后面

SELECT列表中所有未包含在组函数中的列都应该包含在GROUP BY子句中

SELECT department_id , AVG(salary)
 FROM employees
 GROUP BY department_id;

1670059152410.jpg

包含在GROUP BY子句中的列不必包含在SELECT列表中

SELECT AVG(salary)
 FROM employees
 GROUP BY department_id ;

1670059167215.jpg

在GROUP BY子句中包含多个列

SELECT department_id , dept_id , job_id ,SUM(salary)
 FROM employees
 GROUP BY department_id , job_id ;

1670059184551.jpg

注意事项

  • 不能在WHERE子句中使用组函数
  • 可以在HAVING子句中使用组函数


HAVING 子句

使用HAVING过滤分组

  • 行已经被分组
  • 使用了组函数
  • 满足HAVING子句中条件的分组将会被显示
SELECT   column , group_function
 FROM table
 [WHERE   condition]
 [GROUP BY    group_by_expression]
 [HAVING group_condition]
 [ORDER BY   column]
SELECT department_id , MAX(salary)
 FROM employees
 GROUP BY department_id
 HAVING MAX(salary) >10000 ;

1670059206513.jpg

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
存储 SQL 关系型数据库
132.【MySQL_进阶】(四)
132.【MySQL_进阶】
53 0
|
8月前
|
存储 缓存 关系型数据库
132.【MySQL_进阶】(十)
132.【MySQL_进阶】
110 1
|
8月前
|
SQL 关系型数据库 MySQL
132.【MySQL_进阶】(九)
132.【MySQL_进阶】
81 0
|
8月前
|
存储 SQL 数据库
132.【MySQL_进阶】(八)
132.【MySQL_进阶】
67 0
|
4天前
|
关系型数据库 MySQL Java
mysql进阶篇(二)
mysql进阶篇(二)
|
4天前
|
存储 关系型数据库 MySQL
【MySQL进阶之路丨第一篇】什么是MySQL?
【MySQL进阶之路丨第一篇】什么是MySQL?
27 0
|
8月前
|
SQL 关系型数据库 MySQL
132.【MySQL_进阶】(三)
132.【MySQL_进阶】
59 0
|
8月前
|
存储 SQL 关系型数据库
132.【MySQL_进阶】(一)
132.【MySQL_进阶】
47 0
|
8月前
|
SQL 关系型数据库 MySQL
132.【MySQL_进阶】(五)
132.【MySQL_进阶】
102 0
|
8月前
|
存储 关系型数据库 MySQL
02-Mysql进阶篇
02-Mysql进阶篇