在mysql表中,可以使用“ALTER TABLE 表名 CHANGE 舊字段名 新字段名 數(shù)據(jù)類型;”語句來修改字段名稱;使用“ALTER TABLE 表名 MODIFY 字段名 新數(shù)據(jù)類型;”語句來修改字段數(shù)據(jù)類型。
(推薦教程:mysql視頻教程)
修改字段名稱
MySQL 中修改表字段名的語法規(guī)則如下:
ALTER TABLE 表名 CHANGE 舊字段名 新字段名 數(shù)據(jù)類型;
其中:
-
舊字段名:指修改前的字段名;
-
新字段名:指修改后的字段名;
-
數(shù)據(jù)類型:指修改后的數(shù)據(jù)類型,如果不需要修改字段的數(shù)據(jù)類型,可以將數(shù)據(jù)類型設(shè)置成與原來一樣,但數(shù)據(jù)類型不能為空。
例 1
使用 ALTER TABLE 修改表 tb_emp1 的結(jié)構(gòu),將 col1 字段名稱改為 col3,同時(shí)將數(shù)據(jù)類型變?yōu)?CHAR(30),SQL 語句和運(yùn)行結(jié)果如下所示。
mysql> ALTER TABLE tb_emp1 -> CHANGE col1 col3 CHAR(30); Query OK, 0 rows affected (0.76 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC tb_emp1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | col3 | char(30) | YES | | NULL | | | id | int(11) | YES | | NULL | | | name | varchar(30) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 5 rows in set (0.01 sec)
CHANGE 也可以只修改數(shù)據(jù)類型,實(shí)現(xiàn)和 MODIFY 同樣的效果,方法是將 SQL 語句中的“新字段名”和“舊字段名”設(shè)置為相同的名稱,只改變“數(shù)據(jù)類型”。
提示:由于不同類型的數(shù)據(jù)在機(jī)器中的存儲(chǔ)方式及長度并不相同,修改數(shù)據(jù)類型可能會(huì)影響數(shù)據(jù)表中已有的數(shù)據(jù)記錄,因此,當(dāng)數(shù)據(jù)表中已經(jīng)有數(shù)據(jù)時(shí),不要輕易修改數(shù)據(jù)類型。
修改字段數(shù)據(jù)類型
修改字段的數(shù)據(jù)類型就是把字段的數(shù)據(jù)類型轉(zhuǎn)換成另一種數(shù)據(jù)類型。在 MySQL 中修改字段數(shù)據(jù)類型的語法規(guī)則如下:
ALTER TABLE 表名 MODIFY 字段名 新數(shù)據(jù)類型;
其中:
-
表名:指要修改數(shù)據(jù)類型的字段所在表的名稱;
-
字段名:指需要修改的字段;
-
新數(shù)據(jù)類型:指修改后字段的新數(shù)據(jù)類型。
例 2
使用 ALTER TABLE 修改表 tb_emp1 的結(jié)構(gòu),將 name 字段的數(shù)據(jù)類型由 VARCHAR(22) 修改成 VARCHAR(30),SQL 語句和運(yùn)行結(jié)果如下所示。
mysql> ALTER TABLE tb_emp1 -> MODIFY name VARCHAR(30); Query OK, 0 rows affected (0.15 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC tb_emp1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | col1 | int(11) | YES | | NULL | | | id | int(11) | YES | | NULL | | | name | varchar(30) | YES | | NULL | | | col2 | int(11) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
語句執(zhí)行后,發(fā)現(xiàn)表 tb_emp1 中 name 字段的數(shù)據(jù)類型已經(jīng)修改成 VARCHAR(30),修改成功。