ALTER TABLE
语法说明
ALTER TABLE 用于修改现有数据表结构。
语法结构
1. ALTER TABLE tbl_name
2. [alter_option [, alter_option] ...]
4. alter_option: {
5. table_options
6. | ADD [COLUMN] col_name column_definition
7. [FIRST | AFTER col_name]
8. | ADD [COLUMN] (col_name column_definition,...)
9. | ADD {[INDEX | KEY] [index_name]
10. [index_option] ...
11. | ADD [CONSTRAINT] UNIQUE [INDEX | KEY]
12. [index_name][index_option] ...
13. | ADD [CONSTRAINT] FOREIGN KEY
14. [index_name] (col_name,...)
15. reference_definition
16. }
17. | ALTER INDEX index_name {VISIBLE | INVISIBLE}
18. | DROP [COLUMN] col_name
19. | DROP {INDEX | KEY} index_name
20. | DROP FOREIGN KEY fk_symbol
21. | RENAME [TO | AS] new_tbl_name
22. }
24. key_part: {col_name [(length)] | (expr)} [ASC | DESC]
25. index_option: {
26. COMMENT[=]'string'
27. }
28. table_options:
29. table_option [[,] table_option] ...
30. table_option: {
31. COMMENT [=] 'string'
32. }
语法释义
下面是各个参数的释义:
ALTER TABLE tbl_name:表示修改名为tbl_name的表。-
alter_option:表示可以执行一个或多个更改选项,用逗号分隔。 -
table_options:用于设置或修改表的选项,例如表的注释(COMMENT)。 ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]:在表中添加一个新列,可以指定新列插入的位置(在某列之前或之后)。ADD [COLUMN] (col_name column_definition,...):同时添加多个新列。ADD {[INDEX | KEY] [index_name] [index_option] ...:添加一个索引,可以指定索引名和索引选项(例如,注释)。ADD [CONSTRAINT] UNIQUE [INDEX | KEY] [index_name][index_option] ...:添加一个 UNIQUE 约束或 UNIQUE 索引。ADD [CONSTRAINT] FOREIGN KEY [index_name] (col_name,...) reference_definition:添加一个 FOREIGN KEY 约束。ALTER INDEX index_name {VISIBLE | INVISIBLE}:更改索引的可见性。DROP [COLUMN] col_name:删除一个列。DROP {INDEX | KEY} index_name:删除一个索引。DROP FOREIGN KEY fk_symbol:删除一个 FOREIGN KEY 约束。RENAME [TO | AS] new_tbl_name:重命名整个表。key_part:表示索引的组成部分,可以使用列名(在创建一个文本列的索引时,你可以为索引指定一个长度,字符长度可变。如果您在创建索引时使用列名且不指定长度,索引将会使用整个列的值作为索引组成部分。这在某些情况下可能导致性能降低,特别是在处理较大文本列或二进制数据列时。对于较小的数据类型,例如整数或日期,通常不需要指定长度。)。index_option:表示索引的选项,例如注释(COMMENT)。table_options:表示表的选项,如表的注释(COMMENT)。table_option:具体的表选项,例如注释(COMMENT)。
示例
1. -- 创建 f1 表,包含两个整数列:fa(主键)和 fb(具有唯一约束的键)
2. CREATE TABLE f1(fa INT PRIMARY KEY, fb INT UNIQUE KEY);
3. -- 创建 c1 表,包含两个整数列:ca 和 cb
4. CREATE TABLE c1 (ca INT, cb INT);
5. -- 为 c1 表添加一个名为 ffa 的外键约束,将 c1 表的 ca 列与 f1 表的 fa 列相关联
6. ALTER TABLE c1 ADD CONSTRAINT ffa FOREIGN KEY (ca) REFERENCES f1(fa);
7. -- 向 f1 表插入一条记录:(2, 2)
8. INSERT INTO f1 VALUES (2, 2);
9. -- 向 c1 表插入一条记录:(1, 1)
10. INSERT INTO c1 VALUES (1, 1);
11. -- 向 c1 表插入一条记录:(2, 2)
12. INSERT INTO c1 VALUES (2, 2);
13. -- 从 c1 表中选择所有记录,并按 ca 列排序
14. mysql> select ca, cb from c1 order by ca;
15. +------+------+
16. | ca | cb |
17. +------+------+
18. | 2 | 2 |
19. +------+------+
20. 1 row in set (0.01 sec)
21. -- 从 c1 表中删除名为 ffa 的外键约束
22. ALTER TABLE c1 DROP FOREIGN KEY ffa;
23. -- 向 c1 表插入一条记录:(1, 1)
24. INSERT INTO c1 VALUES (1, 1);
25. -- 从 c1 表中选择所有记录,并按 ca 列排序
26. mysql> select ca, cb from c1 order by ca;
27. +------+------+
28. | ca | cb |
29. +------+------+
30. | 1 | 1 |
31. | 2 | 2 |
32. +------+------+
33. 2 rows in set (0.01 sec)
限制
MatrixOne 当前仅支持 ALTER INDEX index_name {VISIBLE | INVISIBLE} 语法。
