mysql 修改表结构操作
 
使用 【desc 表名】查看表结构
1、mysql > alter table passwd add id int(3) not null auto_increment primary  key not null first ;
      在字段的上面添加一个新的字段。需要关键字 first
mysql> desc passwd ;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | char(30)    | NO   | MUL | NULL    |       |
| pass     | char(1)     | NO   |     | NULL    |       |
| uid      | int(5)      | NO   |     | NULL    |       |
| gid      | int(5)      | NO   |     | NULL    |       |
| common   | varchar(50) | YES  |     | NULL    |       |
| homedir  | char(50)    | YES  |     | NULL    |       |
| shell    | char(50)    | NO   |     | NULL    |       |

mysql> alter table passwd add id int(3) not null auto_increment primary  key not null first ;
Query OK, 37 rows affected (0.04 sec)
Records: 37  Duplicates: 0  Warnings: 0
mysql> desc passwd ;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(3)      | NO   | PRI | NULL    | auto_increment |
| username | char(30)    | NO   | MUL | NULL    |                |
| pass     | char(1)     | NO   |     | NULL    |                |
| uid      | int(5)      | NO   |     | NULL    |                |
| gid      | int(5)      | NO   |     | NULL    |                |
| common   | varchar(50) | YES  |     | NULL    |                |
| homedir  | char(50)    | YES  |     | NULL    |                |
| shell    | char(50)    | NO   |     | NULL    |                |
2、在指定的位置添加一个新的字段
   在id字段后添加一个新的字段date
   mysql> alter table passwd add date year after id ;   需要用到after关键字 
mysql> alter table passwd add date year after id ;
Query OK, 37 rows affected (0.01 sec)
Records: 37  Duplicates: 0  Warnings: 0
mysql> desc passwd
    -> ;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(3)      | NO   | PRI | NULL    | auto_increment |
| date     | year(4)     | YES  |     | NULL    |                |
| username | char(30)    | NO   | MUL | NULL    |                |
| pass     | char(1)     | NO   |     | NULL    |                |
3、默认添加在最后面.
mysql> alter table passwd add QQ int(16) ;
mysql> alter table passwd add QQ int(16) ;
Query OK, 37 rows affected (0.01 sec)
Records: 37  Duplicates: 0  Warnings: 0
mysql> desc passwd ;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(3)      | NO   | PRI | NULL    | auto_increment |
| date     | year(4)     | YES  |     | NULL    |                |
| username | char(30)    | NO   | MUL | NULL    |                |
| pass     | char(1)     | NO   |     | NULL    |                |
| uid      | int(5)      | NO   |     | NULL    |                |
| gid      | int(5)      | NO   |     | NULL    |                |
| common   | varchar(50) | YES  |     | NULL    |                |
| homedir  | char(50)    | YES  |     | NULL    |                |
| shell    | char(50)    | NO   |     | NULL    |                |
| QQ       | int(16)     | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
10 rows in set (0.00 sec)
 
4、删除表结构
    mysql> alter table passwd drop date ;
mysql> desc passwd ;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(3)      | NO   | PRI | NULL    | auto_increment |
| date     | year(4)     | YES  |     | NULL    |                |
| username | char(30)    | NO   | MUL | NULL    |                |
| shell    | char(50)    | NO   |     | NULL    |                |
| QQ       | int(16)     | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
mysql> alter table passwd drop date ;
Query OK, 37 rows affected (0.02 sec)
Records: 37  Duplicates: 0  Warnings: 0
mysql> desc passwd ;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(3)      | NO   | PRI | NULL    | auto_increment |
| username | char(30)    | NO   | MUL | NULL    |                |
| shell    | char(50)    | NO   |     | NULL    |                |
| QQ       | int(16)     | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
5、修改字段类型
mysql> alter table passwd modify QQ int(11) not null ;   修改passwd表的QQ字段。
mysql> desc passwd ;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(3)      | NO   | PRI | NULL    | auto_increment |
| username | char(30)    | NO   | MUL | NULL    |                |
| shell    | char(50)    | NO   |     | NULL    |                |
| QQ       | int(16)     | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
mysql> alter table passwd modify QQ int(11) not null ;
Query OK, 37 rows affected, 37 warnings (0.00 sec)
Records: 37  Duplicates: 0  Warnings: 37
mysql> desc passwd ;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(3)      | NO   | PRI | NULL    | auto_increment |
| username | char(30)    | NO   | MUL | NULL    |                |

| QQ       | int(11)     | NO   |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
 
6、修改字段名
mysql> alter table passwd change QQ qq int(11) not null ;  修改QQ字段为qq,用到change关键字。 需要将权限类型写上,也可以更改类型。
mysql> alter table passwd change QQ qq int(11) not null ;
Query OK, 37 rows affected (0.00 sec)
Records: 37  Duplicates: 0  Warnings: 0
mysql> desc passwd ;                                    
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(3)      | NO   | PRI | NULL    | auto_increment |
| username | char(30)    | NO   | MUL | NULL    |                |
| pass     | char(1)     | NO   |     | NULL    |                |
| uid      | int(5)      | NO   |     | NULL    |                |
| gid      | int(5)      | NO   |     | NULL    |                |
| common   | varchar(50) | YES  |     | NULL    |                |
| homedir  | char(50)    | YES  |     | NULL    |                |
| shell    | char(50)    | NO   |     | NULL    |                |
| qq       | int(11)     | NO   |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)