阿里Java學習路線:階段 2:資料庫開發-SQL進階及查詢練習:課時8:外來鍵約束
阿新 • • 發佈:2020-12-24
技術標籤:阿里Java學習路線
外來鍵約束
# 新建表格,設定主鍵:
CREATE TABLE dept1(
deptno INT PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(50)
);
INSERT INTO dept1 VALUES(10,'研發部');
INSERT INTO dept1 VALUES(20,'人力部');
INSERT INTO dept1 VALUES(30,'財務部');
SELECT * FROM dept1;
DROP TABLE emp1;
# 新建表,設定主鍵和外來鍵約束:
CREATE TABLE emp1(
empno INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(50),
dno INT,
CONSTRAINT fk_emp1_dept1 FOREIGN KEY(dno) REFERENCES dept1(deptno)
);
SELECT * FROM emp1;
DESC emp1;
INSERT INTO emp1(empno,ename) VALUES(NULL,'zhanSan');
INSERT INTO emp1(empno,ename,dno) VALUES(NULL,'liSi',10);
INSERT INTO emp1( empno,ename,dno) VALUES(NULL,'wangWu',10);
INSERT INTO emp1(empno,ename,dno) VALUES(NULL,'zhaoLiu',80);
# 因為外來鍵約束,dept1表沒有80部門,所以報錯
#[SQL]INSERT INTO emp1(empno,ename,dno) VALUES(NULL,'zhaoLiu',80);
#[Err] 1452 - Cannot add or update a child row: a foreign key constraint fails
#(`mydb1`.`emp1`, CONSTRAINT `fk_emp1_dept1` FOREIGN KEY (`dno`) REFERENCES `dept1` (`deptno`))
# 如果新建的表沒有外來鍵約束,可使用以下語句進行設定
ALTER TABLE emp1 ADD CONSTRAINT fk_emp1_dept1 FOREIGN KEY(dno) REFERENCES dept1(deptno);