Mysql資料欄位操作

假設我們存在user表,user結構如下:

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

##類別詳細解示基本語法alter table 表名modify 欄位名稱varchar(20);範例alter table user modify username varchar(20);#範例說明將user表的username的型別改為varchar(20)
我們執行一下,看看結果:

mysql> alter table user modify username varchar(20);

 Query OK, 0 rows affected (0.48 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    |     |
+----------+---------------+------+-----+--------- +-------+
4 rows in set (0.01 sec)

增加表格欄位

類別#詳細解示
基本語法######alter table 表名add column 欄位名稱類型;############範例###### alter table user add column age int(3);#############範例說明######新增一個欄位為age,型別為整數長度為3####### ######

mysql> alter table emp add column age int(3);
 Query OK, 0 rows affected (0.40 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    |     |
 | age        | int(3)        | YES  |     | NULL    |     |
+----------+---------------+------+-----+--------- +-------+
 5 rows in set (0.00 sec)

增加欄位時控製欄位順序

我們剛剛學會增加欄位。如果你仔細實驗發現每次都是增加在最後面,如何在第一個增加或指字字段之後增加呢?

類別詳細解示
基本語法 #ALTER TABLE 表名ADD 欄位名字段類型AFTER 欄位名稱;
#範例ALTER TABLE user ADD email VARCHAR(60) AFTER createip;
範例說明user表中,createip後增加一個欄位為email,類型為varchar,長度為60
##類別詳細解示#基本語法範例範例說明#

ALTER TABLE 使用者在 createip 之後新增電子郵件 VARCHAR(60);
 查詢正常,0 行受影響(0.40 秒)
 記錄:0 重複:0 警告:0

mysql>描述用戶;
 +----------+----------------+------+-----+-------- - +--------+
 |領域|  |輸入 |          |空|關鍵|預設|額外|
 +----------+----------------+------+-----+-------- - +--------+
 |使用者名稱 | varchar(20) | |是的 |     |空|  |     |
 |密碼 | varchar(32) | |是的|     |空|  |     |
 |創建時間|整數(10)       |是的 |     |空|  |     |
 |創建IP整數(10)       |是的 |     |空|  |     |
 |電子郵件      | varchar(60) | |是的 |     |空|  |     |
 |年齡|      | int(3)        |是的|     |空|  |     |
 +----------+----------------+------+-----+-------- - +--------+
 6 rows in set (0.00 sec)

刪除表格欄位

##ALTER TABLE 表格名稱ADD欄位名字段類型;
ALTER TABLE user ADD id INT(10) FIRST;
user表中在最開始的位置增加一個欄位為id,型別為int,長度為10
類別#詳細解示
基本語法alter table 表名drop column 欄位名稱;
範例alter table user drop columnage;
範例說明在user表中刪除欄位age

mysql> alter table user drop column age;
 Query OK, 0 rows affected (0.27 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    |     |
 | email      | varchar(60)   | YES  |     | NULL    |     |
+----------+---------------+------+-----+--------- +-------+
5 rows in set (0.00 sec)

表格欄位改名

詳細解示
#基本語法alter table 表名change 欄位原始名稱段新名字段類型;
範例 alter table user change email em varchar(60);
#範例說明在user表中將欄位中的email欄位名稱為em
#

詳細範例:

mysql> alter table user change email em varchar(60);
Query OK, 0 rows affected (0.38 sec)
Records: 0  Duplicates: 0  Warnings: 0  Warnings: 0  Warnings: 0  Warnings: 0  Warnings: 0  Warnings: 0  Warnings: 0  Warnings: 0  Warnings: 0  Warnings: 0  Warnings: 0  Warnings: 0  Warnings: 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)

修改表格欄位排列順序

在前的欄位增加和修改語句(add/change/modify)中,最後都可以加一個可選項first|after。

增加表格欄位時我們已經學過如何調整順序。我們現在在來看看另外的change或modify如何來調整順序。

我們用first做個小實驗。

使用modify調整順序

mysql> alter table user modify em varchar(60) first;
 Query OK, 0 rows affected (0.41 sec)
 Records: 0  Duplicates: 0  Warnings: 0

mysql> 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)

修改表名

#詳細解示
基本語法alter table 舊表名rename 新的表名;
範例alter table user rename new_user;
範例說明將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)

繼續學習
||
<?php echo "Hello Mysql"; ?>