第三章 保证数据完整型

                                 第三章 保证数据完整型
3.1数据完整性概括
1.实体完整性:实体完整性将定义为特定的表的唯一实体。实体完整性强直表的标识列或主键的完整性,它可以通过在表中设置主键约束、唯一约束或标识列属性来实现。


2.域完整性:域完整性是指给定列的输入有效性。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过检查约束)、或可能值的范围(通过外键约束、检查约束、默认值定义、非空约束)。


3.应用完整性:我们必须在有关联的表中,确保一个表的外键的值来源于另一个表中的主键值。引用完整性一般通过外键约束来记录。


4.用户自定义完整性:用户自定义完整性使我们可以定义不属于其他任何完整性分类的特定业务规则。用户自定义完整性可以通过触发器、存储过程等实现。


3.2数据完整性的实现 
创建非空约束:如:不允许在Name和PhoneNo列输入NULL值的语法为:
                  CREATE TABLE Friend (Name VARCHAR(50) NOT NULL,
                                   PhoneNo VARCHAR(15) NOT NULL);
 
设置主键约束:主键约束是应用于表的列的一个约束。
              下面的代码创建Friend表,并将一个名为My PrimaryKey的主键约束与列Name关联:
           CREATE TABLE Friend(
              Name      VARCHAR(50)  NOT NULL,
              PhoneNo    VARCHAR(15)  DEFAULT‘不知道电话号码’NOT NULL,
              CONSTRATNT MyprimaryKey PRIMARY KEY (NULL));
              对于符合主键,我们只需要列出都好分隔的参与复合主键所有列即可。
    
             如果我们不想给主键约束提供一个名字,也可以使用如下的语法:
          CREATE TABLE Friend(
             Name      VARCHAR(50)  NOT NULL,
             PhoneNo    VARCHAR(15)  DEFAULT‘不知道电话号码’NOT NULL,
             PRIMARY KEY (NULL));


             另外还可以使用跟简单的方法:
          CREATE TABLE Friend(
             Name      VARCHAR(50) PRIMARY KEY NOT NULL,
             PhoneNo    VARCHAR(15)  DEFAULT‘不知道电话号码’NOT NULL);
        
      为测试上面创建的表,我们可以试着先向该表中添加一个姓名为NULL的记录,然后是两个相同的姓名的记录:
         INSERT INTO Friend (PhoneNo) VALUES ('555 2323');
         INSERT INTO Friend(Name,PhoneNo) VALUES ('ohn Doe','12345678');
         INSERT INTO Friend(Name,PhoneNo) VALUES ('ohn Doe','87654321');


设置唯一约束:指给定列的所有的值必须是唯一的。该列在表中每一行的值必须唯一。表可以有多个唯一约束。
            以上一个PhoneNo为例,我们可以将其作为唯一列,以确保没有朋友有相同的电话号码。实例
           CREATE TABLE Friend(
              Name   VARCHAR(50)  PRIMARY NOT NULL,
              PhoneNo VARCHAR(15) UNIQE);
 
设定默认值:DROP TABLE Friend;


设置检查约束:检查约束是最灵活的约束类型,它允许我们在更改或插入行到数据库时有一个较宽范围的限制。
             
             下面的语句创建Friend表,表中有一个名为Age的列,以及一个名为AgeGonstraint的检查约束,用于防止小于10以及大于100的值进入Age列:
              CREATE TABLE Friend(
              Name    VARCHER(50) PRIMARY KEY NOT NULL,
              PhoneNo  VARCHER(15) DEFAULT '不知道电话号码',
              Age     INT,
              CONSTRAINT  checkAge CHECK (Age BETWEEN 10 and 100));


使用自动编号列:
              CREATE TABLE Friend(
                 Friend INT IDENTITY PRIMARY KEY NOT NULL,
                 Name    VARCHER(50),
                 PhoneNo  VARCHER(15) DEFAULT 'Unknown Phone');


3.3对已存在的表实施数据完整性:
            下面的代码如何向一个已存在的表中删除一个UNIQUE约束,同时添加一个主键约束。在这个列子中,我们同时为主键约束提供一个名字:
               CREATE TABLE Friend(
                  Name    VARCHER(50) NOT NULL,
                  PhoneNo  VARCHER(15),
                  CONSTRAINT unq_name UNIQUE(name);

               ALTER TABLE Friend DROP CONSTRAINT unq_name;
               ALTER TABLE Friend ADD CONSTRAINT pk_FriendName PRIMARY KEY (Name);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值