📜  更改表添加列和外键 mysql (1)

📅  最后修改于: 2023-12-03 15:26:22.533000             🧑  作者: Mango

MySQL: 更改表添加列和外键

有时候,在我们的数据库表中需要添加新的列或者外键来更好地优化我们的数据结构。在 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:本表中所有关联的行会被将外键列值设为 NULL
  • RESTRICT:如果父表中有数据被引用,则不能删除/更新父表
  • 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 中更改表来添加列和外键的介绍。