MySQL的外键约束是一种保证数据完整性的机制,它可以强制要求一个列或列组合与另一张表中的数据匹配。外键约束规定了在一个表中某个列的值必须是另一张表中某个列的值。
外键约束的作用
- 可以确保数据的完整性,防止插入无效数据;
- 在删除或更新主表数据时,自动删除或更新关联的子表数据,便于维护数据一致性;
外键约束使用方法
创建外键约束语法:
CREATE TABLE 子表名 (
子表列1 数据类型,
子表列2 数据类型,
...
FOREIGN KEY (子表列1) REFERENCES 主表名(主表列1)
);
示例:
CREATE TABLE department (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(50) NOT NULL
);
CREATE TABLE employee (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(50) NOT NULL,
salary INT,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES department(dept_id)
);
这个例子中,employee表中的dept_id列是department表中的主键dept_id的外键。这意味着任何时候,employee表中的dept_id的值必须是department表中dept_id的一个有效值。
示例2:
CREATE TABLE publisher (
publisher_id INT PRIMARY KEY,
publisher_name VARCHAR(50) NOT NULL
);
CREATE TABLE book (
book_id INT PRIMARY KEY,
book_title VARCHAR(50) NOT NULL,
publisher_id INT,
FOREIGN KEY (publisher_id) REFERENCES publisher(publisher_id) ON UPDATE CASCADE ON DELETE SET NULL
);
在这个例子中,book表中的publisher_id列也是publisher表中的主键publisher_id的外键。如果publisher表的publisher_id被更新或删除,book表的对应行也会被更新或删除。如果更新后的外键值对应着一个不存在的记录,则book表对应行的外键值将变为NULL。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL外键约束(FOREIGN KEY)详解 - Python技术站