zoukankan      html  css  js  c++  java
  • 约束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 mvc velocity多视图
    ubuntu 的远程桌面
    nhibernate 3.3 linq扩展
    MongoDB资料汇总专题[转发]
    SQLServer 2008 删除、压缩日志
    VS2012和2010 设置framework版本
    引用的程序集 没有强名称
    Xamarin for OSX – SetUp
    Xamarin devexpress datagrid 样式
    Xamarin devexpress Grid
  • 原文地址:https://www.cnblogs.com/Lulus/p/7874414.html
Copyright © 2011-2022 走看看