MySQL中的表并不是从创建之后就不能改变的,我们可以通过后期通过sql语句来修改想要修改的表中的属性,下面我们来一起看一下叭?。
- 修改表名
表名可以在一个数据库中唯一地确定一张表,数据库通过表名来区分不同的表,这也就意味着数据库中不可能存在两个相同名字的表
alter table 旧表名 rename 新表名
- 修改字段的数据类型
alter table 表名 modify 属性名 数据类型;
//该数据类型指的是修改后新的数据类型
- 修改字段名和数据类型
字段名在整张表中也是独一无二的存在,数据库通过比较字段名区分表中不同的字段。
alter table 表名 change 旧属性名 新属性名 新数据类型;
“新数据类型”是必须添加的,倘若不需要修改属性的数据类型,则要将新数据类型设置成与原来一样。 倘若要修改的字段存在约束条件,则字段的约束条件也要后缀在数据类型之后。
这个时候你可能注意到了,modify和change都可以修改字段的数据类型,那它们有什么区别吗???
两者的区别在于:
※ change可以在改变字段数据类型的同时修改字段名,如果要使用change来修改字段数据类型,那么change后面必须跟两个相同的字段名。
※ modify只能修改字段的数据类型。
- 在表中添加字段
//[]内的内容表示可选参数
alter table 表名 add 新属性名 数据类型 [完整性约束条件] [first|after 属性名];
first 作用是将新增加的字段设置为表的第一个属性;
after 属性名 作用是将新增加的字段添加到属性名所指的字段后。
如果在没有指定新增字段的位置,系统默认将新增加的字段设置为表的最后一个字段。
例如:在me表中phone字段后边增加一个有非空约束的adress的字段,sql语句如下:
//我们先查看一下表的结构
mysql> desc me;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| phone | int(11) | NO | | NULL | |
| name | char(4) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
3 rows in set (0.11 sec)
//增加adress字段
mysql> alter table me add adress varchar(20) not null after phone;
Query OK, 0 rows affected (0.92 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc me;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| phone | int(11) | NO | | NULL | |
| adress | varchar(20) | NO | | NULL | |
| name | char(4) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
- 删除字段
一定要删除表中存在的字段!!!
mysql> alter table me drop adress;
Query OK, 0 rows affected (0.89 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc me;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| phone | int(11) | NO | | NULL | |
| name | char(4) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)
- 修改字段的排列顺序
alter table 表名 modify 属性名1 数据类型 first|after 属性名2
“属性名1” - - - 指需要修改位置的字段参数。
“数据类型” - - - 指属性名1参数的数据类型。
“first” - - - 指定位置为表的第一个位置。
“after 属性名2” - - - 指定属性名1插入在属性名2之后。
- 删除表的外键约束
alter table 表名 drop foreign key 外键别名;