YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
SQL 参考
- ABORT
- ALTER_DATABASE
- ALTER_EXTENSION
- ALTER_EXTERNAL_TABLE
- ALTER_FOREIGN_DATA_WRAPPER
- ALTER_FOREIGN_TABLE
- ALTER_FUNCTION
- ALTER_INDEX
- ALTER_RESOURCE_GROUP
- ALTER_RESOURCE_QUEUE
- ALTER_ROLE
- ALTER_RULE
- ALTER_SCHEMA
- ALTER_SEQUENCE
- ALTER_SERVER
- ALTER_TABLE
- ALTER_TABLESPACE
- ALTER_TYPE
- ALTER_USER_MAPPING
- ALTER_VIEW
- ANALYZE
- BEGIN
- CHECKPOINT
- COMMIT
- COPY
- CREATE_DATABASE
- CREATE_EXTENSION
- CREATE_EXTERNAL_TABLE
- CREATE_FOREIGN_DATA_WRAPPER
- CREATE_FOREIGN_TABLE
- CREATE_FUNCTION
- CREATE_INDEX
- CREATE_RESOURCE_GROUP
- CREATE_RESOURCE_QUEUE
- CREATE_ROLE
- CREATE_RULE
- CREATE_SCHEMA
- CREATE_SEGMENT_SET
- CREATE_SEQUENCE
- CREATE_SERVER
- CREATE_TABLE
- CREATE_TABLE_AS
- CREATE_TABLESPACE
- CREATE_TYPE
- CREATE_USER_MAPPING
- CREATE_VIEW
- DELETE
- DROP_DATABASE
- DROP_EXTENSION
- DROP_EXTERNAL_TABLE
- DROP_FOREIGN_DATA_WRAPPER
- DROP_FOREIGN_TABLE
- DROP_FUNCTION
- DROP_INDEX
- DROP_RESOURCE_GROUP
- DROP_RESOURCE_QUEUE
- DROP_ROLE
- DROP_RULE
- DROP_SCHEMA
- DROP_SEGMENT_SET
- DROP_SEQUENCE
- DROP_SERVER
- DROP_TABLE
- DROP_TABLESPACE
- DROP_TYPE
- DROP_USER_MAPPING
- DROP_VIEW
- END
- EXPLAIN
- GRANT
- INSERT
- LOAD
- LOCK
- REINDEX
- RELEASE_SAVEPOINT
- RESET
- REVOKE
- ROLLBACK_TO_SAVEPOINT
- ROLLBACK
- SAVEPOINT
- SELECT INTO
- SET ROLE
- SET TRANSACTION
- SET
- SHOW
- START TRANSACTION
- TRUNCATE
- UPDATE
- VACUUM
CREATE SCHEMA
定义一个新的模式。
概要
CREATE SCHEMA schema_name [AUTHORIZATION username]
[schema_element [ ... ]]
CREATE SCHEMA AUTHORIZATION rolename [schema_element [ ... ]]
CREATE SCHEMA IF NOT EXISTS schema_name [ AUTHORIZATION user_name ]
CREATE SCHEMA IF NOT EXISTS AUTHORIZATION user_name
描述
CREATE SCHEMA将新模式加入当前数据库。模式名称必须不同于当前数据库中任何现有模式的名称。
模式本质上是一个名称空间:它包含命名对象(表,数据类型,函数和运算符),其名称可能与其他模式中存在的其他对象的名称重复。通过使用模式名称作为前缀来限定其名称,或设置包含所需模式的搜索路径,可以访问命名对象。
(可选)CREATE SCHEMA可以包含子命令以在新模式中创建对象。 子命令与创建模式后发出的单独命令基本相同,不同之处在于,如果使用AUTHORIZATION子句,则所有创建的对象将归该角色所有。
参数
schema_name
- 要创建的模式的名称。如果省略,则将用户名用作模式名称。该名称不能以pg_开头,因为此类名称是为系统catalog模式保留的。
user_name
- 拥有模式的角色的名称。如果省略,则默认为执行命令的角色。只有超级用户可以创建除自己以外的角色所有的模式。
schema_element
- 定义要在模式内创建的对象的SQL语句。当前,在CREATE SCHEMA中,只有CREATE TABLE,CREATE VIEW,CREATE INDEX,CREATE SEQUENCE,CREATE TRIGGER和GRANT被接受为子句。创建模式后,可以在单独的命令中创建其他类型的对象。注意:YMatrix 数据库不支持触发器。
IF NOT EXISTS
- 如果已经存在相同名称的模式,则不执行任何操作(发出通知除外)。使用此选项时,不能包含schema_element子命令。
注解
要创建模式,调用用户必须对当前数据库具有CREATE特权,或者必须是超级用户。
示例
创建一个模式:
CREATE SCHEMA myschema;
为角色joe创建一个模式(该模式也将命名为joe):
CREATE SCHEMA AUTHORIZATION joe;
创建一个名为test的模式,该模式将由用户joe拥有,除非已经有一个名为test的模式。 (joe是否拥有预先存在的模式是没有影响的。)
CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe;
兼容性
SQL标准允许在CREATE SCHEMA中使用DEFAULT CHARACTER SET子句, 以及比 YMatrix 数据库目前接受的子命令类型更多的子命令类型。
SQL标准指定CREATE SCHEMA中的子命令可以按任何顺序出现。当前的 YMatrix 数据库实现并未处理子命令中所有前向引用的情况;有时可能需要对子命令重新排序,以避免前向引用。
根据SQL标准,模式的所有者始终拥有其中的所有对象。 YMatrix 数据库允许模式包含模式所有者以外的用户拥有的对象。仅当模式所有者将模式的CREATE特权授予其他人,或者超级用户选择在其中创建对象时,才会发生这种情况。
IF NOT EXISTS选项是 YMatrix 数据库扩展。