-- 创建两个表,一个是父表 `department`,另一个是子表 `employee`,并设置外键约束
-- 创建部门表 department
CREATE TABLE department (
dept_id INT PRIMARY KEY, -- 部门ID,主键
dept_name VARCHAR(50) NOT NULL -- 部门名称
);
-- 创建员工表 employee,并设置外键约束
CREATE TABLE employee (
emp_id INT PRIMARY KEY, -- 员工ID,主键
emp_name VARCHAR(50) NOT NULL, -- 员工姓名
dept_id INT, -- 部门ID,外键
FOREIGN KEY (dept_id) REFERENCES department(dept_id) -- 设置外键约束,关联到 department 表的 dept_id 字段
);
-- 插入一些示例数据
INSERT INTO department (dept_id, dept_name) VALUES (1, 'HR'), (2, 'Engineering');
INSERT INTO employee (emp_id, emp_name, dept_id) VALUES (1, 'Alice', 1), (2, 'Bob', 2);
-- 尝试插入一条没有对应部门的员工记录(会失败)
INSERT INTO employee (emp_id, emp_name, dept_id) VALUES (3, 'Charlie', 3); -- 这条语句会报错,因为 dept_id = 3 在 department 表中不存在
-- 删除部门时,如果该部门有员工,则删除操作会失败
DELETE FROM department WHERE dept_id = 1; -- 这条语句会报错,因为 department 表中的 dept_id = 1 在 employee 表中有引用
-- 如果要删除部门,可以先删除或更新相关的员工记录
DELETE FROM employee WHERE dept_id = 1;
DELETE FROM department WHERE dept_id = 1; -- 现在删除成功了
department 和 employee,其中 employee 表的 dept_id 字段设置了外键约束,关联到 department 表的 dept_id 字段。dept_id 不存在于 department 表中的员工记录时,MySQL 会抛出错误,防止数据不一致。employee 表引用的部门记录时,MySQL 也会抛出错误,防止删除后出现孤立的外键引用。上一篇:docker进入mysql
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站