1.创建一个部门表

  1. CREATE TABLE dept(
  2. id INT PRIMARY KEY AUTO_INCREMENT,
  3. deptName VARCHAR(20)
  4. ) ENGINE=INNODB DEFAULT CHARSET=utf8;
  5. INSERT INTO dept(deptName) VALUES('技术部');
  6. INSERT INTO dept(deptName) VALUES('人力资源部');
  7. INSERT INTO dept(deptName) VALUES('市场部');
  8. INSERT INTO dept(deptName) VALUES('总经办');
  9. DROP TABLE dept;
  10. DROP TABLE employee;
  11. SELECT * FROM dept;

2.创建一个员工表

  1. CREATE TABLE employee(
  2. id INT PRIMARY KEY AUTO_INCREMENT,
  3. empName VARCHAR(20),
  4. deptId INT,
  5. -- CONSTRAINT 表示约束
  6. -- fk_emlyee_dept 表示约束的名字
  7. -- FOREIGN KEY(deptId) 表示给当前表的deptId字段添加约束
  8. -- REFERENCES dept(id) 当前表的deptId字段去引用dept表的id字段
  9. -- ON UPDATE CASCADE 级联更新
  10. -- ON DELETE CASCADE 级联删除
  11. CONSTRAINT fk_emlyee_dept FOREIGN KEY(deptId) REFERENCES dept(id)
  12. ON UPDATE CASCADE ON DELETE CASCADE
  13. ) ENGINE=INNODB DEFAULT CHARSET=utf8;
  14. INSERT INTO employee (empName,deptId) VALUES('小明',1);
  15. INSERT INTO employee (empName,deptId) VALUES('小虎',2);
  16. INSERT INTO employee (empName,deptId) VALUES('小强',4);
  17. INSERT INTO employee (empName,deptId) VALUES('小黑',40);
  18. SELECT * FROM employee;

3.外键约束

  1. -- 被约束的表 叫附表
  2. -- 约束别人的表 叫主表
  3. -- 当有了外键约束的时候,添加数据的时候应该先添加主表再添加附表
  4. -- 当有了外键约束的时候,删除数据的时候应该先删除附表再删除主表
  5. DELETE FROM employee WHERE empName = '小明';
  6. DELETE FROM dept WHERE id = 1;

4.级联操作