MYSQL – 修改、删除、重命名、修改
什么是 ALTER 命令?
俗话说 变化是唯一不变的
随着时间的推移,业务需求也会发生变化。随着业务需求的变化,数据库设计也需要改变。
MySQL 提供 改变 帮助我们 将更改纳入现有的数据库设计中.
alter 命令用于修改现有的数据库、表、视图或其他在数据库生命周期内可能需要更改的数据库对象。
假设我们已经完成了数据库设计并已实施。我们的数据库用户正在使用它,然后他们意识到在设计阶段遗漏了一些重要信息。他们不想丢失现有数据,只想合并新信息。在这种情况下,alter 命令就派上用场了。我们可以使用 alter 命令将字段的数据类型从字符串更改为数字,将字段名称更改为新名称,甚至在表中添加新列。
改变 – 语法
向现有表添加列的基本语法如下所示
ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;
点击这里
- “更改表`表名`” 是告诉的命令 MySQL 服务器修改名为“table_name”的表。
- “添加列‘列名’‘数据类型’” 是告诉的命令 MySQL 服务器添加一个名为“column_name”、数据类型为“data_type”的新列。
假设 Myflix 引入了在线计费和支付。为此,我们被要求在会员表中添加一个信用卡号字段。我们可以使用 ALTER 命令来执行此操作。在进行任何修改之前,让我们先查看会员表的结构。下面显示的脚本可以帮助我们做到这一点。
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
我们可以使用下面显示的脚本向成员表添加一个新字段。
ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);
在以下位置执行上述脚本 MySQL 针对 Myflixdb,向成员表添加一个名为信用卡号的新列,数据类型为 VARCHAR。执行 show columns 脚本会得到以下结果。
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL | |||
credit_card_number | varchar(25) | YES |
从返回的结果中可以看到,信用卡号已添加到成员表中。成员数据中包含的数据不受新列添加的影响。
DROP 命令是什么?
DROP 命令用于
- 从中删除数据库 MySQL 服务器
- 从数据库中删除一个对象(如表、列)。
现在让我们看一些使用DROP命令的实际例子。
在我们之前的 Alter 命令的示例中,我们向成员表添加了一个名为信用卡号的列。
假设在线计费功能需要一些时间,我们想删除信用卡列
我们可以使用以下脚本
ALTER TABLE `members` DROP COLUMN `credit_card_number`;
执行上述脚本将从成员表中删除列 credit_card_number
现在让我们看一下成员表中的列,以确认我们的列是否已被删除。
SHOW COLUMNS FROM `members`;
在以下位置执行上述脚本 MySQL 针对 myflixdb 的工作台为我们提供了以下结果。
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
请注意,信用卡号已从字段列表中删除。
掉落表
从数据库中删除表的语法如下 -
DROP TABLE `sample_table`;
让我们看一个例子
DROP TABLE `categories_archive`;
执行上述脚本将从我们的数据库中删除名为“categories_archive”的表。
重命名命令是什么?
重命名命令用于 将现有数据库对象(如表、列)的名称更改为新名称.
重命名表不会导致其包含的任何数据丢失。
句法:-
重命名命令具有以下基本语法。
RENAME TABLE `current_table_name` TO `new_table_name`;
假设我们想将 movierentals 表重命名为 movie_rentals,我们可以使用下面显示的脚本来实现。
RENAME TABLE `movierentals` TO `movie_rentals`;
执行上述脚本将表“movierentals”重命名为“movie_rentals”。
我们现在将 movie_rentals 表重命名为原来的名称。
RENAME TABLE `movie_rentals` TO `movierentals`;
更改关键字
更改关键字可让您
- 更改列名称
- 更改列数据类型
- 更改列约束
我们来看一个例子。成员表中的全名字段为 varchar 数据类型,宽度为 150。
SHOW COLUMNS FROM `members`;
在以下位置执行上述脚本 MySQL 针对 myflixdb 的工作台为我们提供了以下结果。
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(150) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
假设我们想要
- 将字段名称从“full_names”更改为“fullname
- 将其更改为宽度为 250 的 char 数据类型
- 添加 NOT NULL 约束
我们可以使用更改命令完成此操作,如下所示 -
ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;
在以下位置执行上述脚本 MySQL 针对 myflixdb 进行 workbench 检查,然后执行上面给出的 show columns 脚本,得到以下结果。
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(250) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
修改关键字
MODIFY 关键字允许你
- 修改列数据类型
- 修改列约束
在上面的 CHANGE 示例中,我们必须更改字段名称以及其他详细信息。 从 CHANGE 语句中省略字段名称将会产生错误。 假设我们只想改变字段的数据类型和约束而不影响字段名称,我们可以使用 MODIFY 关键字来实现。
下面的脚本将“fullname”字段的宽度从 250 更改为 50。
ALTER TABLE `members`MODIFY `fullname` char(50) NOT NULL;
在以下位置执行上述脚本 MySQL 针对 myflixdb 运行 workbench,然后执行上面给出的 show columns 脚本,将得到如下所示的结果。
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
关键词之后
假设我们想在表的特定位置添加一个新列。
我们可以将 alter 命令与 AFTER 关键字一起使用。
下面的脚本在成员表中的出生日期后添加“date_of_registration”。
ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;
在以下位置执行上述脚本 MySQL 针对 myflixdb 运行 workbench,然后执行上面给出的 show columns 脚本,将得到如下所示的结果。
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
date_of_registration | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
总结
- 当我们想要修改数据库或数据库中包含的任何对象时,使用 alter 命令。
- drop 命令用于从中删除数据库 MySQL 服务器 或数据库内的对象。
- rename 命令用于将表的名称更改为新的表名。
- Change 关键字允许您更改列名、数据类型和约束
- 修改关键字允许您修改列的数据类型和约束
- After 关键字用于指定表中列的位置