Skip to content

SQL 语句的分类

在 MatrixOne 中,SQL 语句包含多种分类,每一种分类的定义与包含内容按照如下描述的每个部分所展示:

DDL - 数据定义语言

数据定义语言(Data Definition Language,DDL)是 DBMS 语言的一种,用于明确定义数据对象。在 MatrixOne 中,DDL 语句分为五个类别:

CREATE 语句,创建 MatrixOne 中各类对象

DROP 语句,删除 MatrixOne 中各类对象

ALTER 语句,修改 MatrixOne 中各类对象

TRUNCATE 语句,清空表中的数据

RENAME 语句

RESTORE 语句

DML - 数据修改语言

数据修改语言(Data Manipulation Language, DML)用于数据库操作,包括对数据库中的对象和资料执行访问工作的编程语句。在 MatrixOne 中,DML 包含如下分类:

INSERT 语句,用于在表中插入新行

DELETE 语句,用于在表中删除已存在的行

UPDATE 语句,修改表中已存在行的数据

LOAD DATA 语句,从文件批量导入数据到数据库

REPLACE 语句,替换行

DQL - Data Query Language

查询类语句(Data Query Language, DQL)用于检索 MatrixOne 中现有数据。以 SELECT 语句为核心,分为以下几类:

单表查询,查询层级只有一层,只涉及到单表的查询

子查询(Subquery),也称为嵌套查询或子选择,是 SELECT 子查询语句嵌入在另一个 SQL 查询的查询方式,分为关联子查询与非关联子查询

关联查询(Join Query),将多表之间的结果进行关联并输出结果的查询方式

公用表达式(Common Table Expressions),将某些查询作为是临时结果,可以在其他 SQL 中引用,如 SELECT, INSERT, UPDATE 和 DELETE,其仅存在于查询执行期间

组合查询,将多个查询的结果进行组合,以集合的方式进行呈现,分为并集(UNION)、交集(INTERSECT)、差集(MINUS)

除 SELECT STATEMENT 之外,还包含了针对常量的查询 VALUES 语句

以及 mo-dump 工具所对应的内部命令

TCL - 事务语言

事务语言是 MatrixOne 中提供事务管控专用的语言,包括如下几类:

START TRANSACTION,开启事务,在 MatrixOne 中可以使用其方言 BEGIN 实现替代

START TRANSACTION;
  TRANSACTION STATEMENTS
  ```

### COMMIT,提交事务,用于在 START TRANSACTION 或非自动提交场景下对事务的显式提交
START TRANSACTION; TRANSACTION STATEMENTS COMMIT; OR SET AUTOCOMMIT=0; TRANSACTION STATEMENTS COMMIT;
### ROLLBACK,回滚事务,用于在 START TRANSACTION 或非自动提交场景下对事务的显式回滚
START TRANSACTION; TRANSACTION STATEMENTS ROLLBACK; OR SET AUTOCOMMIT=0; TRANSACTION STATEMENTS ROLLBACK; ```

DCL - 数据控制语言

数据控制语言(Data Control Language, DCL)包括资源的分配与回收、用户与角色的创建与删除、权限的授权与回收,分为如下分类:

CREATE 语句,用于创建租户、用户与角色

DROP 语句,用于删除用户与角色

ALTER 语句,修改租户、用户信息

GRANT 语句,对用户或角色进行授权操作

REVOKE 语句,对用户或角色进行回收操作

Other - 管理语言

管理语言包含与数据无直接关联的数据库参数、资源分配的获取与修改,包括如下语句种类:

SHOW 语句

通过 SHOW 语句,获取信息:

SET 语句

通过 SET 语句用户可以对各类数据库参数进行调整,并通过 SHOW 命令呈现

KILL 语句

中止某个数据库连接的语句:

USE 语句

用于连接某个已存在的数据库:

Explain 语句

用于查看 SQL 执行计划:

PREPARE 语句

准备一条 SQL 语句并给它分配一个名称:

EXECUTE 语句

使用 PREPARE 准备好的语句名称并执行:

DEALLOCATE PREPARE 语句

释放使用 PREPARE 生成的预编译语句。在释放预编译语句后,再次执行预编译的语句会导致错误: