阅读151 返回首页    go 阿里云


DDL语法__用户指南_云数据库 PetaData-阿里云

  • DDL必须通过PetaData的Web管理控制台来执行,客户端暂时不可直接执行DDL语句(后续开放支持);
  • DDL当前仅支持表和索引方面的操作;
  • DDL执行期间,事务隔离级别为读未提交;

创建表


i. 标准语法如下:

  1. CREATE TABLE [ IF NOT EXISTS ] table_name
  2. ( column_name data_type [column_attributes] [ column_constraints ] | table_constraints
  3. [, ... ] )
  4. [table_attribute]

其中:

  1. table_name表名不得超过64字节,只能使用英文字母、阿拉伯数字、下划线’_’;
  2. column_name列名不得超过64字节,只能使用英文字母、阿拉伯数字、下划线’_’;
  3. 最多支持512个列;
  4. 一行数据的长度不得超过16M;
  5. 表名和列名不得选用如下关键字,如果必须使用,则在使用时必须为表名和列名加入反引号(`)(注意不是单引号'):
  6. truncate | begin | commit | rollback | use | start | transaction | names | autocommit | committed | isolation | connection | level | query | repeatable | serializable | uncommitted
  7. 例如:使用时:select `begin` from `commit`

ii. data_type列类型目前支持:

  1. SMALLINT (INT2)
  2. INTEGER (INT4)
  3. BIGINT (INT8)
  4. DECIMAL (NUMERIC)
  5. FLOAT (FLOAT4)
  6. DOUBLE (FLOAT8)
  7. BOOLEAN (BOOL)
  8. CHAR (INT4)
  9. VARCHAR (INT4)
  10. DATE
  11. TIME
  12. DATETIME
  13. TIMESTAMP
  14. TEXT

iii. 列属性如下:

  1. [ DEFAULT default_expr ]
  2. [ COMMENT column_comment ]

其中:列注释column_comment只能使用英文字符;

iv. 列约束如下:

  1. [ { NOT NULL | NULL } ]
  2. [ { [ UNIQUE | PRIMARY ] KEY } ]
  3. [ AUTO_INCREMENT ]

其中:AUTO_INCREMENT自增字段指明该列为唯一值,该列必须为BIGINT类型,分布式数据库会自动为该列生成一个64位的唯一值,且该字段将自动成为主键,对于表的字段,若用户插入该字段,那么数据库将存储用户提供的值,用户需要自行保证该值的唯一性,否则可能在多个分区上出现相同的值,引发冲突;若用户插入NULL,或者不插入该字段,那么数据库将为用户生成该字段的值,数据库将自行保证该值的唯一性;

v. 表约束如下:

  1. [ KEY ( column_name [, ... ] ) ]
  2. [ UNIQUE KEY ( column_name [, ... ] ) ]
  3. [ PRIMARY KEY ( column_name [, ... ] ) ]

其中:用户的表必须指定一个主键,否则在迁入数据时将出现重复;

vi. 表属性如下:

  1. [ ENGINE = { InnoDB | TokuDB } ]
  2. [ DEFAULT CHARSET = table_charset ]
  3. [ COMMENT table_comment ]

其中:

  1. 当前用户的表支持InnoDB和TokuDB存储引擎,但是不同的产品形态下,默认的存储引擎是不同的,因此建议用户不填写该属性;
  2. 表注释table_comment只能使用英文字符;

vii. 字符集table_charset限制:

  1. 当前支持常用的字符集,包括utf8、gbk等,但不支持utf8mb4等超宽字符集;
  2. 用户必须保证在任何场合下都试用相同的字符集,否则会产生混乱的结果;
  3. 不支持用户自定义的字符集;
  4. 不管用户的数据表是何种字符集,对于order by、group by等从句,以及count、sum、min、max等函数,其比较和聚合依赖于utf8字符集;

viii. 建表有二种分区方式,分别为:

  1. 分区表:按照用户指定的分区键,将数据按照某种算法(当前仅支持哈希算法)分散到各个分区中,对于大规模的数据表适用;

    ( 当前仅支持一个列作为表的分区键,且该列的数据类型只能为整数(SMALLINT,INTEGER,BIGINT)或字符型(CHAR,VARCHAR)中的一种;暂不支持多列组成的联合分区键。)

  2. 广播表:不进行任何的数据划分,但是将更新递送到所有分区上,要求用户的所有更新语句不得有“库名.表名”的形式,对于小规模且必须存在join的表使用;PetaData目前暂未开放创建广播表

ix. 不会对表进行如下的约束检查:

  1. 唯一性,允许用户建立主键和唯一性索引,但是仅作提示作用,仅对自增主键保证唯一性;
  2. 外键
  3. 检查和排外约束;

x. 系统库和系统表:

目前并未开放任何系统库和系统表,包括information_schema等;

修改表定义


标准语法如下:

  1. ALTER TABLE table_name [alter_specification [, alter_specification] ...]
  1. alter_specification:
  2. | ADD [COLUMN] column_name column_definition[, column_name column_definition ...]
  3. | CHANGE [COLUMN] old_column_name new_column_name column_definition
  4. | MODIFY [COLUMN] column_name column_definition
  5. | DROP [COLUMN] column_name
  1. column_definition:
  2. data_type [column_attributes] [ column_constraints ]

其中:

  1. ADD [COLUMN]用于为表增加新列;
  2. CHANGE [COLUMN]用于修改表的旧列,允许修改列名;
  3. MODIFY [COLUMN]用于修改表的旧列,不允许修改列名;
  4. DROP [COLUMN]用于删除表的列;
  5. 支持增加和修改到的列定义,与CREATE TABLE语法相同;
  6. 支持在一个表定义变更语句中,指明对多个列的变更;

创建/删除/修改索引


标准语法如下:

  1. CREATE [UNIQUE] INDEX index_name ON table_name (index_col_name,...)
  1. DROP INDEX index_name ON table_name
  1. ALTER TABLE table_name
  2. | ADD {INDEX|KEY} [index_name] (index_column_name,...)
  3. | ADD UNIQUE [INDEX|KEY] [index_name] (index_column_name,...)
  4. | DROP {INDEX|KEY} index_name
  1. index_column_name:
  2. column_name [(length)] [ASC | DESC]

其中:

  1. CREATE INDEX语法与ALTER TABLE table_name ADD INDEX语法都能为表新增索引;
  2. DROP INDEX语法与ALTER TABLE DROP INDEX语法都能为表删除索引;
  3. 索引可以对其引用的列指明按照升序或降序排序;

重命名表


标准语法如下:

  1. RENAME TABLE table_name TO new_table_name

其中:

  1. 目前不支持通过 ALTER TABLE table_name RENAME [TO|AS] new_tbl_name 语法变更表名;
  2. 表名变更过程中不得访问该表;

其他说明


  1. 不支持add column before|after XXXXXX;
  2. 不支持truncate table XXXXXX (truncate必须通过管理控制台操作执行);
  3. 不支持的高级特性:
  4. 不支持表空间;
  5. 不支持MySQL中关于分区表的语法;
  6. 不支持存储过程和用户自定义函数;
  7. 不支持触发器;
  8. 不支持event
  9. 不支持游标;

最后更新:2016-11-23 16:03:54

  上一篇:go 数据访问__快速入门_云数据库 PetaData-阿里云
  下一篇:go DML语法__用户指南_云数据库 PetaData-阿里云