MySQL字段外键:如何为表增加外键约束?(mysql字段外键)

MySQL字段外键是用于定义数据库表之间的关系的重要一环,其作用是能够有效地维护表之间的相互关系,有助于减少数据的重复性和准确性。要为MySQL表增加外键约束,可以采用定义外键的标准SQL,即ALTER TABLE语句实现。该语句用于更改表的结构,其基本语法如下:

ALTER TABLE table_name

ADD CONSTRAINT constraint_name

FOREIGN KEY(column_name)

REFERENCES referenced_table(column_name);

其中,在ALTER TABLE关键字后面紧跟着被操作的表名table_name,ADD CONSTRAINT定义约束名constraint_name,FOREIGN KEY定义表中的一列列的名字column_name,REFERENCES定义外键相关联的表以及其选中的列名referenced_table(column_name)。

下面介绍如何将定义外键附加到MySQL表:

1. 构建两个表,其中一个表的字段作为外键在另一个表中引用:

首先要构建要关联的两张表,下面实例构建两个名为product和category的表,用于定义产品到其所属分类的关系:

CREATE TABLE product(

product_id INT NOT NULL,

product_name VARCHAR(50) NOT NULL,

PRIMARY KEY (product_id)

);

CREATE TABLE category(

category_id INT NOT NULL,

category_name VARCHAR(50) NOT NULL,

PRIMARY KEY (category_id)

);

2. 使用ALTER TABLE语句定义外键:

在两个表构建完成之后,定义他们之间的关系:

ALTER TABLE product

ADD CONSTRAIN prod_category

FOREIGN KEY (category_id)

REFERENCES category(category_id);

运行上面的SQL语句之后,SQL将会保证添加到product表(子表)中category_id字段的值只能是category表(主表)中category_id字段的值。

3. 使用INNODB引擎定义外键:

MySQL 5.6版本之后支持使用INNODB引擎定义外键,INNODB引擎支持引用本地外键和远程外键。本地外键指两个表都位于同一数据库中,而远程外键则指两个表位于不同数据库中,属于跨库外键。要定义本地的外键,可以使用如下的SQL语句:

CREATE TABLE product(

product_id INT NOT NULL,

product_name VARCHAR(50) NOT NULL,

category_id INT NOT NULL,

FOREIGN KEY (category_id) REFERENCES category(category_id)

ON DELETE CASCADE ON UPDATE CASCADE,

PRIMARY KEY (product_id)

);

定义远程外键的方式参照以上,只是要在REFERENCES后面指定表的位置:

CREATE TABLE product(

product_id INT NOT NULL,

product_name VARCHAR(50) NOT NULL,

category_id INT NOT NULL,

FOREIGN KEY (category_id) REFERENCES other_db.category(category_id)

ON DELETE CASCADE ON UPDATE CASCADE,

PRIMARY KEY (product_id)

);

总结:可以使用ALTER TABLE语句或者INNODB引擎来为MySQL表增加外键约束,以实现表之间相互关联。外键有助于减少数据库中的重复性和准确性,数据库管理员应该认真考虑对表之间的外键关系进行表示和管理。


数据运维技术 » MySQL字段外键:如何为表增加外键约束?(mysql字段外键)