Mysql 更改表结构--增加,修改,删除
Mysql 更改表结构--增加,修改,删除
添加列:
alter table tablename add column datatype [primary key/default/not null/...] after 'columnX' //在colunmX列后增加字段
例:在student表中添加一个年级(grade)字段,类型为varchar,不能为null,在age字段后面
alter table student add grade varchar(2) not null after age;
添加后,表结构如下所示:
删除列:
alter table tablename drop column;
例:将student表中的grade列删除
alter table student drop grade;
修改后,表结构如下:
修改列--重命名列 / 更改列的数据类型:
alter table 表名 change 原列名 新列名 数据类型 [primary key/default/not null/...];(change 既能重命名列,也可以更改列的数据类型)
alter table 表名 modify 列名 数据类型
更改列名
例:将gender更名为sex
alter table student change gender sex varchar(10);
修改后,表结构如下:
更改列数据类型
例:将grade列数据类型更改为int型
alter table student change gender gender int(2);
修改后,表结构如下:
例:将grade列数据类型更改为varchar型
alter table student modify grade varchar(2);
修改表名:
alter table 表名 rename to 新表名;
例:将student表名更改为students
alter table student rename to students;
修改表后,表结构如下:
添加约束:
mysql常用五类约束类型:
not null:非空约束,指定某列不为空
unique: 唯一约束,指定某列和几列组合的数据不能重复
primary key:主键约束,指定某列的数据不能重复、唯一
foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据
check:检查,指定一个表达式,用于检验指定数据
注意: MySQL不支持check约束,但可以使用check约束,而没有任何效果;
alter table 表名 add [constraint 约束名] 约束类型(column1,[column2,column3,...]);
例:给student表添加主键name;
alter table student add primary key(name);
删除约束:
alter table 表名 drop 约束;
例: 删除student表的主键约束
alter table student add primary key;
修改表后,表结构如下:
注:
1. 删除唯一性约束,语法必须如下:
alter table 表名 drop index 约束名;
若不加index,无法删除唯一性约束。
例:给students表的name列添加唯一性约束,然后删除。
alter table students add constraint unique_name UNIQUE(name);
alter table students drop unique_name;(报错,无法删除唯一性约束)
alter table students drop index unique_name;(正确)
修改后,表结构如下:
2.删除主键约束:
删除主键约束时,无法使用约束名来删除主键约束。
例:对students表name列增加主键约束,然后删除
alter table students add constraint primary_key_name primary key(name);
删除主键:
alter table students drop primary_key_name;(错误,无法删除)
alter table students drop primary key;(删除成功)