mysql 基本命令整理(2)-修改篇
1、在test_tb2数据库中新建两个数据表 offices 和 employees,如下:
mysql> DESC offices;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| officeCode | int(10) | NO | PRI | NULL | |
| city | varchar(50) | NO | | NULL | |
| address | varchar(50) | YES | | NULL | |
| country | varchar(50) | NO | | NULL | |
| postlCode | varchar(15) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
mysql> DESC employees;
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| employeeNumber | int(11) | NO | PRI | NULL | auto_increment |
| lastName | varchar(50) | NO | | NULL | |
| firstName | varchar(50) | NO | | NULL | |
| mobile | varchar(25) | YES | UNI | NULL | |
| officeCode | int(10) | NO | | NULL | |
| jobTitle | varchar(50) | NO | | NULL | |
| birth | datetime | NO | | NULL | |
| note | varchar(255) | YES | | NULL | |
| sex | varchar(5) | YES | | NULL | |
+----------------+--------------+------+-----+---------+----------------+
2、修改字段的位置:
mysql> ALTER TABLE employees MODIFY mobile VARCHAR(25) after officeCode;
3、修改字段的名称:
mysql> ALTER TABLE employees CHANGE birth employee_birth DATETIME;
4、修改字段的数据类型及非空约束
mysql> ALTER TABLE employees MODIFY sex VARCHAR(2) NOT NULL;
5、删除字段
mysql> ALTER TABLE employees DROP note;
6、增加字段名
mysql> ALTER TABLE employees ADD favoriate_activity VARCHAR(100);
7、删除表
(1)mysql> DROP TABLE offices;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constrai
nt fails
直接删除数据表,会出现错误,因为子表employees的外键约束关联了父表offices的,要删除父表必须先要解除和子表的关系。
(2)解除父表和子表之间的关系
mysql> ALTER TABLE employees DROP FOREIGN KEY fk_emp_off(外键名称);
(3)再次删除
mysql> DROP TABLE offices;
Query OK, 0 rows affected (0.01 sec)
(4)表删除操作是把表的定义和表中的数据一起删除,并且在执行删除操作时,不会有任何确认信息的提示,因此执行删除操作时,应当慎重再慎重。
8、总结:表的字段基本操作就是增(ADD) 删(DROP) 改:修改(MODIFY )和 改变CHANGE)
CHANGE 改变的是字段的名称 、数据类型、注释
MODIFY 不可以改变字段的名称
所以:(1)既更改列名也更改类型,用CHANGE
(2)只修改类型,用MODIFY