zoukankan      html  css  js  c++  java
  • 数据库—SQL—数据库完整性

    5.1 实体完整性

    关系模型的实体完整性在CREATE TABLE 中用PRIMARY KEY 定义,对单属性构成的码有两种说明方法:一种是定义为列级约束条件,另一种是定义为表级约束条件。

    对多个属性构成的码只有一种说明方法,即定义为表级约束条件。

    例:将Student 表中的Sno属性定义为码

     CREATE TABLE Student

    (Sno CHAR (9)PRIMARY KEY ,  //在列级定义主码

    Sname CHAR (20) NOT NULL,

    Ssex CHAR(2)

    Sage SMALLINT,

    Sdept CHAR(20)

    );

    5.2 参照完整性

    例:定义SC 中的参照完整性

    CREATE TABLE SC

    (Sno CHAR (9) NOT NULL,

      Cno CHAR(4)NOT NULL,

    Greade SMALLINT,

    PRIMARY KEY (Sno,Cno), //在表级定义实体完整性

    FOREIGN KEY (Sno) REFERENCES Student(Sno), //在表级定义参照完整性

    FOREIGN KEY (Cno) REFERENCES Course (Cno) //在表级定义参照完整性

    );


    5.3 用户定义的完整性

    1.不允许取空值

    例:在定义SC表时,说明Sno,Cno,Grade属性不允许取空值

    CREATE TABLE SC

    Sno CHAR(9) NOT NULL,        // Sno属性不允许取空值

    Cno CHAR (4) NOT NULL, //Cno属性不允许取空值

    Grade SMALLINT NOT NULL, //Grade属性不允许取空值

    PRIMARY KEY (Sno,Cno), //如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值则在列级不允许取空值的定义就不用写了


    );

    2.列值唯一

    例:建立部门表DEPT  要求部门名称Dname列取值唯一  部门编号 Deptno列为主码

    CREATE TABLE DEPT 

    (

    Deptno NUMERIC (2),

    Dname CHAR(9)UNIQUE, //要求Dname列值唯一

    Location CHAR(10),

    PRIMARY KEY (Deptno)

    );

    3.用CHECK短语指定列值应该满足的条件

    例:Student表中Ssex只允许取 男 或 女

    CREATETABLE Student

    Sno CHAR(9)PRIMARY KEY,

    Sname CHAR(8)NOT NULL,

    Ssex CHAR(2) CHECK (Ssex IN (‘男’,‘女’)), //性别属性Ssex只允许取男或女

    Sage SMALINT ,

    Sdept CHAR(20)

    );

  • 相关阅读:
    unigui1404在delphi10.2.2安装
    入库单的一些业务逻辑
    mormot日志
    论MORMOT序列的JSON格式
    线程安全的队列
    SynDBOracle.pas
    轻量级的REST中间件
    TQuery
    100亿数据1万属性数据架构设计
    愤怒的TryCatch
  • 原文地址:https://www.cnblogs.com/tryitboy/p/4231157.html
Copyright © 2011-2022 走看看