【SQL】关键字

发布于:2025-06-01 ⋅ 阅读:(34) ⋅ 点赞:(0)

ORDER BY

ORDER BY(排序) 语句可以按照一个或多个列的值进行升序(ASC)或降序(DESC)排序。

MAX / MIN

MAX() 函数返回一组值中的最大值。这个函数常用于数字字段,但也可以用于文本字段来找出按字典顺序最后的元素。
与 MAX() 函数相对的是 MIN() 函数,它返回一组值中的最小值。

AS

为字段起别名

COUNT

对某个限定条件下的字段计数
COUNT(字段名)

AVG

对限定条件下的某个字段计算平均值
AVG(字段名)

ROUND

限定浮点数精度

GROUP BY

GROUP BY 语句根据一个或多个列对结果集进行分组。

在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

SELECT column1, aggregate_function(column2)
FROM table_name
WHERE condition
GROUP BY column1;

GROUP BY 后跟多个分组时,分组之间用逗号连接

HAVING

类似WHERE, 但是WHERE不可以使用搜索的聚合结果,HAVING可以使用

例如,where条件中不

select avg(a) as a from table_a where id = 1;

INNER JOIN

inner join表示内连接,用于将两个表中符合条件的数据进行匹配。在MySQL中,inner join通常会使用on子句来指定连接条件。
关键字 JOIN、INNER JOIN的含义是一样的,都表示内连接

SELECT * FROM employee INNER JOIN department ON employee.department_id = department.id;

多个表join时,每两个表需要用ON限定连接的字段。

子查询

一个查询的查询条件是另一个查询的查询结果
嵌套在其他SQL查询中的查询

WHERE IN:
查询在graders表中有记录的学生的名字
先从grades中查询所有有成绩记录的学生的id,通过id再从表students中查询学生的名字

SELECT name
FROM students
WHERE id IN (SELECT student_id FROM grades);

去重

关键字 DISTINCT
例如:从表A 表B中计算每个device提问的平均数,因为一个device可以提多个问题,所以需要对device进行去重。

select up.university, round(count(qpd.question_id) / count(DISTINCT qpd.device_id), 4) as avg_answer_cnt from  user_profile as up inner join question_practice_detail as qpd on up.device_id = qpd.device_id group by up.university order by up.university;

UNION 与 UNION ALL

union 用于把来自多个select 语句的结果组合到一个结果集合中, 结果会去重
union功能与 union 相同,结果不去重
例如

select  column,......from table1

union [all]

select  column,...... from table2

day month year

YEAR函数用于返回date中的年份值

语法结构

YEAR(date)

-- 2022
SELECT YEAR('2022-05-23');  
SELECT YEAR('2022-05-23 15:30:00'); 

MONTH函数用于返回date中的月份值

语法结构

MONTH(date)

-- 5
SELECT MONTH('2022-05-23');  
SELECT MONTH('2022-05-23 15:30:00');  

WEEK函数用于返回date中的星期数

语法结构

WEEK(date)

-- 21
SELECT WEEK('2022-05-23');
SELECT WEEK('2022-05-23 15:30:00');

DAY函数用于返回date中的日期值

语法结构

DAY(date)

-- 23
SELECT DAY('2022-05-23');  
SELECT DAY('2022-05-23 15:30:00');  

网站公告

今日签到

点亮在社区的每一天
去签到