zoukankan      html  css  js  c++  java
  • 数据库的约束

    数据库的约束主要是为了保证数据的有效性,从而保证了数据的安全性。

    约束定义数据库中的数据必须符合的某些属性,他们可以应用与列,整个表格,多个表格,或整个模式,可靠的数据库系统可以确保约束始终保持不变(除了可能在事务内部,对于所谓的延迟约束)。

    1. 主键约束(Primary Key Constraint):

    保证数据的唯一性,并且主键列数据不能为空(唯一性,非空性)。

    添加主键约束(将id作为主键):
    alter table 表名
    add constraint 主键名 primary key(id)
    

    2. 唯一约束(Unique Constraint):

    保证数据的唯一性,唯一约束的列可以为空(唯一性,可以空,但只能有一个)。

    添加唯一约束(身份证号唯一,因为每个人的都不一样):
    alter table 表名
    add constraint 唯一约束名 unique(IdentityCardNumber)
    

    3. 检查约束(Check Constraint):

    保证数据的有效性,让值在有效范围内取值,对该列数据的范围、格式的限制(如:年龄、性别等)

    添加检查约束(对年龄加以限定:20-40之间,对性别加以限定:男或女):
    alter table 表名
    add constraint 检查约束名 check(age between 10 and 40)
    
    alter table 表名
    add constraint 检查约束名 check(sex = '男' or sex = '女')
    

    4. 默认约束(Default Constraint):

    保证数据的完整性,如果没有填入信息时,会使用默认信息填入,保证数据的完整性。

    添加默认约束(如果地址不填,默认为“地址不详”):
    alter table 表名
    add constraint 默认约束名 default('地址不详') for address
    

    5. 外键约束(Foreign Key Constraint):

    需要建立两表间的关系并引用主表的列,保证数据的完整性,互相依赖的数据不能缺失。比如学生依赖班级表,班级表数据删除后,学生记录就没有了班级信息。

    添加外键约束(主表info和从表order建立关系,关联字段:userId):
    alter table 表名
    add constraint 外键名 foreign key(order) references info(userId)
    

    关于约束的其他操作:

    删除约束
    alter table 表名
    drop constraint 约束名
    
    关闭约束
    alter table 表名
    disable constraint 约束名 cascade
    //如果没有被引用则不需CASCADE关键字
    
    打开约束
    alter table 表名
    enable constraint 约束名
     //注意:打开一个先前关闭的被引用的主键约束,并不能自动打开相关的外部键约束
    

    注意:

    1. 添加主键约束会自动创建唯一索引。如果表中尚未创建 聚焦索引,则自动创建聚焦唯一索引。如果表中已存在聚焦索引,则自动创建非聚焦索引。

    2. 添加唯一约束会自动创建唯一索引。如果未在unique关键字后加上[nonclustered|clustered],则默认会创建非聚焦索引。

  • 相关阅读:
    python3下搜狗AI API实现
    辽宁移动宽带体验及魔百盒M101s-2刷机
    年会抽奖系统-支持作弊,指定中奖
    论python3下“多态”与“继承”中坑
    fiddler抓手机报文的配置指南
    微软BI套件
    IntelliJ IDEA 2018 Community(社区版)创建J2EE项目+Tomcat9部署
    Spring.net的Demo项目,了解什么是控制反转
    manjaro安装virtualbox教程
    Debian9 安装后的配置笔记
  • 原文地址:https://www.cnblogs.com/zbh355376/p/14271506.html
Copyright © 2011-2022 走看看