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的筛选。
posted @ 2022-01-19 19:05  只强  阅读(27)  评论(0编辑  收藏  举报