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表增加外键约束,以实现表之间相互关联。外键有助于减少数据库中的重复性和准确性,数据库管理员应该认真考虑对表之间的外键关系进行表示和管理。