• SQL数据库约束、默认和规则


    数据的完整性

    实体完整性 又称为行完整性,即数据库中的所有行都具有一个非空且没有重复的主键值

    MSSQL中通过唯一索引、PRIMARY KEY约束、UNIQUE约束、INDENTITY属性等来强制主键的唯一性

    域完整性  又叫列完整性,以保证列数据的输入具有正确的数据类型、格式和有效的数据范围

    强制域有效性可以通过限制数据类型、CHECK约束和规则、FOREIGN KEY、DEFAULT、NOTNULL定义

    参照完整性 又叫引用完整性,旨在保证主表和从表数据的一致性,通过FOREIGN KEY和CHECK约束实现

    用户定义完整性  用户定义的不属于以上完整性的特点那个规则

    SQL数据库约束、默认和规则

    1)约束 CONSTRAINT

    实现约束的五种方式:

    (1) CHECK约束

    [CONSTRAINT 约束名] CHECK (逻辑表达式)

    CREATE TABLE 成绩

    (

    学号 char(8) NOT NULL,

    CONSTRAINT ck_cj CHECK (成绩>=0 and 成绩<=100)

    )

    ALTER TABLE 成绩

    ADD CONSTRAINT ck_cj (成绩>=60 and 成绩<=100)

    ALTER TABLE 成绩

    DROP CONSTRAINT ck_cj

    (2)PRIMARY KEY约束

    [CONSTRAINT 约束名] PRIMARY KEY [CLUSTERED] [NONLUSTERED]

    CREATE TABLE 学生

    (

    学号 char(8) NOT NULL CONSTRAINT pl_xs PRIMARY KEY CLUSTERED

    )

    ALTER TABLE 学生

    ADD CONSTRAINT pk_xs PRIMARY KEY CLUSTERED(学号)

    (3)FOREIGN KEY约束 references

    [CONSTRAINT 约束名] FOREIGH KEY    (从表外键) PEFERENCES 主表 (主表外键)

    CREATE TABLE 成绩

    (

    学号 char(8) NOT NULL FOREIGN KEY REFERENCES 学生 (学号)

    )

    (4)UNIQUE约束

    [CONSTRAINT 约束名] UINQUE [CLUSTEREDNONCLUSTERED](列名...)

    CREATE TABLE 职工

    (

    身份证号 char(18) NULL CONSTRAINT uni_sfz UNIQUE

    )

    (5)DEFAULT约束

    [CONSTRAINT 约束名] DEFAULT 默认约束值 FOR 列名

    CREATE TABLE 学生

    (

    性别 char(2) DEFAULT '男'

    )

     默认[DEFAULT]

    默认是一种数据库对象,可以绑定在一列或者多列上,作用与DEFAULT约束相似,在插入数据行时,为没有指定数据的列提供实现定义的默认值

    创建默认对象

    CREATE DEFAULT 默认对象名 AS 默认值

    USE 学生成绩

    CREATE DEFAULT sex_mr AS '男'

    绑定默认对象

    sp_bindefault [@defname=] '默认对象名' [@objname] '绑定的列名'

    use 学生成绩

    go

    exec sp_bindefault 'sex_mr','学生.性别'

    删除绑定

    sp_unbindefault [@objname=] '绑定的列名'

    use 学生成绩

    go

    exec sp_unbindefault '学生.性别'  

    删除默认对象

    DROP DEFAULT 默认对象名

    use 学生成绩

    go

    drop default sex_mr

    规则(RULE)

    规则也是一种数据库对象,可以绑定在一列或多列上,作用与CHECK约束相似,在插入数据行时,指定接收的数据值的范围

    创建规则

    CREATE RULE 规则名 AS 规则条件

    USE 学生成绩

    go

    create rule cj_rl as @cj>=0 and @cj<=100

    绑定规则

    sp_bindrule [@rulename=] '规则对象名' [@objname] '绑定的列名'

    use 学生成绩

    go

    exec sp_bindrule 'cj_rl','成绩.成绩'

    删除规则

    sp_unbindrule [@objname=] '绑定的列名'

    use 学生成绩

    go

    exec sp_unbindrule '成绩.成绩'

    删除规则对象

    DROP RULE 规则对象名

    use 学生成绩

    go

    drop rule cj_rl

  • 相关阅读:
    MemoryCache
    Page.Cache
    webform运行时弹出JavaScript的alert窗口
    server.Transfer不工作
    Server.Transfer VS Response.Redirect – Simplified
    Code Pages
    Unicode, UTF, ASCII, ANSI format differences
    Character Encoding in .NET
    分布式之消息队列复习精讲
    Understand:高效代码静态分析神器详解(一)
  • 原文地址:https://www.cnblogs.com/wcxcc/p/10709432.html
Copyright © 2020-2023  润新知