"Oracle简单查询教程,包括在查询中过滤行、对结果排序及使用单行函数"
在Oracle数据库管理系统中进行数据查询时,我们经常需要根据特定条件过滤行,以便获取我们需要的信息。本教程主要讲解了在查询中过滤行的方法,以及如何对查询结果进行排序和使用单行函数。
首先,过滤行是通过在SELECT语句中使用WHERE子句来实现的。WHERE子句允许我们设定条件,只显示满足这些条件的行。例如,要查询工资高于3000的员工,我们可以使用如下的SQL语句:
```sql
SELECT * FROM employees WHERE salary > 3000;
```
对于日期的过滤,可以查找1982年以后入职的员工:
```sql
SELECT * FROM employees WHERE hire_date > '1982-01-01';
```
对于特定范围的工资,比如2000到2500之间,我们可以使用BETWEEN操作符:
```sql
SELECT * FROM employees WHERE salary BETWEEN 2000 AND 2500;
```
在查询中,我们还可以使用算术表达式来计算年薪:
```sql
SELECT employee_id, first_name, last_name, (salary * 12) AS annual_salary FROM employees;
```
列的别名(如annual_salary)可以使得结果更易读。处理NULL值时,可以使用IS NULL或IS NOT NULL操作符。例如,显示所有没有分配部门的员工:
```sql
SELECT * FROM employees WHERE department_id IS NULL;
```
连接字符串则可以使用CONCAT函数:
```sql
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
```
比较操作符如=、>、<等用于基本的条件比较,而LIKE操作符则用于模式匹配。例如,显示首字母为"S"的员工姓名和工资:
```sql
SELECT first_name, salary FROM employees WHERE first_name LIKE 'S%';
```
同时,使用通配符_%可以匹配任意数量的字符,_代表一个具体字符。比如查找第三个字符为大写"O"的员工姓名和工资:
```sql
SELECT first_name, salary FROM employees WHERE first_name LIKE '_O%';
```
逻辑运算符AND、OR和NOT用于组合多个条件。例如,查找工资高于1000且岗位为MANAGER,同时名字首字母为J的员工:
```sql
SELECT * FROM employees
WHERE salary > 1000 AND job_title = 'MANAGER' AND first_name LIKE 'J%';
```
对查询结果进行排序,使用ORDER BY子句,如按工资升序显示雇员信息:
```sql
SELECT * FROM employees ORDER BY salary ASC;
```
若要降序排序,只需添加DESC关键字:
```sql
SELECT * FROM employees ORDER BY salary DESC;
```
可以按多个列排序,例如部门号升序,工资降序:
```sql
SELECT * FROM employees ORDER BY department_id ASC, salary DESC;
```
此外,还可以使用列的别名进行排序,如按年薪排序:
```sql
SELECT employee_id, (salary * 12) AS annual_salary FROM employees ORDER BY annual_salary ASC;
```
单行函数,也称为标量函数,会在查询的每一行上应用并返回一个值。它们包括字符串函数、数字函数、日期函数等,用于对单个值进行转换或处理。例如,我们可以使用UPPER函数将所有员工的姓氏转为大写:
```sql
SELECT first_name, UPPER(last_name) AS upper_last_name FROM employees;
```
通过这些基础的查询技巧,我们可以更有效地从Oracle数据库中提取所需的数据。