保证数据的完整性:


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. Linux: vi 编辑器中文乱码

    [问题] vi编辑器中文乱码 [解决方案] vi /etc/sysconfig/i18n改成如下即可:LANG="en_US.UTF-8"LANGUAGE="zh_CN. ...

  2. 0525 SCRUM项目7.0

    主题:在下一个SPRINT中做的更好 一,实验回顾总结 当谈到在一个团队里的收获,首当其冲的便是对于团队工作流程的切身体会.亲力亲为.从申报材料.问卷设计.访谈提纲.团队建设.书签制作到实地访谈.问卷 ...

  3. mysql之触发器入门

    触发器语法: CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.{ BEFORE |  ...

  4. MySQL的数据库无法插入中文是怎么回事?

    插入中文就报错: Incorrect string value: '\xE7\x8F\xBD\xE7\x8F\xBA' for column 'name' at row 1 用set names ut ...

  5. 界面设计常用CSS属性

    CSS常用属性整理: 1 字体属性 font-family 设置使用的字体 font-style 设置字体的样式,是否斜体 font-variant 设置字体的大小写 font-weight 设置字体 ...

  6. 快考试了,尽快写完HashTable。

    (1)Count Primes 质数(素数):在大于1 的自然数中,除了1和它本身之外,不能被任何其他整数整除. 解题思路:使用一个boolean类型的数组,从i(2) 开始循环,将小于N的i的倍数都 ...

  7. js基本常识了解

    http://www.cnblogs.com/Yue0327/p/5441773.html

  8. java基础九[网络与线程](阅读Head First Java记录)

    网络socket连接 Java API的网络功能包(java.net)已经将底层的TCP连接等都封装好了,我们只需要通过Socket对象来建立客户端和服务器的连接,然后客户端能向服务器发送请求,并接收 ...

  9. easyUI删除行的操作

    columns: [[ { field: 'KeyContent', title: '关键词' }, { field: 'ProductType', title: "用品/配件", ...

  10. scala学习:apply方法

    摘抄两段话: 在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号.如 " to ",实际完整调用是 ".to()".但 &qu ...