Oracle内功修炼手册:常用内置函数大盘点
2023-11-19 16:22:09
Oracle 数据库提供了丰富的内置函数,可以帮助您快速而轻松地处理和操作数据。本指南将介绍 Oracle 中最常用的内置函数,包括 NVL、DECODE、ROW_NUMBER、MIN、MAX、SUM、COUNT、AVG、GROUP BY、ORDER BY、HAVING 和 DISTINCT。通过掌握这些函数,您将能够更高效地编写 SQL 查询,并从数据中提取有意义的信息。
1. NVL 函数
NVL 函数用于将 NULL 值转换为另一个值。语法为:NVL(expression1, expression2)。其中,expression1 是要检查的值,expression2 是如果 expression1 为 NULL 时要返回的值。
例如,以下查询使用 NVL 函数将部门表中的部门名称列转换为“未知”,如果部门名称为 NULL:
SELECT NVL(department_name, 'Unknown') FROM departments;
2. DECODE 函数
DECODE 函数用于将一个值转换为另一个值,具体取决于该值是否满足某些条件。语法为:DECODE(field_name, value1, new_value1, value2, new_value2, ... , default_value)。其中,field_name 是要检查的值,value1、value2 等是条件值,new_value1、new_value2 等是当 field_name 等于相应条件值时要返回的值,default_value 是当 field_name 不等于任何条件值时要返回的值。
例如,以下查询使用 DECODE 函数将员工表中的性别代码转换为性别名称:
SELECT DECODE(gender_code, 'M', 'Male', 'F', 'Female', 'Unknown') FROM employees;
3. ROW_NUMBER 函数
ROW_NUMBER 函数用于为查询结果中的每一行分配一个唯一的行号。语法为:ROW_NUMBER() OVER (order by field_name)。其中,order by field_name 指定了行号的排序顺序。
例如,以下查询使用 ROW_NUMBER 函数为学生表中的学生按成绩降序排序,并分配行号:
SELECT ROW_NUMBER() OVER (ORDER BY score DESC) AS row_number, * FROM students;
4. MIN、MAX、SUM、COUNT 和 AVG 函数
MIN、MAX、SUM、COUNT 和 AVG 函数分别用于计算查询结果中的最小值、最大值、总和、计数和平均值。语法分别为:MIN(field_name)、MAX(field_name)、SUM(field_name)、COUNT(field_name) 和 AVG(field_name)。其中,field_name 是要计算的值的字段名称。
例如,以下查询使用 MIN、MAX、SUM 和 AVG 函数计算学生表中所有学生的分数的最小值、最大值、总和和平均值:
SELECT MIN(score), MAX(score), SUM(score), AVG(score) FROM students;
**5. GROUP BY、ORDER BY、HAVING 和 DISTINCT **
GROUP BY、ORDER BY、HAVING 和 DISTINCT 关键字用于对查询结果进行分组、排序、过滤和去重。语法分别为:GROUP BY field_name1, field_name2, ... , ORDER BY field_name1, field_name2, ... , HAVING condition 和 DISTINCT field_name1, field_name2, ... 。其中,field_name1、field_name2 等是字段名称,condition 是过滤条件。
例如,以下查询使用 GROUP BY 和 HAVING 关键字将学生表中的学生按班级分组,并只选择平均成绩大于 80 分的班级:
SELECT class_name, AVG(score) FROM students GROUP BY class_name HAVING AVG(score) > 80;
以上只是 Oracle 中最常用的内置函数和关键字的介绍。通过掌握这些函数和关键字,您将能够更高效地编写 SQL 查询,并从数据中提取有意义的信息。希望本指南对您有所帮助!