现在,我们先看看我们的表都有些什么字段。
键入: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;
下一节,我们再来一点更复杂的操作吧~