CREATE DATABASE test;
USE test;
CREATE TABLE employee (
emp_id int primary key,
name varchar(20),
birth_date date,
sex varchar(1),
salary int,
branch_id int,
sup_id int
);
CREATE TABLE branch (
branch_id int primary key,
branch_name varchar(20),
manager_id int,
foreign key (manager_id) references employee (emp_id) ON DELETE SET NULL
);
ALTER TABLE employee ADD foreign key(branch_id) references branch(branch_id) ON DELETE SET NULL;
ALTER TABLE employee ADD foreign key(sup_id) references employee(emp_id) ON DELETE SET NULL;
CREATE TABLE client (
client_id int primary key,
client_name varchar(20),
phone varchar(20)
);
CREATE TABLE works_with (
emp_id int,
client_id int,
total_sales int,
primary key(emp_id, client_id),
foreign key(emp_id) references employee(emp_id) ON DELETE CASCADE,
foreign key(client_id) references client(client_id) ON DELETE CASCADE
);
INSERT INTO branch VALUES (1, '研发', NULL);
INSERT INTO branch VALUES (2, '行政', NULL);
INSERT INTO branch VALUES (3, '咨询', NULL);
INSERT INTO employee VALUES(206, '小黄', '1998-10-08', 'F', 50000, 1, NULL);
INSERT INTO employee VALUES(207, '小绿', '1985-09-16', 'M', 29000, 2, 206);
INSERT INTO employee VALUES(208, '小黑', '2000-12-19', 'M', 35000, 3, 206);
INSERT INTO employee VALUES(209, '小白', '1997-01-22', 'F', 39000, 3, 207);
INSERT INTO employee VALUES(210, '小蓝', '1925-11-10', 'F', 84000, 1, 207);
UPDATE branch SET manager_id = 206 WHERE branch_id = 1;
UPDATE branch SET manager_id = 207 WHERE branch_id = 2;
UPDATE branch SET manager_id = 208 WHERE branch_id = 3;
INSERT INTO client VALUES(400, '阿a', '1255');
INSERT INTO client VALUES(401, '阿b', '2256');
INSERT INTO client VALUES(402, '阿c', '5257');
INSERT INTO client VALUES(403, '吴d', '4258');
INSERT INTO client VALUES(404, '阿e', '2259');
INSERT INTO works_with VALUES(206, 400, '10000');
INSERT INTO works_with VALUES(207, 401, '20000');
INSERT INTO works_with VALUES(208, 402, '30000');
INSERT INTO works_with VALUES(208, 403, '40000');
INSERT INTO works_with VALUES(210, 404, '50000');
SELECT * FROM branch;
SELECT * FROM works_with;
DELETE FROM employee WHERE emp_id = 207;
SELECT * FROM branch;
SELECT * FROM works_with;