mysql修改表結構的語句是“ALTER TABLE”,該語句可以改變原有表的結構,例如增加或刪減列、更改原有列類型、重新命名列或表等;語法格式為“ALTER TABLE <表名> [修改選項]”。
本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。
mysql修改表結構的語句是「ALTER TABLE」。
ALTER TABLE
語句可以改變原始資料表的結構,例如增加或刪減資料列、建立或取消索引、變更原有列類型、重新命名資料列或表格等。
MySQL 使用 ALTER TABLE 語句修改表格。常用的修改表的操作有修改表名、修改欄位資料類型或欄位名稱、增加和刪除欄位、修改欄位的排列位置、變更表的儲存引擎、刪除表的外鍵限制等。
常用的語法格式如下:
ALTER TABLE <表名> [修改选项]
修改選項的語法格式如下:
{ ADD COLUMN <列名> <类型> | CHANGE COLUMN <旧列名> <新列名> <新列类型> | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } | MODIFY COLUMN <列名> <类型> | DROP COLUMN <列名> | RENAME TO <新表名> | CHARACTER SET <字符集名> | COLLATE <校对规则名> }
新增欄位
##隨著業務的變化,可能需要在已經存在的表中新增新的字段,一個完整的字段包括字段名稱、資料類型、完整性約束。新增欄位的語法格式如下:ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名];
mysql> ALTER TABLE tb_emp1 -> ADD COLUMN col1 INT FIRST; Query OK, 0 rows affected (0.94 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(25) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec)
mysql> ALTER TABLE tb_emp1 -> ADD COLUMN col2 INT AFTER name; Query OK, 0 rows affected (0.50 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(25) | YES | | NULL | | | col2 | int(11) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
修改欄位資料類型
修改欄位的資料型別就是把欄位的資料型別轉換成另一種資料型別。在MySQL 中修改字段資料類型的語法規則如下:ALTER TABLE <表名> MODIFY <字段名> <数据类型>
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)
刪除欄位
刪除欄位是將資料表中的某個欄位從表中移除,語法格式如下:
ALTER TABLE <表名> DROP <字段名>;
mysql> ALTER TABLE tb_emp1 -> DROP col2; Query OK, 0 rows affected (0.53 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 | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec)
修改欄位名稱
MySQL 中修改表格欄位名稱的語法規則如下:ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
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)
修改表名
MySQL 透過ALTER TABLE 語句來實現表名的修改,語法規則如下:ALTER TABLE <旧表名> RENAME [TO] <新表名>;
mysql> ALTER TABLE tb_emp1 -> RENAME TO tb_emp2; mysql> SHOW TABLES; +--------------------+ | Tables_in_test_db | +--------------------+ | tb_emp2 | +--------------------+ 1 rows in set (0.00 sec)
提示:用户可以在修改表名称时使用 DESC 命令查看修改后两个表的结构,修改表名并不修改表的结构,因此修改名称后的表和修改名称前的表的结构是相同的。
【相关推荐:mysql视频教程】
以上是mysql修改表結構的語句是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!