在mysql中,可以使用“ALTER TABLE”語句和ADD關(guān)鍵字來增加列(字段),語法為“ALTER TABLE 表名 ADD 新字段名 數(shù)據(jù)類型[約束條件];”;這種語法格式會(huì)在數(shù)據(jù)表的末尾添加列(字段)。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
MySQL 數(shù)據(jù)表是由行和列構(gòu)成的,通常把表的“列”稱為字段(Field),把表的“行”稱為記錄(Record)。隨著業(yè)務(wù)的變化,可能需要在已有的表中添加新的字段。
在mysql中,可以使用“ALTER TABLE”語句和ADD關(guān)鍵字來增加列(字段)。
語法:
ALTER TABLE 表名 ADD 新字段名 數(shù)據(jù)類型[約束條件];
對(duì)語法格式的說明如下:
-
表名
:為數(shù)據(jù)表的名字; -
新字段名
:為所要添加的字段的名字; -
數(shù)據(jù)類型
:為所要添加的字段能存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)類型; -
[約束條件]
:是可選的,用來對(duì)添加的字段進(jìn)行約束。
這種語法格式默認(rèn)在表的最后位置(最后一列的后面)添加新字段。
示例:
我們有一個(gè)student 數(shù)據(jù)表,使用 DESC 查看 student 表結(jié)構(gòu)
mysql> DESC student; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(4) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.01 sec)
使用 ALTER TABLE 語句添加一個(gè) INT 類型的字段 age,在看看 student 表結(jié)構(gòu)
mysql> ALTER TABLE student ADD age INT(4); Query OK, 0 rows affected (0.16 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC student; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(4) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | age | int(4) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
可以看出student 表已經(jīng)添加了 age 字段,且該字段在表的最后一個(gè)位置,添加字段成功。
那么如果想要在開頭或者中間添加字段,需要怎么做?
-
如果希望在開頭位置(第一列的前面)添加新字段,那么需要借助
FIRST
關(guān)鍵字 -
如果希望在中間位置添加新字段,那么需要借助
AFTER
關(guān)鍵字
語法格式如下:
ALTER TABLE 表名 ADD 新字段名 數(shù)據(jù)類型 [約束條件] FIRST; ALTER TABLE 表名 ADD 新字段名 數(shù)據(jù)類型 [約束條件] AFTER <已經(jīng)存在的字段名>;
示例:
mysql> ALTER TABLE student ADD stuId INT(4) FIRST; Query OK, 0 rows affected (0.14 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC student; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | stuId | int(4) | YES | | NULL | | | id | int(4) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | age | int(4) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec)
student 表中添加了一個(gè) stuId 字段,且該字段在表中的第一個(gè)位置
mysql> ALTER TABLE student ADD stuno INT(11) AFTER name; Query OK, 0 rows affected (0.13 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC student; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | stuId | int(4) | YES | | NULL | | | id | int(4) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | stuno | int(11) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | age | int(4) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
student 表中添加了一個(gè) stuId 字段,且該字段在 name 字段后面的位置
【