zoukankan      html  css  js  c++  java
  • [读书笔记]SQL约束

    目的:通过在列级或表级设置约束,确保数据符合某种数据完整性规则

    实现:数据库主动地检查维护数据的完整性

    手段:约束,数据类型,触发器

    ----------------------------------------------------------------------------------------------------------------------------------------------------

    约束的三种类型:

    实体约束,域约束,参照完整性约束

    具体实现方法:

    主键约束,外键约束,唯一约束,CHECK约束,DEFAULT约束,规则,默认值

    [归类]

    域约束:对于列而言,确保列的数据满足特定的标准。CHECK约束,DEFAULT约束,规则和默认值

    实体约束:对于行而言,只关心特定的行,每一行都的特定列都有唯一值。主键约束,唯一约束

    参照完整性约束:某列的值必须与其他列的值匹配。外键约束

    ----------------------------------------------------------------------------------------------------------------------------------------------------

     区别约束和规则、默认值:

    规则和默认值的应用较早于CHECKDEFAULT约束,它们是较老的SQL备用约束的一部分,主要是为了向后兼容而使用。

    约束:是一个表的特征,本身没存在形式;

    规则、默认值:是单独定义,然后绑定到表上。

    ----------------------------------------------------------------------------------------------------------------------------------------------------

    [语法]

    添加约束——使用 ALTER TABLE  <table name>

     ALTER TABLE <table name>

    ADD CONSTRAINT <constraint name>

    <constraint type> <constraint parameters…>

     

    外键约束

    <column name><data type><nullability>

    FOREIGN KEY REFERENCES <table name>(<column name>)

    [ON DELETE {CASCADE|NO ACTION|SET NULL|SET DEFAULT}]

    [ON UPDATE {CASCADE|NO ACTION|SET NULL|SET DEFAULT}]

    ALTER TABLE <table name>

    ADD CONSTRAINT <constraint name>

    FOREIGN KEY (<column name>) REFERENCES <table name>(<column name>)

    唯一约束

    <column name> <data type> <nullabiliby>

    UNIQUE

     

    ALTER TABLE <table name>

    ADD CONSTRAINT <constraint name>

    UNIQUE (<column name>)

     

    CHECK约束

    ALTER TABLE <table name>

    ADD CONSTRAINT <constraint name>

    CHECK

    (<rule…>)

     

    DEFAULT约束

    <column name> <data type> <nullability>

    DEFAULT <default value>

     

    ALTER TABLE <table name>

    ADD CONSTRAINT <default name>

    DEFAULT <value> for <column name>

     

    在创建约束时忽略无效的数据

    利用SQL Server创建约束时,如果现有的数据无法满足约束要求,则无法创建该约束。有两种解决办法:1)修改现有的数据,使其符合约束要求;2)在ALTER语句中添加WITH NOCHECK 选项:

    ALTER TABLE <table name>

    WITH NOCHECK

    ADD CONSTRAINT <constraint name>

    <constraint type>..

     

    临时禁用已存在的约束

    ALTER TABLE <table name>

    NOCHECK

    CONSTRAINT <constraint name>

     

    启用已禁止的约束

    ALTER TABLE <table name>

    CHECK

    CONSTRAINT <constraint name>

     

    删除约束

     alter table <tablename>
     drop constraint <constraintname>

     

    修改约束

    先删除约束,后再添加

  • 相关阅读:
    网络基础
    Web开发几种常用工具
    win组合键概述(windows10)
    Alfred使用
    Java8之新特性--modules
    jsp九大内置对象和四大作用域
    authtype
    Myeclipse中的快捷键
    如何在Jenkins CI 里调试
    写好unit test的建议和例子
  • 原文地址:https://www.cnblogs.com/lsr-flying/p/4312975.html
Copyright © 2011-2022 走看看