閱讀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-阿裏雲