参 考 资 料 \color{blue}{参考资料} 参考资料
思维导图: https://processon.com/mindmap/6004e42fe401fd261bc70815
SQL基础: https://www.w3school.com.cn/sql/index.asp
SQL函数
SQL 拥有很多可用于计数和计算的内建函数。
- 语法
# SELECT function(列) FROM 表
- 类型
Aggregate 函数
Scalar 函数
表orders
AVG()
AVG 函数返回数值列的平均值。NULL 值不包括在计算中。
# 语法 select avg(column_name) from table_name
# 查找平均价格
select avg(OrderPrice) as OrderAvg from orders
# 找到 OrderPrice 值高于 OrderPrice 平均值的客户
select Customer from orders where OrderPrice > (select avg(OrderPrice) from orders)
COUNT()
COUNT() 函数返回匹配指定条件的行数。
- 语法
# 返回表中的记录数 select count(*) from table_name
# 返回指定列的值的数目 select count(column_name) from table_name
# 返回指定列的不同值的数目 select count(distinct column_name) from table_name
# COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。
FIRST()
FIRST() 函数返回指定的字段中第一个记录的值
# select first(column_name) from table_name
select first(OrderPrice) from orders
LAST()
LAST() 函数返回指定的字段中最后一个记录的值。
# select last(column_name) from table_name
select last(OrderPrice) from orders
MAX()/MIN()
MAX 函数返回一列中的最大/小值
# select max(column_name) from table_name
# select min(column_name) from table_name
select max(OrderPrice) from orders
select min(OrderPrice) from orders
SUM()
SUM 函数返回数值列的总数(总额)。
# select sum(column_name) from table_name
select sum(OrderPrice) from orders
GROUP BY/HAVING
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
# 查找客户 "Bush" 或 "Adams" 拥有超过 1500 的订单总金额。
select customer, sum(OrderPrice) from orders where customer = 'Bush' or customer = 'Adams' group by customer having sum(OrderPrice) > 1500;
UCASE()/LCASE()
UCASE 函数把字段的值转换为大/小写。
SELECT UCASE(LastName) as LastName,FirstName FROM Persons
SELECT LCASE(LastName) as LastName,FirstName FROM Persons
MID()
MID 函数用于从文本字段中提取字符。
# SELECT MID(column_name,start[,length]) FROM table_name
# column_name 必需。要提取字符的字段。
# start 必需。规定开始位置(起始值是 1)。
# length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。
select mid(name,1,3) from student
LEN()
LEN 函数返回文本字段中值的长度。
select len(name) from student
ROUND()
ROUND 函数用于把数值字段舍入为指定的小数位数。
SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products