1.回顾--约束的分类:
列级约束: 对一个数据列建立的约束;既可以在列定义时声明,也可以在列定以后声明
表级约束: 对多个数据列建立的约束;只能在列定义后声明
按照功能可将约束分为: 非空约束、主键约束、唯一约束、外键约束、默认约束;
其中,按照参照操作数目的多少来划分,非空约束和默认约束不存在表级约束,剩余三种既可以存在表级约束也可以存在列级约束)
2. 修改数据表:
(1) 添加单列:ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name] ; first: 插入列在第一列, after * :插入列置于指定列的后方, 省略: 插入列位于所有列的最下面
(2) 添加多列: 不能指定位置关系,只能在原来数据表列的下方。ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)
(3)删除列: ALTER TABLE tbl_name DROP [COLUMN] col_name
(4) 添加、删除约束:
(a)添加主键约束(只能有一个): ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
索引类型包括哈希索引和b-tree索引,默认为b-tree索引
(b) 添加唯一约束(可以有多个): ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [index_name] [index_type] (index_col_name,...)
(c) 添加外键约束: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition
(d) 添加或删除默认约束: ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
(e) 删除主键约束: ALTER TABLE tbl_name DROP PRIMARY KEY
(f) 删除唯一约束: ALTER TABLE tbl_name DROP {INDEX | KEY} index_name
删除的是约束,而并非字段
(g) 删除外键约束: ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
(删除FOREIGN KEY; 删除索引INDEX)
(5) 修改列定义:(数据列的名字不存在问题,但是数据列的类型可能存在问题时,也有可能位置上有问题)
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
!!!由大类型修改到小类型有可能造成数据的丢失!!! 例如将SMALLINT UNSIGNED(0~65535) 改成TINYINT UNSIGNED(0~255)
(6) 修改列名称:CHANGE除了可以修改列定义还可以修改列名称
ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name)
(7) 修改数据表:
(a)数据表更名:
方法一: ALTER TABLE tbl_name RENAME [TO | AS] new_tbl_name
方法二: RENAME TABLE tbl_name TO new_tbl_name
[, tbl_name2 TO new_tbl_name2]... (可以为多张数据表更名)
尽量少使用数据列的更名以及数据表的更名: 以后创建了索引或曾经使用过视图或存储过程、表名或列名被引用的情况下,表名列名被修改了可能导致某些视图或存储过程无法正常工作。
转载于: