本文共 3001 字,大约阅读时间需要 10 分钟。
基于ORACLE数据库HR用户,以下是一系列关于SQL查询的操作和示例,逐步介绍各项功能及其应用场景。
可以使用DESC
语句查看表的字段信息。例如,查看表的列名和数据类型:
DESC departments;
使用SELECT
语句可以指定列来获取所需数据。例如,查看部门表的部门ID和部门名称:
SELECT department_id, department_name FROM departments;
可以在SELECT语句中运用算术表达式来对数据进行计算。例如,为每个员工计算加薪后的工资:
SELECT employee_id, first_name, salary, salary + 100, salary * 1.10 FROM employees;
使用AS
关键字可以为结果定义新的列别名。例如,为姓名字段定义多个别名:
SELECT last_name, last_name AS xing, "last name" AS shixing FROM employees;
使用连字符||
可以将两个字段连接成一个字符串。例如,合并员工的名字和姓氏:
SELECT first_name || last_name AS name FROM employees;
如果需要在连接中间添加空格,可以使用' '
:
SELECT first_name || ' ' || last_name AS name FROM employees;
使用DISTINCT
关键字可以去除重复值。例如,获取部门ID的去重列表:
SELECT DISTINCT department_id FROM employees;
使用IS NULL
可以筛选出空值进行操作。例如,查询薪酬为空的员工信息:
SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE salary IS NULL;
了解常用的运算符可以提升查询效率。例如,使用IN
来查找多个值,BETWEEN
用于范围查询。例如,查找工资在特定范围内的数据:
SELECT first_name, last_name, salary FROM employees WHERE salary BETWEEN 13000 AND 20000;
利用LIKE
关键字可以实现字符串匹配。例如,查找员工姓名以"S"开头:
SELECT first_name, last_name FROM employees WHERE first_name LIKE '%S%';
也可以查找特定模式:
SELECT first_name, last_name FROM employees WHERE first_name LIKE '__S%';
结合WHERE
子句,可以限制查询结果。例如,查找部 belts Laurencia 其工资达到15000以上:
SELECT last_name, job_id, salary FROM employees WHERE last_name = 'Laurencia' AND salary >= 15000;
使用AND
和OR
结合逻辑条件进行复合查询。例如,命中同时满足部门ID等于90且工资大于等于10000的记录:
SELECT email, last_name, salary, department_id FROM employees WHERE salary >= 10000 AND department_id = 90;
使用合适的日期格式进行查询,例如查找近期入职的员工:
SELECT * FROM employees WHERE hire_date = '24-12-05';
使用ORDER BY
关键字可以对结果进行排序。例如,按入职日期升序排列:
SELECT last_name, first_name, hire_date FROM employees ORDER BY hire_date;
默认排序规则是升序,自定义排序方式可以通过asc
或desc
指定:
SELECT last_name, first_name, hire_date FROM employees ORDER BY hire_date ASC;
对于涉及空值的排序,可以使用NULLS FIRST
确保空值出现在首位:
SELECT last_name, first_name, commission_pct FROM employees ORDER BY commission_pct NULLS FIRST;
也可以通过为字段 alias指定规则进行排序:
SELECT last_name, first_name AS m, commission_pct FROM employees ORDER BY m;
使用FETCH
关键字可以限制返回的记录数量,例如获取前5条记录:
SELECT employee_id, last_name, first_name FROM employees ORDER BY employee_id FETCH FIRST 5 ROWS ONLY;
如果需要获取随机的百分比数据,可以使用FETCH FIRST n% ROWS ONLY
:
SELECT employee_id, last_name, first_name FROM employees ORDER BY employee_id FETCH FIRST 10% ROWS ONLY;
使用逗号分隔列表可以对多个字段进行排序。例如,首先按部门ID升序排列,之后按姓名降序排列:
SELECT last_name, first_name, salary, department_id FROM employees ORDER BY department_id asc, first_name desc;
可以使用算术表达式为排序依据动态指定值。例如,按照加上100后的工资排序:
SELECT last_name, first_name, salary, salary + 100 FROM employees ORDER BY salary + 100;
可以直接使用列号进行排序,默认是按升序排列。例如,按第三列(department_id)排序:
SELECT last_name, first_name, salary, department_id FROM employees ORDER BY 3;
也可以指定具体的排序顺序,如部门ID升序和员工姓名降序:
SELECT last_name, first_name, salary, department_id FROM employees ORDER BY 3 ASC, 1 DESC;
通过以上技术,ORACLE的SQL功能可以满足多种高级需求,助力数据的精准管理和分析。
转载地址:http://kpbzk.baihongyu.com/