首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第4章 数据更新
4-1 数据的插入(INSERT语句的使用方法)
什么是INSERT
INSERT语句的基本语法
列清单的省略
插入NULL
插入默认值
从其他表中复制数据
4-2 数据的删除(DELETE语句的使用方法)
DROP TABLE语句和DELETE语句
DELETE语句的基本语法
指定删除对象的DELETE语句(搜索型DELETE)
4-3 数据的更新(UPDATE语句的使用方法)
UPDATE语句的基本语法
指定条件的UPDATE语句(搜索型UPDATE)
使用NULL进行更新
多列更新
4-4 事务
什么是事务
创建事务
ACID特性
第5章 复杂查询
5-1 视图
视图和表
创建视图的方法
视图的限制① ——定义视图时不能使用ORDER BY子句
视图的限制② ——对视图进行更新
删除视图
5-2 子查询
子查询和视图
子查询的名称
标量子查询
标量子查询的书写位置
使用标量子查询时的注意事项
5-3 关联子查询
普通的子查询和关联子查询的区别
关联子查询也是用来对集合进行切分的
结合条件一定要写在子查询中
第6章 函数、谓词、CASE表达式
6-1 各种各样的函数
函数的种类
算术函数
字符串函数
日期函数
转换函数
6-2 谓词
什么是谓词
LIKE谓词——字符串的部分一致查询
BETWEEN谓词——范围查询
IS NULL、IS NOT NULL——判断是否为NULL
IN谓词——OR的简便用法
使用子查询作为IN谓词的参数
EXIST谓词
6-3 CASE表达式
什么是CASE表达式
CASE表达式的语法
CASE表达式的使用方法
第7章 集合运算
7-1 表的加减法
什么是集合运算
表的加法——UNION
集合运算的注意事项
包含重复行的集合运算——ALL选项
选取表中公共部分——INTERSECT
记录的减法——EXCEPT
7-2 联结(以列为单位对表进行联结)
什么是联结
内联结——INNER JOIN
外联结——OUTER JOIN
3张以上的表的联结
交叉联结——CROSS JOIN
联结的特定语法和过时语法
当前位置:
首页>>
技术小册>>
SQL基础教程(中)
小册名称:SQL基础教程(中)
### 函数的种类 在SQL(Structured Query Language)中,函数是执行特定任务、返回结果集的强大工具。它们可以简化查询语句,提高数据处理的效率和准确性。根据功能和用途的不同,SQL中的函数大致可以分为几大类:聚合函数、标量函数、字符串函数、数值函数、日期和时间函数、条件函数(或称为逻辑函数)、窗口函数等。本章节将详细探讨这些不同类型的函数及其应用场景。 #### 1. 聚合函数 聚合函数主要用于对一组值执行计算,并返回单个值。这类函数在数据分析和报表生成中尤为重要。常见的聚合函数包括: - **COUNT()**:计算行数或特定列中非NULL值的数量。 - 示例:`SELECT COUNT(*) FROM employees;` 计算员工表中的总行数。 - `SELECT COUNT(department_id) FROM employees;` 计算有部门ID的员工数量。 - **SUM()**:计算数值列中值的总和。 - 示例:`SELECT SUM(salary) FROM employees;` 计算员工总薪资。 - **AVG()**:计算数值列的平均值。 - 示例:`SELECT AVG(salary) FROM employees;` 计算员工平均薪资。 - **MAX()** 和 **MIN()**:分别返回列中的最大值和最小值。 - 示例:`SELECT MAX(salary) FROM employees;` 找出最高薪资。 - `SELECT MIN(hire_date) FROM employees;` 找出最早的入职日期。 #### 2. 标量函数 标量函数对输入参数执行操作,并返回单个值。这些函数可以应用于SELECT语句的SELECT列表、WHERE子句、ORDER BY子句等地方。根据返回值的类型,标量函数可以进一步细分为字符串函数、数值函数、日期和时间函数等,但在此处我们将其视为一个独立类别讨论。 - **示例**:`SELECT LOWER(name) FROM employees;` 将员工姓名转换为小写。 #### 3. 字符串函数 字符串函数用于处理文本数据,如拼接、截取、转换等。 - **CONCAT()** 或 **||**(在某些数据库中):连接两个或多个字符串。 - 示例:`SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;` - **SUBSTRING()** 或 **MID()**:从字符串中提取子串。 - 示例:`SELECT SUBSTRING(email, 1, CHARINDEX('@', email) - 1) AS local_part FROM users;` - **LENGTH()** 或 **LEN()**:返回字符串的长度。 - 示例:`SELECT LENGTH(description) FROM products;` - **REPLACE()**:替换字符串中的部分文本。 - 示例:`SELECT REPLACE(email, '@olddomain.com', '@newdomain.com') FROM users;` #### 4. 数值函数 数值函数用于执行数学计算,如四舍五入、取绝对值等。 - **ROUND()**:对数值进行四舍五入。 - 示例:`SELECT ROUND(salary, 0) FROM employees;` 将薪资四舍五入到整数。 - **FLOOR()**:返回不大于参数的最大整数。 - 示例:`SELECT FLOOR(salary / 1000) * 1000 FROM employees;` 将薪资向下取整到最近的千位数。 - **ABS()**:返回参数的绝对值。 - 示例:`SELECT ABS(balance) FROM accounts;` #### 5. 日期和时间函数 日期和时间函数用于处理日期和时间值,如获取当前日期、计算日期差等。 - **NOW()** 或 **CURRENT_TIMESTAMP**:返回当前的日期和时间。 - 示例:`SELECT NOW();` - **DATE_ADD()** 或 **ADDDATE()**:向日期添加指定的时间间隔。 - 示例:`SELECT DATE_ADD('2023-01-01', INTERVAL 1 MONTH);` - **DATEDIFF()**:计算两个日期之间的天数差。 - 示例:`SELECT DATEDIFF('2023-03-15', '2023-01-01');` - **YEAR()**, **MONTH()**, **DAY()**:分别提取日期中的年、月、日部分。 - 示例:`SELECT YEAR(birthdate) FROM customers;` #### 6. 条件函数(逻辑函数) 条件函数根据条件对值进行评估,并返回相应的结果。最典型的条件函数是`CASE`语句,但也有一些内置的逻辑函数,如`COALESCE()`。 - **CASE**:基于一系列条件对数据进行转换。 - 示例:`SELECT name, CASE WHEN salary > 5000 THEN 'High' ELSE 'Low' END AS salary_level FROM employees;` - **COALESCE()**:返回参数列表中第一个非NULL值。 - 示例:`SELECT COALESCE(first_name, 'Unknown') FROM customers;` #### 7. 窗口函数 窗口函数是SQL 2003标准中引入的一种高级功能,它们允许对一组行执行计算,而不需要将这些行组合成单个输出行。窗口函数通常与OVER()子句一起使用,以指定窗口的分区和排序规则。 - **ROW_NUMBER()**:为窗口内的每行分配一个唯一的序号。 - 示例:`SELECT name, department, salary, ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rank FROM employees;` - **RANK()** 和 **DENSE_RANK()**:根据排序规则为窗口内的行分配排名,但处理并列的方式不同。 - 示例:`SELECT name, score, RANK() OVER (ORDER BY score DESC) AS rank FROM scores;` - **SUM()**, **AVG()** 等聚合函数作为窗口函数使用时,可以在不分组的情况下计算累计总和或平均值。 - 示例:`SELECT name, salary, SUM(salary) OVER (PARTITION BY department ORDER BY hire_date) AS cumulative_salary FROM employees;` ### 总结 SQL中的函数种类繁多,每种函数都有其特定的用途和优势。通过合理使用这些函数,可以极大地提高SQL查询的灵活性和效率。无论是进行简单的数据检索,还是进行复杂的数据分析和报表生成,掌握这些函数都是必不可少的。希望本章内容能帮助读者更好地理解SQL函数的种类及其应用,为后续的数据库管理和数据分析工作打下坚实的基础。
上一篇:
6-1 各种各样的函数
下一篇:
算术函数
该分类下的相关小册推荐:
SQL基础教程(上)
高性能的Postgres SQL
SQL基础教程(下)
PostgreSQL入门教程