alter可以用来对已知表进行添加,修改和删除列。
以下是使用alter语句的一些案例:
mysql> alter table t_new add address varchar(50) ;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc t_new;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+
3 rows in set
mysql> alter table t_new add age int after name;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc t_new;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+
mysql> alter table t_new add sex char first;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc t_new;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| sex | char(1) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+
5 rows in set
mysql> desc t_new;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| sex | char(1) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+
5 rows in set
mysql> alter table t_new change name username varchar(50);
Query OK, 1 row affected
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc t_new;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| sex | char(1) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(50) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
5 rows in set
mysql> desc t_new;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| sex | char(1) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(50) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
5 rows in set
mysql> alter table t_new modify address varchar(100);
Query OK, 1 row affected
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc t_new;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| sex | char(1) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(50) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| address | varchar(100) | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+
5 rows in set
mysql> desc t_new;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| sex | char(1) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(50) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| address | varchar(100) | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+
5 rows in set
mysql> alter table t_new drop column address;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc t_new;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| sex | char(1) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(50) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
4 rows in set
mysql> desc t_new;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| sex | char(1) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(50) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
4 rows in set
mysql> alter table t_new modify id int first;
Query OK, 1 row affected
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc t_new;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| sex | char(1) | YES | | NULL | |
| username | varchar(50) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set
mysql> desc t_new;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| sex | char(1) | YES | | NULL | |
| username | varchar(50) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set
mysql> alter table t_new modify sex char(1) after username;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc t_new;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| username | varchar(50) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set