CREATE SCHEMA
功能描述
CREATE SCHEMA
语法用于创建模式。访问命名对象时可以使用模式名作为前缀进行访问,如果无模式名前缀,则访问当前模式下的命名对象。创建命名对象时也可用模式名作为前缀修饰。
本文档只介绍CREATE SCHEMA语句兼容MySQL的特性,原Vastbase的CREATE SCHEMA语法未做删除和修改,详见CREATE SCHEMA。
Vastbase在MySQL兼容模式下,支持CREATE SCHEMA
如下特性用法:
创建模式时指定默认字符集和字符序
语法格式
CREATE SCHEMA schema_name
[ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ];
注意事项
该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。
参数说明
schema_name
模式名称。
取值范围:字符串,要符合标识符的命名规范。
模式名不能和当前数据库里其他的模式重名。 模式的名称不可以
pg_
开头。default_charset
指定模式的默认字符集,单独指定时会将模式的默认字符序设置为指定的字符集的默认字符序。
default_collation
指定模式的默认字符序,单独指定时会将模式的默认字符集设置为指定的字符序对应的字符集。
如果当前搜索路径上的模式中存在同名对象时,需要明确指定引用对象所在的模式。可以通过命令
SHOW SEARCH_PATH;
来查看当前搜索路径上的模式。
表1 B模式(即sql_compatibility = 'B')下支持的字符集和字符序介绍
字符序名称 | 对应的字符集 | 描述 |
---|---|---|
utf8mb4_general_ci | utf8mb4(即utf8) | 使用通用排序规则,不区分大小写。 |
utf8mb4_unicode_ci | utf8mb4(即utf8) | 使用通用排序规则,不区分大小写。 |
utf8mb4_bin | utf8mb4(即utf8) | 使用通用排序规则,不区分大小写。 |
binary | binary | 使用二进制排序规则。 |
utf8_general_ci | utf8 | 使用通用排序规则,不区分大小写。 |
utf8_unicode_ci | utf8 | 使用通用排序规则,不区分大小写。 |
utf8_bin | utf8 | 使用通用排序规则,不区分大小写。 |
示例
1、创建一个角色role1。
CREATE ROLE role1 IDENTIFIED BY 'Vast@123456';
2、为用户role1创建一个同名schema,子命令创建的表films和winners的拥有者为role1。
CREATE SCHEMA AUTHORIZATION role1
CREATE TABLE films (title text, release date, awards text[])
CREATE VIEW winners AS
SELECT title, release FROM films WHERE awards IS NOT NULL;
3、创建一个模式ds,指定schema的默认字符集为utf8mb4,默认字符序为utf8mb4_bin。
CREATE SCHEMA ds CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
4、删除schema和用户。
DROP SCHEMA role1 CASCADE;
DROP USER role1 CASCADE;
支持IF NOT EXISTS选项
语法格式
CREATE SCHEMA [ IF NOT EXISTS ] schema_name
[ AUTHORIZATION user_name ] [WITH BLOCKCHAIN] [ schema_element [ ... ] ];
参数说明
IF NOT EXISTS
如果已经存在相同名称的模式名称,不会抛出一个错误,而会发出一个通知,告知模式已存在。
示例
使用IF NOT EXISTS
选项创建一个SCHEMA 名称为s1。
CREATE SCHEMA IF NOT EXISTS s1 ;