5.DQL语言
查询中的列选择——select子句
select子句
SELECT [* | <column_name>[,...]] FROM <table_name>[,...];
定义别名
①列别名
SELECT emp_id (as) id FROM employees;
②表别名
SELECT emp.emp_id FROM employees (as) emp;
去除重复
SELECT DISTINCT department_id FROM employees;
distinct是对查询到的结果去重,多列去重规则是多列的值都相同才去重
查询中的行选择——where子句
选择行
SELECT [* | <column_name>[,...]] FROM <table_name>[,...] WHERE <condition> AND <condition>;
conditions由列名、表达式、常数和比较操作组成。
比较运算符
①常用比较运算符——检查单个值
<,>,≤,≥,<>,!=,=
②其他比较运算符
-
(NOT)BETWEEN...AND...:在两个值之间(包含这两个值)——检查范围值
-
(NOT)IN(SET):匹配一个任意值列表 ——检查范围值
-
(NOT)LIKE:模式匹配 ——检查匹配值
%表示0或多个字符,_表示一个字符
-
IS (NOT)NULL:是一个空值 ——检查空值
逻辑运算符
- AND:如果两个条件都为真,返回True;
- OR:如果两个条件中有一个条件为真,返回True;
- NOT:如果跟随的条件为假,则返回True
示例
# 列出所有价格⼩于10美元的产品。——检查单个值 SELECT prod_name, prod_price FROM Products WHERE prod_price < 10; # 检索价格在5美元和10美元之间的所有产品。 ——检查范围值 SELECT prod_name, prod_price FROM Products WHERE prod_price BETWEEN 5 AND 10; # 返回所有没有价格(空prod_price字段,不是价格为0)的产品。——检查空值 SELECT prod_name FROM Products WHERE prod_price IS NULL;
ORDER BY排序
单列排序
ASC:升序排序,默认
DESC:降序排序
SELECT [* | <column_name>[,...]] FROM <table_name>[,...] ORDER BY <columns_name>[,...] [ASC | DESC];
也可以用列别名排序
多列排序
SELECT department_id,salary FROM employees ORDER BY department_id ASC,salary DESC; # 以升序排序显示department_id,同时以降序排序显示salary列。
GROUP BY 数据分组
单个数据分组条件
在没有进行数据分组前,所有聚合函数是将结果集作为一个大的信息组进行处理。但有时需要用到较小的组,用GROUP BY实现。
使用数据分组的原则:
- 使用WHERE子句,可以在划分行成组前进行过滤
- 如果有WHERE子句,那GROUP BY 在WHERE后面
- 在GROUP BY 子句中必须包含列
SELECT [* | <column_name>[,...]] FROM <table_name>[,...] WHERE <condition> GROUP BY <column_name>[,...] ORDER BY <column_name>[,...] [ASC | DESC]
多个数据分组条件
SELECT department_id,job_id,sum(salary) FROM employees GROUP BY department_id,job_id # 以上这个分组是先根据“部门ID(department_id)”分组,之后再再部门id、过后的结果进行岗位的分组(job_id)
HAVING 约束分组结果
HAVING是对GROUP BY分组后的结果再进行过滤
SELECT department_id,MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary)>10000; # 对department_id分组,对于分组后的结果再进行salary>10000的筛选。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义