GaussDB-DDL语法一览表
DDL(Data Definition Language,数据定义语言),用于定义或修改数据库中的对象。如:表、索引、视图等。
GaussDB不支持CN不完整时进行DDL操作。例如:集群中有1个CN故障时执行新建数据库、表等操作都会失败。
定义角色
角色是用来管理权限的,从数据库安全的角度考虑,可以把所有的管理和操作权限划分到不同的角色上。所涉及的SQL语句,请参考表1。
| 功能 | 相关SQL |
|---|---|
| 创建角色 | CREATE ROLE |
| 修改角色属性 | ALTER ROLE |
| 删除角色 | DROP ROLE |
| 删除一个数据库角色所拥有的数据库对象 | DROP OWNED |
定义用户
用户是用来登录数据库的,通过对用户赋予不同的权限,可以方便地管理用户对数据库的访问及操作。所涉及的SQL语句,请参考表2。
| 功能 | 相关SQL |
|---|---|
| 创建用户 | CREATE USER |
| 修改用户属性 | ALTER USER |
| 删除用户 | DROP USER |
定义客户端加密主密钥
客户端加密主密钥主要用于密态数据库特性中,用来加密列加密密钥(cek)。客户端加密主密钥定义主要包括创建客户端加密主密钥以及删除客户端加密主密钥。所涉及的SQL语句,请参考表3。
| 功能 | 相关SQL |
|---|---|
| 创建客户端加密主密钥 | CREATE CLIENT MASTER KEY |
| 删除客户端加密主密钥 | DROP CLIENT MASTER KEY |
定义列加密密钥
列加密密钥主要用于密态数据库特性中,用来加密数据。列加密密钥定义主要包括创建列加密密钥、轮转加密列加密密钥的客户端主密钥以及删除列加密密钥。所涉及的SQL语句,请参考表3。
| 功能 | 相关SQL |
|---|---|
| 创建列加密密钥 | CREATE COLUMN ENCRYPTION KEY |
| 修改列加密密钥指定的客户端主密钥 | 7.14.173-ALTER COLUMN ENCRYPTION KEY |
| 删列加密密钥 | DROP COLUMN ENCRYPTION KEY |
定义数据库
数据库是组织、存储和管理数据的仓库,而数据库定义主要包括:创建数据库、修改数据库属性,以及删除数据库。所涉及的SQL语句,请参考表5。
| 功能 | 相关SQL |
|---|---|
| 创建数据库 | CREATE DATABASE |
| 修改数据库属性 | ALTER DATABASE |
| 删除数据库 | DROP DATABASE |
定义模式
模式是一组数据库对象的集合,主要用于控制对数据库对象的访问。所涉及的SQL语句,请参考表6。
| 功能 | 相关SQL |
|---|---|
| 创建模式 | CREATE SCHEMA |
| 修改模式属性 | ALTER SCHEMA |
| 删除模式 | DROP SCHEMA |
定义表空间
表空间用于管理数据对象,与磁盘上的一个目录对应。所涉及的SQL语句,请参考表7。
| 功能 | 相关SQL |
|---|---|
| 创建表空间 | CREATE TABLESPACE |
| 修改表空间属性 | ALTER TABLESPACE |
| 删除表空间 | DROP TABLESPACE |
定义表
表是数据库中的一种特殊数据结构,用于存储数据对象以及对象之间的关系。所涉及的SQL语句,请参考表8。
| 功能 | 相关SQL |
|---|---|
| 创建表 | CREATE TABLE |
| 修改表属性 | ALTER TABLE |
| 修改一个或多个表名称 | RENAME TABLE |
| 删除表 | DROP TABLE |
| 根据查询结果创建表 | CREATE TABLE AS |
定义分区表
分区表是一种逻辑表,数据是由普通表存储的,主要用于提升查询性能。所涉及的SQL语句,请参考表9。
| 功能 | 相关SQL |
|---|---|
| 创建分区表 | CREATE TABLE PARTITION |
| 创建分区 | ALTER TABLE PARTITION |
| 修改分区表属性 | ALTER TABLE PARTITION |
| 删除分区 | ALTER TABLE PARTITION |
| 删除分区表 | DROP TABLE |
定义索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。所涉及的SQL语句,请参考表10。
| 功能 | 相关SQL |
|---|---|
| 创建索引 | CREATE INDEX |
| 修改索引属性 | ALTER INDEX |
| 删除索引 | DROP INDEX |
| 重建索引 | REINDEX |
| 在指定的表上创建全局二级索引 | CREATE GLOBAL INDEX |
定义存储过程
存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数(如果该存储过程带有参数)来执行它。所涉及的SQL语句,请参考表11。
| 功能 | 相关SQL |
|---|---|
| 创建存储过程 | CREATE PROCEDURE |
| 删除存储过程 | DROP PROCEDURE |
定义函数
在GaussDB中,它和存储过程类似,也是一组SQL语句集,使用上没有差别。所涉及的SQL语句,请参考表12。
| 功能 | 相关SQL |
|---|---|
| 创建函数 | CREATE FUNCTION |
| 修改函数属性或重编译 | ALTER FUNCTION |
| 删除函数 | DROP FUNCTION |
定义游标
为了处理SQL语句,存储过程线程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化,请参考表13。
| 功能 | 相关SQL |
|---|---|
| 创建游标 | CURSOR |
| DECLARE | |
| 移动游标 | MOVE |
| 关闭游标 | CLOSE |
定义资源池
资源池是负载管理模块使用的系统表,主要用于指定资源管理相关的属性,如控制组。所涉及的SQL语句,请参考表14。
| 功能 | 相关SQL |
|---|---|
| 创建资源池 | CREATE RESOURCE POOL |
| 修改资源池属性 | ALTER RESOURCE POOL |
| 删除资源池 | DROP RESOURCE POOL |
定义聚合函数
| 功能 | 相关SQL |
|---|---|
| 创建一个新的聚合函数 | CREATE AGGREGATE |
| 修改聚合函数 | ALTER AGGREGATE |
| 删除聚合函数 | DROP AGGREGATE |
定义插件扩展
| 功能 | 相关SQL |
|---|---|
| 创建一个新的插件扩展 | CREATE EXTENSION |
NOTICE:
扩展功能为内部使用功能,不建议用户使用。
定义数据类型
| 功能 | 相关SQL |
|---|---|
| 创建一个新的数据类型 | CREATE TYPE |
| 修改数据类型 | ALTER TYPE |
| 删除数据类型 | DROP TYPE |
定义DATABASE LINK对象
DATABASE LINK是可以操作远程数据库对象,所涉及的SQL语句,请参考表18。
| 功能 | 相关SQL |
|---|---|
| 创建一个新的DATABASE LINK对象 | CREATE DATABASE LINK |
| 修改DATABASE LINK对象 | ALTER DATABASE LINK |
| 删除DATABASE LINK对象 | DROP DATABASE LINK |
定义审计策略
| 功能 | 相关SQL |
|---|---|
| 创建统一审计策略 | CREATE AUDIT POLICY |
| 修改统一审计策略 | ALTER AUDIT POLICY |
| 删除一个审计策略 | DROP AUDIT POLICY |
修改指定节点的nodeis_active字段值
修改pgxc_node系统表中指定节点的nodeis_active字段值,请参考ALTER COORDINATOR。
定义目录对象
| 功能 | 相关SQL |
|---|---|
| 创建一个目录对象 | CREATE DIRECTORY |
| 修改对目录对象属性 | ALTER DIRECTORY |
| 删除指定的目录对象 | DROP DIRECTORY |
定义外部数据封装器
| 功能 | 相关SQL |
|---|---|
| 创建外部数据封装器 | CREATE FOREIGN DATA WRAPPER |
| 修改外部数据封装器 | ALTER FOREIGN DATA WRAPPER |
| 删除外部数据封装器 | DROP FOREIGN DATA WRAPPER |
系统表gs_global_config相关SQL
| 功能 | 相关SQL |
|---|---|
| 新增、修改系统表gs_global_config的参数值 | ALTER GLOBAL CONFIGURATION |
| 删除系统表gs_global_config中的参数值 | DROP GLOBAL CONFIGURATION |
| 向系统表gs_global_config中插入一个或者多个弱口令 | CREATE WEAK PASSWORD DICTIONARY |
| 清空系统表gs_global_config中的所有弱口令 | DROP WEAK PASSWORD DICTIONARY |
定义用户组
| 功能 | 相关SQL |
|---|---|
| 创建一个新用户组 | CREATE GROUP |
| 修改一个用户组的属性 | ALTER GROUP |
| 删除用户组 | DROP GROUP |
定义过程语言
| 功能 | 相关SQL |
|---|---|
| 定义一种新的过程语言 | CREATE LANGUAGE |
| 修改一个过程语言的定义 | ALTER LANGUAGE |
| 删除一个过程语言 | DROP LANGUAGE |
定义脱敏策略
| 功能 | 相关SQL |
|---|---|
| 创建脱敏策略 | CREATE MASKING POLICY |
| 修改脱敏策略 | ALTER MASKING POLICY |
| 删除脱敏策略 | DROP MASKING POLICY |
定义物化视图
| 功能 | 相关SQL |
|---|---|
| 创建一个全量物化视图 | CREATE MATERIALIZED VIEW |
| 创建一个增量物化视图 | CREATE INCREMENTAL MATERIALIZED VIEW |
| 更改一个现有物化视图的多个辅助属性 | ALTER MATERIALIZED VIEW |
| 强制删除数据库中已有的物化视图 | DROP MATERIALIZED VIEW |
| 以全量刷新的方式对物化视图进行刷新 | REFRESH MATERIALIZED VIEW |
| 以增量刷新的方式对物化视图进行刷新 | REFRESH INCREMENTAL MATERIALIZED VIEW |
定义节点
| 功能 | 相关SQL |
|---|---|
| 创建一个新的集群节点 | CREATE NODE |
| 修改一个现有节点的定义 | ALTER NODE |
| 删除节点 | DROP NODE |
定义节点组
| 功能 | 相关SQL |
|---|---|
| 创建一个新的集群节点组 | CREATE NODE GROUP |
| 修改一个现有节点组的信息 | ALTER NODE GROUP |
| 删除节点组 | DROP NODE GROUP |
定义资源标签
| 功能 | 相关SQL |
|---|---|
| 创建资源标签 | CREATE RESOURCE LABEL |
| 修改资源标签 | ALTER RESOURCE LABEL |
| 删除资源标签 | DROP RESOURCE LABEL |
定义行访问控制策略
| 功能 | 相关SQL |
|---|---|
| 对表创建行访问控制策略 | CREATE ROW LEVEL SECURITY POLICY |
| 对已存在的行访问控制策略进行修改 | ALTER ROW LEVEL SECURITY POLICY |
| 删除表上某个行访问控制策略 | DROP ROW LEVEL SECURITY POLICY |
定义序列
| 功能 | 相关SQL |
|---|---|
| 向当前数据库增加一个新的序列 | CREATE SEQUENCE |
| 修改一个现有的序列的参数 | ALTER SEQUENCE |
| 从当前数据库里删除序列 | DROP SEQUENCE |
定义外部服务器
| 功能 | 相关SQL |
|---|---|
| 定义一个新的外部服务器 | CREATE SERVER |
| 增加、修改和删除一个现有SERVER的参数 | ALTER SERVER |
| 删除现有的一个数据服务器 | DROP SERVER |
定义同义词对象
| 功能 | 相关SQL |
|---|---|
| 创建一个同义词对象 | CREATE SYNONYM |
| 修改同义词对象的所有者 | ALTER SYNONYM |
| 删除指定的同义词对象 | DROP SYNONYM |
定义触发器
| 功能 | 相关SQL |
|---|---|
| 创建一个触发器 | CREATE TRIGGER |
| 修改触发器名称 | ALTER TRIGGER |
| 删除触发器 | DROP TRIGGER |
定义视图
| 功能 | 相关SQL |
|---|---|
| 创建一个视图 | CREATE VIEW |
| 更改视图的各种辅助属性 | ALTER VIEW |
| 数据库中强制删除已有的视图 | DROP VIEW |
收集统计信息
收集与数据库中普通表内容相关的统计信息,请参考ANALYZE | ANALYSE。
创建同步点
创建一个新集群节点间的同步点,请参考CREATE BARRIER。
创建编码转换
定义一种两个字符集编码之间的新转换,请参考CREATE CONVERSION。
定义模型
| 功能 | 相关SQL |
|---|---|
| 训练机器学习模型并保存模型 | CREATE MODEL |
| 删除一个已训练完成保存的模型对象 | DROP MODEL |
定义安全标签
| 功能 | 相关SQL |
|---|---|
| 创建安全标签 | CREATE SECURITY LABEL |
| 应用更新或取消安全标签 | SECURITY LABEL ON |
| 删除安全标签 | DROP SECURITY LABEL |
导入DATABASE/TABLE
| 功能 | 相关SQL |
|---|---|
| 导入DATABASE的准备阶段 | IMPDP DATABASE CREATE |
| 导入DATABASE的执行阶段 | IMPDP RECOVER |
| 导入表的准备阶段 | IMPDP TABLE PREPARE |
| 导入表的执行阶段 | IMPDP TABLE |
清理回收站
GaussDB提供清理回收站的语句,请参考PURGE。
对表进行聚簇排序
GaussDB支持根据一个索引对表进行聚簇排序的语句,请参考CLUSTER。
定义一个对象的注释
GaussDB支持定义或修改一个对象的注释的语句,请参考COMMENT。
根据查询结果创建新表
GaussDB支持用于根据查询结果创建一个新表,并且将查询到的数据插入到新表的语句,请参考SELECT INTO。
将表恢复到一个早期状态
GaussDB支持在人为操作或应用程序错误时,将表恢复到一个早期状态的语句,请参考TIMECAPSULE TABLE。
清理表数据
GaussDB支持在快速地从表中删除所有行的语句,请参考TRUNCATE。
回收存储空间
GaussDB支持回收表或B-Tree索引中已经删除的行所占据的存储空间的语句,请参考VACUUM。
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…