数据库-完整性约束

本文最后更新于:10 个月前

1
2
3
4
5
6
7
8
-- 定义参照完整性(列级)
DROP TABLE IF EXISTS SC_1;
CREATE TABLE SC_1(
SCno BIGINT PRIMARY KEY AUTO_INCREMENT,-- id
Sno BIGINT NOT NULL REFERENCES Student(Sno), -- 学生学号
Cno BIGINT NOT NULL REFERENCES Course(Cno), -- 课程号
Grade INT NOT NULL -- 成绩
);
1
2
3
4
5
6
7
8
9
10
11
12

-- 定义参照完整性(表级, 建表时, 命名)
DROP TABLE IF EXISTS SC_2;
CREATE TABLE SC_2(
SCno BIGINT PRIMARY KEY AUTO_INCREMENT,-- id
Sno BIGINT NOT NULL, -- 学生学号
Cno BIGINT NOT NULL, -- 课程号
Grade INT NOT NULL,-- 成绩

CONSTRAINT fk_Sno_ FOREIGN KEY(Sno) REFERENCES Student(Sno),
CONSTRAINT fk_Cno_ FOREIGN KEY(Cno) REFERENCES Course(Cno)
)
1
2
3
4
5
6
7
8
9
10
11
-- 定义参照完整性(表级, 建表时)
DROP TABLE IF EXISTS SC_3;
CREATE TABLE SC_3(
SCno BIGINT PRIMARY KEY AUTO_INCREMENT,-- id
Sno BIGINT NOT NULL, -- 学生学号
Cno BIGINT NOT NULL, -- 课程号
Grade INT NOT NULL, -- 成绩

FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno)
);
1
2
3
4
5
6
7
8
9
10
11
-- 定义参照完整性(表级, 建表后)
DROP TABLE IF EXISTS SC_4;
CREATE TABLE SC_4(
SCno BIGINT PRIMARY KEY AUTO_INCREMENT,-- id
Sno BIGINT NOT NULL, -- 学生学号
Cno BIGINT NOT NULL, -- 课程号
Grade INT NOT NULL -- 成绩
);

ALTER TABLE SC_4 ADD FOREIGN KEY(Sno) REFERENCES Student(Sno);
ALTER TABLE SC_4 ADD FOREIGN KEY(Cno) REFERENCES Course(Cno);
1
2
3
4
5
6
7
8
9
10
11
-- 定义参照完整性(表级, 建表后, 命名)
DROP TABLE IF EXISTS SC_5;
CREATE TABLE SC_5(
SCno BIGINT PRIMARY KEY AUTO_INCREMENT,-- id
Sno BIGINT NOT NULL, -- 学生学号
Cno BIGINT NOT NULL, -- 课程号
Grade INT NOT NULL -- 成绩
);

ALTER TABLE SC_5 ADD CONSTRAINT fk_Sno FOREIGN KEY(Sno) REFERENCES Student(Sno);
ALTER TABLE SC_5 ADD CONSTRAINT fk_Cno FOREIGN KEY(Cno) REFERENCES Course(Cno);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- 定义参照完整性(多个外码)
DROP TABLE IF EXISTS SC_6;
CREATE TABLE SC_6(
SCno BIGINT,-- id
Sno BIGINT NOT NULL, -- 学生学号
Cno BIGINT NOT NULL, -- 课程号
Grade INT NOT NULL, -- 成绩
PRIMARY KEY(Sno, Cno)
);

DROP TABLE IF EXISTS SC_7;
CREATE TABLE SC_7(
SCno BIGINT PRIMARY KEY AUTO_INCREMENT,-- id
Sno BIGINT NOT NULL, -- 学生学号
Cno BIGINT NOT NULL, -- 课程号
Grade INT NOT NULL, -- 成绩

FOREIGN KEY(Sno, Cno) REFERENCES SC_6(Sno, Cno)
);
1
2
3
4
5
6
7
8
-- 用户自定义完整性
DROP TABLE IF EXISTS SC_6;
CREATE TABLE SC_6(
SCno BIGINT PRIMARY KEY AUTO_INCREMENT,-- id
Sno BIGINT UNIQUE, -- 唯一约束
Cno BIGINT NOT NULL , -- 非空约束
Grade INT NOT NULL DEFAULT '0' -- 默认约束
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- 验证参照完整性
DROP TABLE IF EXISTS SC_4;
CREATE TABLE SC_4(
SCno BIGINT PRIMARY KEY AUTO_INCREMENT,-- id
Sno BIGINT NOT NULL, -- 学生学号
Cno BIGINT NOT NULL, -- 课程号
Grade INT NOT NULL -- 成绩
);

ALTER TABLE SC_4 ADD FOREIGN KEY(Sno) REFERENCES Student(Sno);
ALTER TABLE SC_4 ADD FOREIGN KEY(Cno) REFERENCES Course(Cno);

INSERT INTO SC_4( Sno, Cno, Grade)
VALUES (201215121, 1, 92),
(201215121, 2, 73);

-- 删除操作
DELETE FROM Student WHERE Sno = 201215121

数据库-完整性约束
http://example.com/2023/06/10/数据库-完整性约束/
作者
Memory
发布于
2023年6月10日
更新于
2023年7月4日
许可协议