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非常重要。