• 约束Constraints


    基本

    目的:为了防止数据库存在不符合语义的数据,防止错误信息的输入和输出
    约束的用途是限制用户输入到表中的数据的值的范围

    分类

    分类1:列级约束、表级约束两种
    分类2:
    NOT NULL
    UNIQUE
    PRIMARY KEY
    FOREIGN KEY
    CHECK
    DEFAULT

    创建约束

    primary key 约束

    特征:
    a、创建primary key约束时,SQL Server会自动创建一个唯一的聚集索引;
    b、定义了primary key约束的字段的取值不能重复,并且不能取null值;
    c、每个表只能定义一个primary key约束;
    d、如果表中已经有了聚集索引,那么在创建primary key约束之前,要么指定所创建的是非聚集索引,要么删除已有的聚集索引
    例 1 创建表级primary key约束。

    create table 学生表(
        学号  char(8)  not null,
        姓名 char(8) null,
    constraint  pk_学生表  primary key  (学号));
    

    例 2 创建列级primary key 约束

    create table 学生表(
        学号 char(8)  not null,
    constraint pk_学号 primary key nonclustered(学号),
        姓名  char(8) null);
    

    Foreign Key约束

    外键约束会影响插入和删除性能
    特征:
    a、一旦Foreign Key约束定义了某个字段,则该字段的取值必须参照(Reference)同一表或另一表中的Primary Key约束或Unique约束。
    b、Foreign Key约束不能自动建立索引。
    例 3

    create table  成绩表1(
        学号 char(8) not null constraintpk_no references 学生表(学号),
        成绩 int);
    

    default 约束 默认值约束

    特征:
    a.每一个字段只能有一个Default约束;
    b.default约束不能放在IDENTITY字段上或者timestamp字段上。
    例 4

    alter  table 成绩表
           add constraint df_成绩 default 0 for 成绩
    

    例 5

    create  table 成绩表2(
             学号 char(8) not null,
              课程代码 char(7) not null,
              成绩 float constraint  df_score default 0.00);
    

    Unique约束(用于不是主键但又要求不能有重复值出现的字段)

    特征:
    a.一个表可以有多个Unique 约束;
    b. 按照Unique约束的要求,在一个表中不允许受约束列的字段上有相同的null值,因此最好将被定义了Unique约束的列定义为非空(允许被约束列的值为空)
    c.创建Unique约束时,系统自动创建了非聚集索引。
    例 6

    alter table 学生表
             add constraint un_name unique(姓名)
    

    例 7

    create table abc(
              学号 char(8) not null  constraint un_no unique,
              姓名 char(8));
    

    例 8

    create table cbd(
                      学号 char(8) not null,
                      姓名 char(8),
                      constraint  un_xh unique(学号));
    

    Check约束

    特征:
    a.限制了向特定的字段列输入数据的类型;
    b.表级定义的Check约束可以对多个字段列进行核查。
    例 9

    create table efg(
                学号 char(8)not null,
                姓名 char(8) not null,
                年龄 int,
               constraint  chk_age check (年龄>17 and 年龄<25));
    

    例10

    create table  efg1(
               学号 char(8) not null,
               姓名 char(8) not null,
              年龄 int constraint chk_age1 check(年龄>17 and 年龄<25));
    

    (6)空值约束

    删除约束

    如果需要将某个约束删除,可以使用alter table约束,其语法格式是:

    alter table 表名
    drop constraint 约束名
    

    转载自:http://blog.csdn.net/zpf336/article/details/42402387

  • 相关阅读:
    Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
    Android 解决listview中checkBox错位选择
    带checkbox的ListView实现(一)——数据与渲染完全分离的传统实现方式
    ViewPager + Fragment实现滑动标签页
    android中使用PopupWindow实现弹出窗口菜单
    Android TextView背景颜色与背景图片设置
    Android特效 五种Toast详解
    Android 带checkbox的listView 实现多选,全选,反选
    android 截取指定位置字符串
    带checkbox的ListView实现(二)——自定义Checkable控件的实现方法
  • 原文地址:https://www.cnblogs.com/Lulus/p/7874414.html
Copyright © 2020-2023  润新知