### 经典-Oracle的SQL语句百例训练 #### 1. Oracle SQL与单行函数基础 **知识点概述:** 本文档旨在通过一系列实际案例,帮助读者掌握Oracle数据库中的SQL语言及其常用单行函数的基本用法。这些案例涵盖了表查询、数据筛选、排序以及简单的数据转换等操作。 **知识点详解:** ### 一、基本SQL查询 **1. 查询SCOTT用户的EMP表内容** - **命令**: `SELECT * FROM scott.emp;` - **解析**: 此命令用于查询SCOTT用户下名为EMP的表的所有列信息。若未指定表的所有者,则需加上所有者名称以避免找不到表的错误。 **2. 显示当前登录的用户** - **命令**: `SHOW USER;` - **解析**: 此命令显示当前连接到数据库的用户名。这对于确认当前操作是在哪个用户权限下进行非常重要。 **3. 查看当前用户的所有表** - **命令**: `SELECT * FROM tab;` - **解析**: 通过此命令可以查看当前用户拥有的所有表的列表。这对于了解用户拥有的数据资源非常有帮助。 **4. 重复执行上一条SQL语句** - **命令**: 输入 `/` 键 - **解析**: 在SQL*Plus环境中,输入 `/` 键可以快速重复执行上一个命令,提高工作效率。 **5. 查询表结构** - **命令**: `DESCRIBE dept;` - **解析**: 此命令用于查看DEPT表的结构信息,包括列名和数据类型等。这对于理解表结构非常有用。 ### 二、数据选择与筛选 **6. 选择EMP表的部分列** - **命令**: `SELECT empno, ename, job FROM emp;` - **解析**: 此命令用于从EMP表中选择雇员编号(empno)、姓名(ename)和职位(job)三列。 **7. 为列名取别名** - **命令**: `SELECT empno AS "编号", ename AS "姓名", job AS "职位" FROM emp;` - **解析**: 通过AS关键字为列名设置别名可以使输出更易读。注意,在Linux环境下,如果别名不加双引号,则会自动转换成大写字母。 **8. 查询所有不同的工作** - **命令**: `SELECT DISTINCT job FROM emp;` - **解析**: 使用DISTINCT关键字去除重复值,从而只显示EMP表中所有不同的职位。 **9. 结果输出格式化** - **命令**: `SELECT 'NO:' || empno || ', Name:' || ename || ', Job:' || job FROM emp;` - **解析**: 通过字符串拼接(使用 `||` 运算符)来格式化输出结果,使输出更符合阅读习惯。 **10. 计算年薪** - **命令**: `SELECT ename, sal * 12 AS "年薪" FROM emp;` - **解析**: 此命令计算每位雇员的年薪,并为该列设置“年薪”这一别名。 ### 三、条件筛选 **11. 查询可以领取佣金的雇员** - **命令**: `SELECT * FROM emp WHERE comm IS NOT NULL;` - **解析**: 通过WHERE子句结合IS NOT NULL来筛选出有佣金(comm)的雇员记录。 **12. 查询工资大于1500且有佣金的雇员** - **命令**: `SELECT * FROM emp WHERE sal > 1500 AND comm IS NOT NULL;` - **解析**: 通过多个条件筛选出符合条件的记录。 **13. 查询工资不大于1500且无佣金的雇员** - **命令**: `SELECT * FROM emp WHERE NOT (sal > 1500 AND comm IS NOT NULL);` - **解析**: 使用NOT操作符反向筛选出不符合条件的记录。 **14. 查询1981年雇佣的雇员** - **命令**: `SELECT * FROM emp WHERE hiredate BETWEEN '01-JAN-81' AND '31-DEC-81';` - **解析**: 使用BETWEEN ... AND 来筛选出特定日期范围内的记录。 **15. 大小写敏感性** - **解析**: Oracle数据库区分大小写,因此在查询时需要注意列名和表名的大小写。 **16. 查询非特定雇员编号的雇员** - **命令**: `SELECT * FROM emp WHERE empno NOT IN (7369, 7499);` - **解析**: 通过NOT IN来排除特定编号的雇员记录。 **17. 使用LIKE进行模糊匹配** - **命令**: `SELECT * FROM emp WHERE hiredate LIKE '%81%';` - **解析**: 使用LIKE结合通配符(% 表示任意字符,_ 表示单个字符)来进行模糊匹配。 **18. 查询非特定编号的雇员** - **命令**: `SELECT * FROM emp WHERE empno <> 7369;` - **解析**: 使用<>或!=作为不等于操作符来筛选记录。 ### 四、排序与分组 **19. 按工资排序** - **命令**: `SELECT * FROM emp ORDER BY sal;` - **解析**: 使用ORDER BY子句对结果集进行排序,默认为升序(ASC),也可以指定DESC进行降序排序。 **20. 查询特定部门的雇员信息** - **命令**: `SELECT * FROM emp WHERE deptno = 10 ORDER BY sal DESC, hiredate ASC;` - **解析**: 先按工资降序排序,若工资相同则按雇用日期升序排序,以获取部门号为10的雇员信息。 ### 五、单行函数 **21. 字符串函数** - **命令**: `SELECT UPPER(ename), LOWER(ename) FROM emp;` - **解析**: 使用UPPER将ename列转换为全大写,使用LOWER将其转换为全小写。 以上只是文档中提到的一部分知识点,通过这些实例,我们可以了解到Oracle SQL的强大功能以及如何利用这些功能进行数据处理和分析。此外,还可以进一步学习更多高级查询技巧和函数使用方法,以满足复杂的数据需求。
剩余29页未读,继续阅读
- 粉丝: 103
- 资源: 6万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助