Mysql數(shù)據(jù)字段操作
假設(shè)我們存在user表,user結(jié)構(gòu)如下:
mysql> desc user;
?+----------+---------------+------+-----+---------+-------+
?| Field ? ?| Type ? ? ? ? ?| Null | Key | Default | Extra |
?+----------+---------------+------+-----+---------+-------+
?| username ? | varchar(10) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| password ? | varchar(32) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createtime | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createip ? | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?+----------+---------------+------+-----+---------+-------+
?4 rows in set (0.01 sec)
修改表字段類型 modify
類別 | 詳細(xì)解示 |
---|---|
基本語(yǔ)法 | alter table 表名 modify 字段名 varchar(20); |
示例 | alter table user modify username varchar(20); |
示例說(shuō)明 | 將user表的username的類型改為varchar(20) |
我們執(zhí)行一下,看看結(jié)果:
mysql> alter table user modify username varchar(20);
?Query OK, 0 rows affected (0.48 sec)
?Records: 0 ?Duplicates: 0 ?Warnings: 0mysql> desc user;
?+----------+---------------+------+-----+---------+-------+
?| Field ? ?| Type ? ? ? ? ?| Null | Key | Default | Extra |
?+----------+---------------+------+-----+---------+-------+
?| username ? | varchar(20) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| password ? | varchar(32) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createtime | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createip ? | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?+----------+---------------+------+-----+---------+-------+
?4 rows in set (0.01 sec)
增加表字段
類別 | 詳細(xì)解示 |
---|---|
基本語(yǔ)法 | alter table 表名 add column 字段名 類型; |
示例 | alter table user add column age int(3); |
示例說(shuō)明 | 添加一個(gè)字段為age,類型為整型長(zhǎng)度為3 |
mysql> alter table emp add column age int(3);
?Query OK, 0 rows affected (0.40 sec)
?Records: 0 ?Duplicates: 0 ?Warnings: 0mysql> desc user;
?+----------+---------------+------+-----+---------+-------+
?| Field ? ?| Type ? ? ? ? ?| Null | Key | Default | Extra |
?+----------+---------------+------+-----+---------+-------+
?| username ? | varchar(20) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| password ? | varchar(32) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createtime | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createip ? | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?| age ? ? ? ?| int(3) ? ? ? ?| YES ?| ? ? | NULL ? ?| ? ? |
?+----------+---------------+------+-----+---------+-------+
?5 rows in set (0.00 sec)
增加字段時(shí)控制字段順序
我們剛剛學(xué)了增加字段。如果你仔細(xì)實(shí)驗(yàn)發(fā)現(xiàn)每次都是增加在最后面,如何在第一個(gè)增加或者在指字字段之后增加呢?
類別 | 詳細(xì)解示 |
---|---|
基本語(yǔ)法 | ALTER TABLE 表名 ADD 字段名 字段類型 AFTER 字段名; |
示例 | ALTER TABLE user ADD email VARCHAR(60) AFTER createip; |
示例說(shuō)明 | user表中,在createip后增加一個(gè)字段為email,類型為varchar,長(zhǎng)度為60 |
類別 | 詳細(xì)解示 |
---|---|
基本語(yǔ)法 | ALTER TABLE 表名 ADD 字段名 字段類型; |
示例 | ALTER TABLE user ADD id INT(10) FIRST; |
示例說(shuō)明 | user表中在最開(kāi)始的位置增加一個(gè)字段為id,類型為int,長(zhǎng)度為10 |
ALTER TABLE user ADD email VARCHAR(60) AFTER createip;
?查詢正常,0 行受影響(0.40 秒)
?記錄:0 重復(fù):0 警告:0mysql>描述用戶;
?+----------+----------------+------+-----+--------- +--------+
?|領(lǐng)域| ?|輸入 | ? ? ? ? ?|空 |關(guān)鍵|默認(rèn) |額外|
?+----------+----------------+------+-----+--------- +--------+
?|用戶名 | varchar(20) | |是的 | ? ? |空| ?| ? ? |
?|密碼 | varchar(32) | |是的 | ? ? |空| ?| ? ? |
?|創(chuàng)建時(shí)間 |整數(shù)(10) ? ? ? |是的 | ? ? |空| ?| ? ? |
?|創(chuàng)建IP整數(shù)(10) ? ? ? |是的 | ? ? |空| ?| ? ? |
?|電子郵件 ? ? ?| varchar(60) | |是的 | ? ? |空| ?| ? ? |
?|年齡| ? ? ?| int(3) ? ? ? ?|是的 | ? ? |空| ?| ? ? |
?+----------+----------------+------+-----+--------- +--------+
?6 rows in set (0.00 sec)
刪除表字段
類別 | 詳細(xì)解示 |
---|---|
基本語(yǔ)法 | alter table 表名 drop column 字段名; |
s | alter table user drop column Age; |
示例說(shuō)明 | 在用戶表中刪除字段age |
mysql> alter table user drop column age;
?Query OK, 0 rows affected (0.27 sec)
?Records: 0 ?Duplicates: 0 ?Warnings: 0mysql> desc user;
?+----------+---------------+------+-----+---------+-------+
?| Field ? ?| Type ? ? ? ? ?| Null | Key | Default | Extra |
?+----------+---------------+------+-----+---------+-------+
?| username ? | varchar(20) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| password ? | varchar(32) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createtime | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createip ? | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?| email ? ? ?| varchar(60) ? | YES ?| ? ? | NULL ? ?| ? ? |
?+----------+---------------+------+-----+---------+-------+
?5 rows in set (0.00 sec)
表字段改名
類別 | 詳細(xì)解示 |
---|---|
基本語(yǔ)法 | alter table 表名 change 字段原名 字段新名 字段類型; |
示例 | alter table user change email em varchar(60); |
示例說(shuō)明 | 在user表中將字段中的email字段名字為em |
詳細(xì)示例:
mysql> alter table user change email em varchar(60);
Query OK, 0 rows affected (0.38 sec)
Records: 0 ?Duplicates: 0 ?Warnings: 0
mysql> desc user;
?+----------+---------------+------+-----+---------+-------+
?| Field ? ?| Type ? ? ? ? ?| Null | Key | Default | Extra |
?+----------+---------------+------+-----+---------+-------+
?| username ? | varchar(20) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| password ? | varchar(32) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createtime | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createip ? | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?| em ? ? ? ? | varchar(60) ? | YES ?| ? ? | NULL ? ?| ? ? |
?+----------+---------------+------+-----+---------+-------+
?5 rows in set (0.00 sec)
修改表字段排列順序
在前的字段增加和修改語(yǔ)句(add/change/modify)中,最后都可以加一個(gè)可選項(xiàng) first|after。
增加表字段時(shí)我們已經(jīng)學(xué)過(guò)了如何調(diào)整順序。我們現(xiàn)在在來(lái)看看另外的change或modify如何來(lái)調(diào)整順序。
我們用first做個(gè)小實(shí)驗(yàn)。
使用modify調(diào)整順序
mysql> alter table user modify em varchar(60) first;
?Query OK, 0 rows affected (0.41 sec)
?Records: 0 ?Duplicates: 0 ?Warnings: 0mysql> desc user;
?+----------+---------------+------+-----+---------+-------+
?| Field ? ?| Type ? ? ? ? ?| Null | Key | Default | Extra |
?+----------+---------------+------+-----+---------+-------+
?| em ? ? ? ? | varchar(60) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| username ? | varchar(20) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| password ? | varchar(32) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createtime | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createip ? | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?+----------+---------------+------+-----+---------+-------+
?5 rows in set (0.00 sec)
修改表名
類別 | 詳細(xì)解示 |
---|---|
基本語(yǔ)法 | alter table 舊表名 rename 新的表名; |
示例 | alter table user rename new_user; |
示例說(shuō)明 | 將user表名改為new_user |
mysql> alter table user rename new_user;
?Query OK, 0 rows affected (0.35 sec)mysql> desc new_user;
?+----------+---------------+------+-----+---------+-------+
?| Field ? ?| Type ? ? ? ? ?| Null | Key | Default | Extra |
?+----------+---------------+------+-----+---------+-------+
?| em ? ? ? ? | varchar(60) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| username ? | varchar(20) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| password ? | varchar(32) ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createtime | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?| createip ? | int(10) ? ? ? | YES ?| ? ? | NULL ? ?| ? ? |
?+----------+---------------+------+-----+---------+-------+
?5 rows in set (0.00 sec)