MySQL 更改数据表的基本语法(ALTER TABLE 语句)
在 MySQL 中可以使用 ALTER TABLE 语句来更改原表的结构,例如添加或删除列、创建或取消、并改变原来的表结构。列类型、重命名列或表等。
基本语法
改表是指更改数据库中现有数据表的结构。 MySQL 使用 ALTER TABLE 语句来更改表。修改表的常用操作包括更改表名称、更改字段数据类型或字段名称、添加和删除字段、更改字段的排列方式、更改表的存储引擎、删除表中的外键约束等。
常用的语法格式如下:
MODIFY TABLE [修改选项]
修改设置的语法格式如下:名称
| CHANGE COLUMN
| ALTER COLUMN { SET DEFAULT |跌落标准}
| ALTER COLUMN
| DROP COLUMN
| RENAME }
添加字段
随着业务的变化,您可能需要在现有表中添加新的字段,一个完整的字段包括字段名称、数据类型和完整性约束。添加字段的语法格式如下:
ALTER TABLE ADD [约束] [FIRST|AFTER 现有字段名];
newfieldname
是要添加的字段名称; FIRST
是可选参数,其作用是将新添加的字段设置为表中的第一个字段; AFTER
是可选参数,作用是将新添加的字段添加到指定的现有字段名称的末尾。
【示例1】使用ALTER TABLE更改表tb_emp1的结构,在表的第一列添加一个int类型字段col1。 SQL输入和运行结果如下。
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)
提示:“FIRST 或 AFTER 现有字段名称”用于指定新字段在表中的位置。如果SQL语句中没有这两个参数,则新添加的字段将默认位于数据表的末尾。列表。
【示例2】使用ALTER TABLE更改表tb_emp1的结构,在name列后面添加一个int类型字段col2。 SQL输入和运行结果如下。
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)
可以看到表tb_emp1中添加了一个名为col2的字段。它的位置在指定的名称字段之后。该字段已添加。
编辑字段数据类型
更改字段的数据类型是将字段的数据类型转换为另一种数据类型。 MySQL 中更改字段数据类型的语法规则如下:
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
其中,tablename
指需要更改数据类型的字段所在表的名称, fieldname
指要更改的字段。 , 数据类型
指的是更改字段中的新数据类型。
【示例3】使用ALTER TABLE更改表tb_emp1的结构,并将name字段的数据类型从VARCHAR(22)更改为VARCHAR(30)。 SQL输入和运行结果如下。执行
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)
语句后,发现表tb_emp1中name字段的数据类型已更改为VARCHAR(30),更改成功。
删除字段
删除字段就是从表中删除数据表中的字段。语法如下:
ALTER TABLE DROP ;
其中,FieldName
指的是要从表中删除的字段名称。
【示例4】使用ALTER TABLE更改表tb_emp1的结构并删除字段col2。 SQL输入和运行结果如下。
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 ALTER ;
其中,oldfieldname
指更改前的字段名称; 新字段名称
指更改后的字段名称; 新数据类型
如果不需要更改字段的数据类型,则指更改后的数据类型。您可以将新数据类型设置为与原始数据类型相同,但数据类型不能为空。
【示例5】使用ALTER TABLE更改表tb_emp1的结构,将col1字段名称更改为col3,并将数据类型更改为CHAR(30)。 SQL输入和运行结果如下。
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也可以只改变数据类型来达到与MODIFY相同的效果。方法是将SQL语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。
提示:由于不同类型的数据在机器中的存储方式和长度不同,因此更改数据类型会影响数据表中现有的数据记录。因此,当数据表中已有数据时,不要轻易更改。更改数据类型。
编辑表名
MySQL 使用 ALTER TABLE 语句来更改表名。语法规则如下:
ALTER TABLE RENAME [TO] ;
其中,TO
是可选参数,是否使用不会影响结果。
【示例6】使用ALTER TABLE将数据表tb_emp1重命名为tb_emp2。 SQL输入和运行结果如下。
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命令查看更改后的两个表的结构。更改表名不会改变表的结构,因此更改名称后的表结构与更改名称前的表结构相同。的。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。