函数
一、聚合函数 (Aggregate Functions)
SQL 中的聚合函数是一类用于对记录集 (Recordset) 中的数据进行计算和分析的函数。
1. COUNT 函数
COUNT 是 SQL 中最基础的聚合函数,主要用于计算指定列中值的数量。
用法:COUNT(column_name)
示例:计算 user_profile 表中所有记录的数量。
SELECT COUNT(*) FROM user_profile;
2. SUM 函数
SUM 函数用于计算某列中值的总和。
用法:SUM(column_name)
示例:计算 user_profile 表中所有用户的总GPA。
SELECT SUM(gpa) FROM user_profile;
3. AVG 函数
AVG 函数用于计算某列中值的平均值。
用法:AVG(column_name)
示例:计算 user_profile 表中所有用户的平均GPA。
SELECT AVG(gpa) FROM user_profile;
4. MAX 函数
MAX 函数用于计算某列中值的最大值。
用法:MAX(column_name)
示例:找出 user_profile 表中 GPA 值最高的记录。
SELECT * FROM user_profile WHERE gpa = (SELECT MAX(gpa) FROM user_profile);
5. MIN 函数
MIN 函数用于计算某列中值的最小值。
用法:MIN(column_name)
示例:找出 user_profile 表中 GPA 值最低的记录。
SELECT * FROM user_profile WHERE gpa = (SELECT MIN(gpa) FROM user_profile);
二、聚合函数 (String Functions)
SQL 中的字符串函数主要用于对字符串类型的数据进行处理,比如获取子字符串、转换字符串大小写等。
1. SUBSTRING 函数
SUBSTRING 函数用于返回一个字符串的子串。
用法:SUBSTRING(string_expression, start, length)
示例:从 user_profile 表中选出所有名字中包含“张”的用户。
SELECT * FROM user_profile WHERE SUBSTRING(name,1,1) = '张' ;
2. UPPER 函数
UPPER 函数用于将某个字符串转换为大写形式。
用法:UPPER(string_expression)
示例:将 user_profile 表中所有名字都转换为大写字母。
UPDATE user_profile SET name = UPPER(name);
3. LOWER 函数
LOWER 函数用于将某个字符串转换为小写形式。
用法:LOWER(string_expression)
示例:将 user_profile 表中所有名字都转换为小写字母。
UPDATE user_profile SET name = LOWER(name);
三、聚合函数 (Date and Time Functions)
SQL 中的日期和时间函数主要用于对时间戳类型的数据进行处理,比如格式化时间戳、获取时间间隔等。
1. GETDATE 函数
GETDATE 函数用于获取当前的系统时间。
用法:GETDATE()
示例:查看当前系统时间。
SELECT GETDATE();
2. DATEPART 函数
DATEPART 函数用于从一个时间类型的数据中提取某个特定的日期部分。
用法:DATEPART(datepart, date_expression)
示例:查看 user_profile 表中出生日期是哪个月的用户的数量。
SELECT COUNT(*) FROM user_profile WHERE DATEPART(month,birthday) = '6';
3. DATEDIFF 函数
DATEDIFF 函数用于计算时间间隔。
用法:DATEDIFF(interval, startdate, enddate)
示例:查看 user_profile 表中年龄在30岁以上的用户的数量。
SELECT COUNT(*) FROM user_profile WHERE DATEDIFF(year,birthday,GETDATE()) > 30;
四、聚合函数 (Logical Functions)
SQL 中的逻辑函数主要用于判断某个条件是否成立,并返回相应的结果。
1. IF 函数
IF 函数用于根据某个条件成立与否,返回不同的结果。
用法:IF(condition, value if true, value if false)
示例:统计 user_profile 表中女性和男性的数量。
SELECT COUNT(*) AS total, IF(gender = 'F', 'Female', 'Male') AS gender
FROM user_profile
GROUP BY gender;
2. CASE 函数
CASE 函数用于根据某个条件成立与否,返回不同的值。
用法:CASE WHEN condition THEN value1 ELSE value2 END
示例:将 user_profile 表中年龄大于等于 18 岁的用户标记为已成年,否则标记为未成年。
SELECT
name,
CASE WHEN DATEDIFF(YEAR, birthday, GETDATE()) >= 18
THEN 'Adult'
ELSE 'Minor'
END AS age_status
FROM user_profile;
条件和循环语句
- IF 语句: 在 SQL 中,可以使用 CASE 表达式来实现类似 if 的条件判断功能。下面是一个示例:
SELECT
column1, column2,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE result3
END AS alias_name
FROM
table_name;
在以上语句中,根据条件 condition1 和 condition2,选择结果 result1 和 result2,并将之作为别名 alias_name 返回。
- FOR/WHILE 循环: SQL 并不直接提供传统的 for/while 循环语句,但可以使用 WHILE 循环或者递归来实现类似的循环功能。
使用 WHILE 循环示例:
DECLARE @counter INT;
SET @counter = 1;
WHILE @counter <= 10
BEGIN
-- 循环体内的语句
-- 可以使用 BREAK 来跳出循环
-- 可以使用 CONTINUE 跳过当前循环,进入下一次循环
SET @counter = @counter + 1;
END
在以上示例中,设置一个计数器变量 @counter,通过判断 @counter 的值决定是否进行循环,循环体内的语句可以执行多次,直到满足循环终止条件为止。