现在,我们先看看我们的表都有些什么字段。

键入:desc student;

显示:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(12)     | YES  |     | NULL    |       |
| name     | varchar(50) | YES  |     | NULL    |       |
| birthday | varchar(20) | YES  |     | NULL    |       |
| content  | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

好的,显示我们的student表里有id name birthday content字段,现在,我们想插入一个新字段isLogin来表示是否已经注册。

键入:alter table tbname add column 列名 类型;

eg:alter table student add column isLogin enum('Y','N');

我们看看表的结构变化:键入 desc student;

显示:+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(12)       | YES  |     | NULL    |       |
| name     | varchar(50)   | YES  |     | NULL    |       |
| birthday | varchar(20)   | YES  |     | NULL    |       |
| content  | varchar(50)   | YES  |     | NULL    |       |
| isLogin  | enum('Y','N') | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
可以看到,isLogin已经插入到表中。


但是我又想在名字后面插入一个性别字段,怎么办?

键入:alter table tbname add column 列名 类型 after 要跟随的列名;

eg:alter table student add column sex enum('M','F') after name;

再查看表的结构:

+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(12)       | YES  |     | NULL    |       |
| name     | varchar(50)   | YES  |     | NULL    |       |
| sex      | enum('M','F') | YES  |     | NULL    |       |
| birthday | varchar(20)   | YES  |     | NULL    |       |
| content  | varchar(50)   | YES  |     | NULL    |       |
| isLogin  | enum('Y','N') | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
可以看见,sex已经插入到name的后面(爆菊了= =lll)

 

现在,我们忽然觉得,这个isLogin貌似没什么用处啊...要不删掉它吧~

键入:alter table tbname drop 列名;

eg:alter table student drop isLogin;

显示:

+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(12)       | YES  |     | NULL    |       |
| name     | varchar(50)   | YES  |     | NULL    |       |
| sex      | enum('M','F') | YES  |     | NULL    |       |
| birthday | varchar(20)   | YES  |     | NULL    |       |
| content  | varchar(50)   | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
哈哈,isLogin没有咯。

我们发现,content字段貌似有点词不达意啊,,貌似叫extra更贴切些,那么我们就...

键入:alter table tbname change 更改前的列名 更改后的列名 类型;

eg:alter table student change content extra varchar(30);

之后查询会显示:

+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(12)       | YES  |     | NULL    |       |
| name     | varchar(50)   | YES  |     | NULL    |       |
| sex      | enum('M','F') | YES  |     | NULL    |       |
| birthday | varchar(20)   | YES  |     | NULL    |       |
| extra    | varchar(30)   | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+

content更改为extra了!

另外,字段参数也是可以改滴!

键入:alter table tbname modify 要改的字段名 更改后的类型;

eg:alter table student modify extra char(50);

显示:

+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id       | int(12)       | YES  |     | NULL    |       |
| name     | varchar(50)   | YES  |     | NULL    |       |
| sex      | enum('M','F') | YES  |     | NULL    |       |
| birthday | varchar(20)   | YES  |     | NULL    |       |
| extra    | char(50)      | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
这样,extra由原先的varchar(30)改为char(50)了。

此外,表的名称也是可以改的,不过这里我就不作演示了,给出指令大家自己尝试一下。

键入:alter table 要更改的tbname rename 修改后的tbname;

eg:alter table student rename user;

效果就是student表被更名为user。

 

好的,复习一下;

添加字段:alter table tbname add column 列名 类型;

删除字段:alter table tbname drop 列名;

修改字段名:alter table tbname change 要修改的列名 修改后的列名 类型;

修改字段数据类型:alter table tbname modify 要修改的列名 类型;

修改表名:alter table 要修改的tbname rename 修改后的tbname;

 

下一节,我们再来一点更复杂的操作吧~