重命名
- ALTER TABLE tbl_name RENAME [TO/AS] new_name
mysql> ALTER TABLE user11 RENAME to user10;
Query OK, 0 rows affected (0.20 sec)
mysql> SHOW CREATE TABLE user10;
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user10 | CREATE TABLE `user10` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` char(32) NOT NULL,
`age` tinyint(3) unsigned DEFAULT '18',
`addr` varchar(50) NOT NULL DEFAULT 'NY',
`email` varchar(50) NOT NULL DEFAULT 'zhouruc16@gmail.com',
`sex` enum('MALE','FEMALE','UNKNOWN') NOT NULL DEFAULT 'UNKNOWN',
`salary` float(6,2) DEFAULT NULL,
`regtime` int(10) unsigned DEFAULT NULL,
`face` char(100) NOT NULL DEFAULT 'default.jpg',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
- RENAME TABLE tbl_name1 to tbl_name2、
mysql> CREATE TABLE IF NOT EXISTS user10(
-> id INT UNSIGNED KEY AUTO_INCREMENT,
-> username VARCHAR(20) NOT NULL,
-> password CHAR(32) NOT NULL,
-> age TINYINT UNSIGNED DEFAULT 18,
-> addr VARCHAR(50) NOT NULL DEFAULT 'NY',
-> email VARCHAR(50) NOT NULL DEFAULT 'zhouruc16@gmail.com',
-> sex ENUM('MALE','FEMALE','UNKNOWN') NOT NULL DEFAULT 'UNKNOWN',
-> salary FLOAT(6,2),
-> regtime INT UNSIGNED,
-> face CHAR(100) NOT NULL DEFAULT 'default.jpg'
-> );
Query OK, 0 rows affected (0.27 sec)
mysql> RENAME TABLE user10 to user11;
Query OK, 0 rows affected (0.14 sec)
mysql> SHOW CREATE TABLE user11;
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user11 | CREATE TABLE `user11` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` char(32) NOT NULL,
`age` tinyint(3) unsigned DEFAULT '18',
`addr` varchar(50) NOT NULL DEFAULT 'NY',
`email` varchar(50) NOT NULL DEFAULT 'zhouruc16@gmail.com',
`sex` enum('MALE','FEMALE','UNKNOWN') NOT NULL DEFAULT 'UNKNOWN',
`salary` float(6,2) DEFAULT NULL,
`regtime` int(10) unsigned DEFAULT NULL,
`face` char(100) NOT NULL DEFAULT 'default.jpg',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
删除与添加字段
- 添加字段
– 一次添加一个字段
ALTER TABLE tbl_name ADD 字段名称 字段类型 [完整性约束条件] [FIRST/AFTER 字段名称]:
还是以上述表格为例子,添加身份证号card CHAR(18)并且非空和唯一, 这里我们希望他添加在id后
mysql> ALTER TABLE user10 ADD card CHAR(18) NOT NULL UNIQUE;
Query OK, 0 rows affected (1.06 sec)
– 一次添加多个字段:
ALTER TABLE tbl_name
ADD test1,
ADD test2,
ADD test3
…;
mysql> ALTER TABLE user10
-> ADD test1 INT after id,
-> ADD test2 SET('A','B','C') NOT NULL FIRST,
-> ADD test3 FLOAT(6,2) UNSIGNED;
Query OK, 0 rows affected (1.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC user10;
+----------+---------------------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------------------+------+-----+---------------------+----------------+
| test2 | set('A','B','C') | NO | | NULL | |
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| test1 | int(11) | YES | | NULL | |
| username | varchar(20) | NO | | NULL | |
| password | char(32) | NO | | NULL | |
| age | tinyint(3) unsigned | YES | | 18 | |
| addr | varchar(50) | NO | | NY | |
| email | varchar(50) | NO | | zhouruc16@gmail.com | |
| sex | enum('MALE','FEMALE','UNKNOWN') | NO | | UNKNOWN | |
| salary | float(6,2) | YES | | NULL | |
| regtime | int(10) unsigned | YES | | NULL | |
| face | char(100) | NO | | default.jpg | |
| card | char(18) | NO | UNI | NULL | |
| test3 | float(6,2) unsigned | YES | | NULL | |
+----------+---------------------------------+------+-----+---------------------+----------------+
14 rows in set (0.00 sec)
- 删除字段
– 一次删除一个字段
ALTER TABLE tbl_name DROP 字段名称
– 一次删除多个字段
mysql> ALTER TABLE user10 DROP test3;
Query OK, 0 rows affected (1.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC user10;
+----------+---------------------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------------------+------+-----+---------------------+----------------+
| test2 | set('A','B','C') | NO | | NULL | |
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| test1 | int(11) | YES | | NULL | |
| username | varchar(20) | NO | | NULL | |
| password | char(32) | NO | | NULL | |
| age | tinyint(3) unsigned | YES | | 18 | |
| addr | varchar(50) | NO | | NY | |
| email | varchar(50) | NO | | zhouruc16@gmail.com | |
| sex | enum('MALE','FEMALE','UNKNOWN') | NO | | UNKNOWN | |
| salary | float(6,2) | YES | | NULL | |
| regtime | int(10) unsigned | YES | | NULL | |
| face | char(100) | NO | | default.jpg | |
| card | char(18) | NO | UNI | NULL | |
+----------+---------------------------------+------+-----+---------------------+----------------+
ALTER TABLE tbl_name
DROP test1,
DROP test2,
DROP test3,
…;
– 也可以同时删除和添加字段
mysql> ALTER TABLE user10
-> DROP test1,
-> DROP test2,
-> ADD test5 INT NOT NULL FIRST;
Query OK, 0 rows affected (0.89 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC user10;
+----------+---------------------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------------------+------+-----+---------------------+----------------+
| test5 | int(11) | NO | | NULL | |
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(20) | NO | | NULL | |
| password | char(32) | NO | | NULL | |
| age | tinyint(3) unsigned | YES | | 18 | |
| addr | varchar(50) | NO | | NY | |
| email | varchar(50) | NO | | zhouruc16@gmail.com | |
| sex | enum('MALE','FEMALE','UNKNOWN') | NO | | UNKNOWN | |
| salary | float(6,2) | YES | | NULL | |
| regtime | int(10) unsigned | YES | | NULL | |
| face | char(100) | NO | | default.jpg | |
| card | char(18) | NO | UNI | NULL | |
+----------+---------------------------------+------+-----+---------------------+----------------+
12 rows in set (0.00 sec)