📅  最后修改于: 2023-12-03 15:26:22.533000             🧑  作者: Mango
有时候,在我们的数据库表中需要添加新的列或者外键来更好地优化我们的数据结构。在 MySQL 中,我们可以使用 ALTER TABLE 语句来实现此目的。
ALTER TABLE table_name
ADD COLUMN column_name colum_type [AFTER|BEFORE existing_column_name];
table_name
:要更改的表名column_name
:新列的名称column_type
:新列的类型和属性existing_column_name
:选择在哪个列之前或之后添加新列添加新列 birthdate 到表 users:
ALTER TABLE users
ADD COLUMN birthdate DATE;
添加新列 email 和 phone_number 到表 users,email 列在 address 列之后,phone_number 列在 email 列之后:
ALTER TABLE users
ADD COLUMN email VARCHAR(255) AFTER address,
ADD COLUMN phone_number VARCHAR(20) AFTER email;
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY (column_name) REFERENCES parent_table_name(parent_column_name) [ON DELETE action] [ON UPDATE action];
table_name
:要更改的表名constraint_name
:外键约束名称column_name
:当前表的外键字段名称parent_table_name
:父表名parent_column_name
:父表的外键字段名称ON DELETE
:当父表中的行被删除时,要执行的操作ON UPDATE
:当父表中的行被更新时,要执行的操作action
有以下四个值:
CASCADE
:本表中所有关联的行都会被删除/更新SET NULL
:本表中所有关联的行会被将外键列值设为 NULLRESTRICT
:如果父表中有数据被引用,则不能删除/更新父表NO ACTION
:不执行任何操作(默认)为表 orders 添加外键关系:
ALTER TABLE orders
ADD CONSTRAINT orders_customer_id FOREIGN KEY (customer_id) REFERENCES customers(id);
当删除父表 customers 中的行时,自动删除 child_table 中的行:
ALTER TABLE child_table
ADD CONSTRAINT FK_customer_id
FOREIGN KEY (customer_id) REFERENCES customer_table(customer_id)
ON DELETE CASCADE;
以上就是如何通过 ALTER TABLE 语句在 MySQL 中更改表来添加列和外键的介绍。