5.4 完整性约束命名子句

思维导图:

5.4 完整性约束命名子句_第1张图片

 

笔记:5.4 完整性约束命名子句


定义:

  • 完整性约束是在CREATE TABLE语句中定义的。
  • SQL为CREATE TABLE语句提供了CONSTRAINT子句,用于对完整性约束进行命名。
  • 命名的目的是方便增加或删除约束。

基本结构:

CONSTRAINT <完整性约束名称> <完整性约束条件>

其中,完整性约束条件可以是NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK等。

示例:

  1. 学生登记表 Student: 要求:
  • 学号在 90000~99999 之间
  • 姓名不为空
  • 年龄小于 30
  • 性别只能是 “男” 或 “女”
CREATE TABLE Student(
    Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),
    Sname CHAR(20) CONSTRAINT C2 NOT NULL,
    Sage NUMERIC(3) CONSTRAINT C3 CHECK(Sage<30),
    Ssex CHAR(2) CONSTRAINT C4 CHECK(Ssex IN('男', '女')),
    CONSTRAINT StudentKey PRIMARY KEY(Sno)
);
  1. 教师表 TEACHER: 要求:
  • 每位教师的应发工资 (工资 Sal + 扣除项 Deduct) 不低于 3000 元。
CREATE TABLE TEACHER(
    Eno NUMERIC(4) PRIMARY KEY,
    Ename CHAR(10),
    Job CHAR(8),
    Sal NUMERIC(7,2),
    Deduct NUMERIC(7,2),
    Deptno NUMERIC(2),
    CONSTRAINT TEACHERFKey FOREIGN KEY (Deptno) REFERENCES DEPT(Deptno),
    CONSTRAINT C1 CHECK(Sal + Deduct >= 3000)
);

修改表中的完整性约束:

可以使用ALTER TABLE语句修改表中的完整性约束。

示例:

  1. 移除学生表 Student 对性别的约束:
ALTER TABLE Student DROP CONSTRAINT C4;
  1. 修改学生表 Student 的约束条件: 要求将学号的范围从 90000~99999 改为 900000~999999,并将年龄从小于30改为小于40。
ALTER TABLE Student DROP CONSTRAINT C1;
ALTER TABLE Student ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999);
ALTER TABLE Student DROP CONSTRAINT C3;
ALTER TABLE Student ADD CONSTRAINT C3 CHECK (Sage < 40);

5.4 完整性约束命名子句_第2张图片

完整性约束命名子句 - 重点、难点与易错点总结


重点:

  1. 定义与用途:

    • 完整性约束命名子句用于为CREATE TABLE语句中的完整性约束赋予名称,以便于后续操作(如增加、删除)。
  2. 基本结构:

    CONSTRAINT <完整性约束名称> <完整性约束条件>
    

  3. 完整性约束条件类型:

    • NOT NULL: 字段值不可为空
    • UNIQUE: 字段值必须唯一
    • PRIMARY KEY: 定义表的主键
    • FOREIGN KEY: 外键约束,确保字段的值在另一个表中存在
    • CHECK: 对字段值施加特定条件

难点:

  1. 外键约束的理解与应用:

    • 外键是连接两张表的一种手段,它确保一张表中的字段值在另一张表的特定列中存在。正确实现外键约束需要对两张表都有深入了解。
  2. 复杂的CHECK约束:

    • 创建复杂的条件(如,工资与扣除之和的限制)需要对逻辑表达式有很好的理解。

易错点:

  1. 命名重复:

    • 为完整性约束命名时,要确保名称在整个数据库中是唯一的。重复的命名会导致错误。
  2. 错误的数据类型匹配:

    • 在应用完整性约束时,要确保约束条件与字段的数据类型相匹配。例如,不应该在字符型字段上设置数值范围。
  3. 遗漏或误用单引号:

    • 在CHECK约束中,特定的值(如'男''女')需要使用单引号。遗漏或误用会导致语法错误。
  4. 不恰当地删除约束:

    • 在修改表结构时,可能需要删除并重新添加某些约束。如果不小心删除了错误的约束,可能会导致数据完整性问题。
  5. 外键参照的表和字段存在性:

    • 在设置外键约束时,必须确保引用的表和字段真实存在,否则会导致错误。

 5.4 完整性约束命名子句_第3张图片

你可能感兴趣的:(数据库系统概论,sql,数据库)