Oracle数据库SELECT查询实战示例

需积分: 13 0 下载量 10 浏览量 更新于2024-09-13 收藏 61KB DOC 举报
"Oracle数据库查询练习" 在Oracle数据库中,SELECT语句是用于从表中检索数据的关键命令。以下是从给定的练习中提取的一些重要知识点: 1. **基于条件的查询**:可以使用WHERE子句来指定查询的条件。例如,`SELECT * FROM emp WHERE deptno = 20;` 将返回20号部门的所有员工信息。`WHERE job LIKE 'CLERK'` 则用于查找所有工种为CLERK的员工。 2. **比较运算符**:`>` 和 `<` 分别表示大于和小于。例如,`WHERE comm > sal` 查找奖金高于工资的员工,而 `WHERE comm > (sal * 0.2)` 则是寻找奖金超过工资20%的员工。 3. **逻辑运算符**:`AND` 和 `OR` 运算符用于组合多个条件。例如,`WHERE (deptno = 10 AND job LIKE 'MANAGER') OR (deptno = 20 AND job LIKE 'CLERK')` 查询10号部门的MANAGER和20号部门的CLERK。 4. **NOT IN运算符**:`NOT IN` 用于排除特定值。`WHERE job NOT IN ('MANAGER', 'CLERK') AND sal >= 2000` 返回所有非MANAGER和CLERK职位且工资大于或等于2000的员工信息。 5. **聚合函数和NULL处理**:`DISTINCT` 关键字用于去除重复的值,如 `SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL;` 查询所有有奖金的员工的不同工种。`NVL` 函数用于将NULL值替换为指定值,`NVL(comm, 0)` 在计算总薪资时处理NULL奖金。 6. **数学运算**:在查询中可以直接进行数学运算,如 `WHERE (sysdate - hiredate) / 365 >= 10;` 查找工龄大于或等于10年的员工。 7. **日期函数**:`LAST_DAY()` 函数返回月份的最后一天,`HIREDATE - SYSDATE` 计算员工的工龄,这两个结合可以找出月倒数第二天入职的员工。 8. **字符串函数**:`UPPER()` 转换字符串为大写,`LOWER()` 转换为小写,`SUBSTR()` 提取字符串的一部分。例如,`UPPER(SUBSTR(ename, 1, 1)) || LOWER(SUBSTR(ename, 2, LENGTH(ename) - 1))` 可以将每个员工的名字首字母转为大写,其余部分转为小写。 9. **长度函数**:`LENGTH()` 计算字符串的长度,`WHERE LENGTH(ename) = 6` 找到名字长度恰好为6个字符的员工。 10. **正则表达式**:虽然在给定的练习中没有直接使用,但可以使用正则表达式(如 `REGEXP_LIKE` 函数)来查找不包含特定字符(如"S")的员工名字。 以上是Oracle数据库中SELECT查询的基本用法和一些常见的条件过滤技巧。通过这些练习,你可以熟悉和掌握在实际工作中如何筛选和处理数据。
2023-04-20 上传