SQL语句分类简述
1 概述
SQL是一种用于数据库访问的非过程化语言,用户通过 SQL 描述其目标,之后 SQL 语言编译器自动地生成执行过程,控制数据库执行用户所期望的操作。本文大致介绍oracle中涉及到的一些语句。
2 分类
2.1 数据操作语言语句
数据操作语言[Data manipulation language,DML]语句的作用是查询或操作已有方案对象内的数据。具体可以参考下表。
| 关键词 | 作用 |
|---|---|
| SELECT | 从一个或多个表或视图中查询数据; |
| fetch | 获取操作,是可滚动的[scrollable](见“可滚动游标”) |
| INSERT | 向表或视图中加入新数据行 |
| UPDATE | 修改表或视图中已有数据行的列值 |
| MERGE | 根据判断条件为表及视图插入或更新数据行 |
| DELETE | 从表或视图中删除数据行 |
| EXPLAIN PLAN | 查询 SQL 语句的执行计划[execution plan] |
| LOCK TABLE | 对表或视图加锁[lock],临时地限制其他用户访问此对象 |
DML 语句是使用频率最高的 SQL 语句。
2.2 数据定义语言语句
数据定义语言[Data definition language,DDL]语句的作用是定义或修改方案对象[schema object]的结构,以及移除方案对象。具体可以参考下表。
| 关键词 | 作用 |
|---|---|
| CREATE,ALTER,DROP | 创建,修改,移除方案对象及其他数据库结构,包括数据库自身及数据库用户 |
| RENAME | 修改方案对象名称 |
| TRUNCATE | 删除方案对象的所有数据,但不移除对象结构 |
| GRANT,REVOKE | 授予或收回权限及角色 |
| AUDIT,NOAUDIT | 打开或关闭审计选项 |
| COMMENT | 向数据字典中添加注释 |
DDL 语句将隐式地提交之前的操作并开始一个新事务。
2.3 事务控制语句
事务控制语句[transaction control statement]的作用是管理 DML 语句对数据的修改,以及将逻辑上相关的 DML 语句组织为事务。具体如下表。
| 关键词 | 作用 |
|---|---|
| COMMIT | 将事务对数据的修改永久地保存到数据库 |
| ROLLBACK | 还原事务对数据的修改,可还原到事务开始处或任意保存点[savepoint] |
| SAVEPOINT | 设置保存点以标识回滚位置 |
| SET TRANSACTION | 设置事务的属性 |
2.4 会话控制语句
会话控制语句[session control statement]用于管理用户会话的属性。具体如下表。
| 关键词 | 作用 |
|---|---|
| ALTER SESSION | 执行特定操作,修改当前会话,例如启用或禁用 SQL 跟踪功能[SQL trace facility] |
| SET ROLE | 为当前会话启用或禁用角色[role](即一组权限的集合) |
2.5 系统控制语句
系统控制语句[system control statement]用于修改 Oracle 数据库实例的属性。
ALTER SYSTEM |用户可以使用此语句修改实例设置(例如共享服务进程的最小数量),终止进程[kill session],或执行其他操作。
2.6 嵌入 SQL 语句
用户可以使用嵌入 SQL 语句[embedded SQL statement]将 DDL,DML,及事务控制语句加入到以过程化语言编写的程序中。Oracle 预编译器[precompiler]能够处理这样的代码。具体可以参考下表。
| 关键词 | 作用 |
|---|---|
| DECLARE CURSOR,OPEN,CLOSE | 定义,分配,及释放游标[cursor] |
| DECLARE DATABASE,CONNECT | 选择一个 Oracle 数据库并进行连接 |
| DECLARE STATEMENT | 分配变量名 |
| DESCRIBE | 初始化描述符[descriptor] |
| WHENEVER | 设定如何处理错误及警告 |
| PREPARE,EXECUTE,EXECUTE IMMEDIATE | 解析并执行 SQL 语句 |
| FETCH | 从数据库中取回数据 |
3 总结
以上的内容参考了官方文档,熟悉这些语句关键词对于理解sql非常重要。

浙公网安备 33010602011771号