保证数据的完整性:


3.1数据完整性概述:

  数据完整性的意义:我们知道数据库能防止储存垃圾数据,RDBMS实现该功能主要是通过维护数据完整性来实现的。根据数据完整性实施方法我们将其分为四类:实体完整性、域完整性、引用完整性、自定义的完整性。

  1. 实体完整性:一个表中的一行和它代表的一行完全一致,那么我们就说该表具有完整性。
  2. 域完整性:指给定列的输入有效性,如:限制类型(通过数据类型)、格式(检查约束)、可能值(外简约束、检查约束、默认值定义、非空约束)。
  3. 引用完整性:实体与实体之间的联系在表中用外键表示。
  4. 自定义完整性:可以自定义不属于其他任何完整性分类的特定业务规则。

3.2数据完整性的实现:

  1. 创建非空约束,字段后面加not null如:id int not null;
  2. 设置主键约束,primary key如:id int primary key not null;
  3. 设置唯一约束,unique如:phoneNo varchar(11) unique;
  4. 指定默认值,default如:address varchar(30) default '不知道电话号码' not null;
  5. 设置检查约束,check给定插入数据一个范围要求。如:Age int check (Age between 10 and 100);年龄范围在10到100岁之间。
  6. 使用自动编号,identity如:id int identity(1000 1) primary key not null;自动编号1到1000。
  7. 理解引用完整性和外键约束foreign key 约束链接的两个列必须是相同的数据类型。如:有两张表friend和phone。friend表中有主键friendId,phone表中有字段friendId,那么建立外键形式如:foreign key (friendId) references friend(friendId);此外键是健在表phone中的,前面的friendId是指phone表中的字段friedId,后面才是friend表中的主键friendId。有外键约束的表是不能删除被其他表引用的表,如果要删除首先必须是去掉引用关系。
  8. 对已经存在的表实施数据完整性。前面我们知道可以通过alter table 添加或者删除列,当然也可以添加、删除主键、外键、其他约束。语法如:alter table friend drop constraint unq_name;(删除唯一约束)。又如:alter table friend add constraint pk_friendName primary key(name);(添加主键约束语句)

总结上述知识:非空、主键约束、唯一约束、自动编号、外键约束等是经常会用到的。这些知识是必备的技能,被问到的可能性相对较低。

数据库知识整理<三>的更多相关文章

  1. 数据库知识整理<六>

    聚合函数与分组 6.1使用聚合函数进行数据统计: 聚合函数常见的有以下几种: count:返回该结果集中行的数目. sum:返回结果集中所有值的总和. avg:返回结果集中所有值的平均值. max:返 ...

  2. 数据库知识整理<一>

    关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数 ...

  3. 数据库知识整理<八>

    联接: 8.1理解简单的单联接: 基本上联接的结果是每个集合的笛卡尔积.例如:两个集合{a,b,c}和{a,b}的笛卡尔积是如下的成对集合:{(a,a),(a,b),(b,a),(b,b),(c,a) ...

  4. 数据库知识整理<五>

    简单的数据查询: 5.1查询的基本结构: Sql语句:select [distinct] (* | column [alias],...) from table [where condition] [ ...

  5. 数据库知识整理<二>

    又继续写的博客,希望自己能坚持每天写博客.分享自己的点滴,对自己成长有帮助.今天下午高强度打了三个小时篮球,小腿都抽筋了.很爽,失落的心情似乎变得开明了一些.想到了一句话:“像SB式的坚持总会有好的收 ...

  6. 数据库知识整理<四>

    使用DML语句更改数据: 所谓DML语句是指数据库操作语句,其中包括的是对数据库数据的修改.删除.插入. 4.1添加新数据: 插入单行的记录:基本的SQL语句为-insert into <表明& ...

  7. 数据库知识整理<七>

    组合查询: 7.1使用子查询: 嵌套在其他查询中的查询,我们称之为子查询.子查询本身也可能包含一个子查询.子查询也称为内部查询,而包含子查询的语句也称为外部查询. 所有的子查询可以被分为两个类别:子查 ...

  8. 【OGG】OGG基础知识整理

    [OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...

  9. MySQL 索引知识整理(创建高性能的索引)

    前言: 索引优化应该是对查询性能优化的最有效的手段了.索引能够轻易将查询性能提高几个数量级. // 固态硬盘驱动器有和机械硬盘启动器,有着完全不同的性能特性: 然而即使是固态硬盘,索引的原则依然成立, ...

随机推荐

  1. Angularjs-Dirty Checking

    Angularjs实现了数据双向绑定,就像下面这样: <!doctype html> <htnl ng-app> <head> <script src=&qu ...

  2. cs11_c++_lab2

    Matrix.hh class Matrix { int row; int col; int *p; public: Matrix(); Matrix(int x,int y); ~Matrix(); ...

  3. shell字符串判空

    主要用到两个命令 -n  -z if [ -n "$PID" ]; then echo "PID is not empty" fi if[ -z "$ ...

  4. TCP协议总结--停止等待协议,连续ARQ协议,滑动窗口协议

    前言:在学习tcp三次握手的过程之中,由于一直无法解释tcpdump命令抓的包中seq和ack的含义,就将tcp协议往深入的了解了一下,了解到了几个协议,做一个小结. 先来看看我的问题: 这是用tcp ...

  5. linux网络完全与防护

    7.1 网络封包联机进入主机的流程   7.1.1 封包进入主机的流程 1.经过防火墙的分析 iptables 主要功能是封包过滤 主要分析TCP/IP的封包表头来进行过滤的机制 分析的是OSI的第二 ...

  6. 调用Ria Service中方法的各种方式

    前端界面后台: using System; using System.Collections.Generic; using System.Linq; using System.Net; using S ...

  7. Django自定义分页、bottle、Flask

    一.使用django实现之定义分页 1.自定义分页在django模板语言中,通过a标签实现; 2.前段a标签使用<a href="/user_list/?page=1"> ...

  8. javascript-test1

    var AAA = function(name, age) { this.name = name ; this.age = age; } AAA.prototype.getName = functio ...

  9. Python-类的概念及使用1

    1.类:用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. #!/usr/bin/python # -*- coding: UTF-8 -*- cl ...

  10. [转载]Altium规则详解及设置

    在Altium中进行PCB的设计时,经常会使用规则(Rule)来进行限定以确定线宽孔径等参数,此文将简要的介绍规则中的一些标量代表了什么. Electrical——电气规则.安全间距,线网连接等 Ro ...