### Oracle PL/SQL 编程手册关键知识点解析 #### 一、SQL PLUS 基础 **1.1 SQL命令概述** SQL*PLUS是Oracle数据库自带的一个强大的客户端工具,用于执行SQL语句、PL/SQL块及管理数据库。在SQL*PLUS中,存在一系列的关键SQL命令,它们用于数据定义、数据操纵、数据控制等操作。以下是作为语句开头的17个关键字: - **ALTER**: 修改已存在的数据库对象。 - **DROP**: 删除数据库对象。 - **REVOKE**: 撤销权限。 - **AUDIT**: 记录某些操作的发生。 - **GRANT**: 授予权限。 - **ROLLBACK**: 回滚事务。 - **COMMIT**: 提交事务。 - **INSERT**: 向表中插入新行。 - **SELECT**: 查询数据。 - **COMMENT**: 创建注释。 - **LOCK**: 锁定表或数据库对象。 - **UPDATE**: 更新表中的数据。 - **CREATE**: 创建新的数据库对象。 - **NOAUDIT**: 取消审计记录。 - **VALIDATE**: 验证对象。 - **DELETE**: 删除表中的行。 这些命令都必须以分号(`;`)结尾。其中,带有星号(*)标记的命令如`COMMIT`和`ROLLBACK`,句尾可以不加分号,并且不会存入SQL缓存区。 **1.2 SQL*PLUS特有命令** 除了标准的SQL命令外,SQL*PLUS还提供了一系列独有的命令,这些命令可以帮助用户更高效地管理和执行SQL语句。这些命令不存入SQL缓存区,包括但不限于: - **@**: 执行存储在文件中的SQL命令或PL/SQL脚本。 - **DEFINE**: 定义变量。 - **PAUSE**: 在执行命令时暂停,等待用户的输入。 - **QUIT**: 退出SQL*PLUS环境。 - **SAVE**: 将SQL命令保存到文件中。 - **SET**: 设置SQL*PLUS环境参数。 - **SHOW**: 显示当前会话的状态信息。 - **SPOOL**: 将SQL输出重定向到文件。 - **BREAK**: 设置输出格式,用于分隔输出结果。 - **COLUMN**: 控制特定列的显示格式。 - **COMPUTE**: 在输出中计算和显示汇总值。 - **EDIT**: 使用外部编辑器编辑SQL命令。 - **ACCEPT**: 接受用户输入的值。 - **CONNECT**: 连接到数据库。 - **DISCONNECT**: 断开与数据库的连接。 #### 二、数据库查询基础 **2.1 数据字典查询** 数据字典是Oracle数据库中的一组特殊表,用于存储有关数据库对象的信息。通过数据字典查询,用户可以获取关于表、视图和其他数据库对象的元数据信息。常用的数据字典视图包括: - **TAB**: 用户创建的所有基表、视图和同义词的列表。 - **DTAB**: 构成数据字典的所有表的列表。 - **COL**: 用户创建的基表的所有列定义的列表。 - **CATALOG**: 用户可以访问的所有基表的列表。 例如,查询用户创建的所有表: ```sql SELECT * FROM tab; ``` **2.2 表结构查询** 为了查看表的结构信息,可以使用`DESCRIBE`命令。例如,要查看`dept`表的结构: ```sql DESCRIBE dept; ``` **2.3 SELECT语句** `SELECT`语句是最基本的SQL语句之一,用于从表中检索数据。基本语法如下: ```sql SELECT column1, column2, ... FROM table_name; ``` 例如,查询`emp`表中的所有数据: ```sql SELECT * FROM emp; ``` 或者选择特定的列: ```sql SELECT empno, ename, job FROM emp; ``` **2.4 排序查询** 使用`ORDER BY`子句可以按一个或多个列的值进行排序。例如,按`deptno`降序排列`dept`表中的数据: ```sql SELECT * FROM dept ORDER BY deptno DESC; ``` **2.5 条件查询** - **逻辑运算符** - `=`: 等于 - `!=` 或 `<>`: 不等于 - `>`: 大于 - `>=`: 大于等于 - `<`: 小于 - `<=`: 小于等于 - `IN`: 匹配列表中的任意值 - `BETWEEN`: 在两个值之间 - `LIKE`: 模式匹配 - `%`: 通配符,匹配任意数量的字符 - `_`: 通配符,匹配单个字符 - `IS NULL`: 判断值是否为NULL - `NOT`: 逻辑非运算符 - **使用IN和NOT IN进行查询** 例:查询职员和分析员的信息: ```sql SELECT ename, job FROM emp WHERE job IN ('clerk', 'analyst'); ``` 查询不是职员也不是分析员的信息: ```sql SELECT ename, job FROM emp WHERE job NOT IN ('clerk', 'analyst'); ``` - **使用BETWEEN和NOT BETWEEN进行查询** 例:查询工资在2000和3000之间的雇员信息: ```sql SELECT ename, job, sal FROM emp WHERE sal BETWEEN 2000 AND 3000; ``` 查询工资不在2000和3000之间的雇员信息: ```sql SELECT ename, job, sal FROM emp WHERE sal NOT BETWEEN 2000 AND 3000; ``` - **使用LIKE和NOT LIKE进行查询** 例:查询姓名以"S"开头的雇员信息: ```sql SELECT ename, deptno FROM emp WHERE ename LIKE 'S%'; ``` 查询姓名以"K"结尾的雇员信息: ```sql SELECT ename, deptno FROM emp WHERE ename LIKE '%K'; ``` 查询姓名以"W"开头且后面只有三个字母的雇员信息: ```sql SELECT ename, deptno FROM emp WHERE ename LIKE 'W___'; ``` 查询工种名称不以"sales"开头的雇员信息: ```sql SELECT ename, job FROM emp WHERE job NOT LIKE 'sales%'; ``` - **使用IS NULL和IS NOT NULL进行查询** 例:查询没有奖金的雇员信息: ```sql SELECT ename, job FROM emp WHERE comm IS NULL; ``` 查询有奖金的雇员信息: ```sql SELECT ename, job FROM emp WHERE comm IS NOT NULL; ``` - **多条件查询** 例:查询部门编号为20且职位不是职员的信息: ```sql SELECT ename, job FROM emp WHERE deptno = 20 AND job != 'clerk'; ``` - **表达式查询** 例:选择奖金高于其工资的5%的雇员信息: ```sql SELECT ename, sal, comm, comm / sal FROM emp WHERE comm > .05 * sal ORDER BY comm / sal DESC; ``` - **日期型数据的运算** 例:向日期`6-Mar-87`添加两天: ```sql SELECT 6-MAR-87 + 2 AS new_date; ``` 向日期`6-Mar-87`添加两小时: ```sql SELECT 6-MAR-87 + 2 / 24 AS new_time; ``` 以上内容详细介绍了Oracle PL/SQL中SQL*PLUS的基本使用方法以及如何使用SQL进行数据查询。这些知识点对于初学者来说非常重要,掌握后可以帮助他们更好地理解并操作Oracle数据库。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助