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
email 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
email varchar(255) YES NULL
credit_card_number varchar(25) YES

从返回的结果中可以看到,信用卡号已添加到成员表中。成员数据中包含的数据不受新列添加的影响。

DROP 命令是什么?

DROP 命令用于

  1. 从中删除数据库 MySQL 服务器
  2. 从数据库中删除一个对象(如表、列)。

现在让我们看一些使用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
email 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`;

更改关键字

更改关键字可让您

  1. 更改列名称
  2. 更改列数据类型
  3. 更改列约束

我们来看一个例子。成员表中的全名字段为 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
email varchar(255) YES NULL

假设我们想要

  1. 将字段名称从“full_names”更改为“fullname
  2. 将其更改为宽度为 250 的 char 数据类型
  3. 添加 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
email varchar(255) YES NULL

修改关键字

MODIFY 关键字允许你

  1. 修改列数据类型
  2. 修改列约束

在上面的 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
email 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
email varchar(255) YES NULL
Note: The Hilighted row is added after date_of_birth cloumn

总结

  • 当我们想要修改数据库或数据库中包含的任何对象时,使用 alter 命令。
  • drop 命令用于从中删除数据库 MySQL 服务器 或数据库内的对象。
  • rename 命令用于将表的名称更改为新的表名。
  • Change 关键字允许您更改列名、数据类型和约束
  • 修改关键字允许您修改列的数据类型和约束
  • After 关键字用于指定表中列的位置