SQL Server中的完整性和外键

server

所谓完整性就是数据库中数据的一致性及有效性通常的说法有实体(行)完整性,域(列)完整性,及参考完整性(参考SQL Server)。

实体完整性定义表中的所有行能唯一的标识,一般用主键,唯一索引 UNIQUE关键字,及IDENTITY属性比如说我们的身份证号码,可以唯一标识一个人。

域完整性通常指数据的有效性,限制数据类型,缺省值,规则,约束,是否可以为空,域完整性可以确保不会输入无效的值。

参考完整性维护表间数据的有效性,完整性,通常通过建立外部键联系另一表的主键实现,比如图书管理系统中有两个表,一个是人员表(pid,pname...) ,记录借阅人的信息,为保证人员的唯一性,可在字段pid建主键,唯一索引。另一个是借阅明细表(...pid...),在借阅明细表中建一外键将两个表的pid 联系起来,保证借阅表中的人在人员表的范围内,另外,如果某人在借阅表中有借书未还的记录,那么他就不能在人员表中删除。 还可以用触发器来维护参考完整性。

时间: 2024-11-03 22:15:23

SQL Server中的完整性和外键的相关文章

sql server中的外键约束

server sql server中建立外键约束有3中方式:1.Enterprise Manager中,Tables,Design Table,设置Table的properties,   可以建立constraint, reference key;2.Enterprise Manager中,Diagrams, new Diagrams,建立两个表的关系.3.直接用transact sql语句. 三个方法都需要先建立数据表.-- 创建表author :CREATE TABLE [dbo].[aut

Sql Server中如何实现主键由字母数字组成并按照数字自动增长

在SQL SERVER 中如果我们想要使主键按照一定规则自动增长我们可以这样做: 这里我们新建一张研究表,里面有研究ID,研究人员姓名和研究医院. 我们使SicentificId 设为主键 并且从1开始每次递加1. 这里要更各位强调一下使用Identity 关键字的前提要求是 数据类型必须为 int ,decimal,bigint,smallint等数值类型. 但是很多时候只有一个数字编号并不能满足我们的要求, 这里笔者的需求就是编号要按照字母加数字的组合,并且字母固定且数字每次递增1. 那么我

SQL Server中处理空值时涉及的三问题

数据完整性是任何数据库系统要保证的重点.不管系统计划得有多好,空数据值的问题总是存在.本文探讨了在SQL Server中处理这些值时涉及的3个问题:计数.使用空表值以及外键处理. 用COUNT(*)处理空值 大多数集合函数都能在计算时消除空值:COUNT函数则属于例外.对包含空值的一个列使用COUNT函数,空值会从计算中消除.但假如COUNT函数使用一个星号,它就计算所有行,而不管是否存在空值. 如果希望COUNT函数对给定列的所有行(包括空值)进行计数,请使用ISNULL函数.ISNULL函数

将SQL Server中的表变成txt文件

方法一:用BCP命令 bcp 实用工具 bcp 实用工具在 Microsoft? SQL Server? 2000 实例和数据文件之间以用户指定的格式复数据. 语法 bcp {[[database_name.][owner].]{table_name | view_name} | "query"} {in | out | queryout | format} data_file [-m max_errors] [-f format_file] [-e err_file] [-F fir

Sql Server中清空所有数据表中的记录_MsSql

Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: 复制代码 代码如下: exec sp_msforeachtable  @Command1 ='truncate table ?' 删除所有数据表: 复制代码 代码如下: exec sp_msforeachtable 'delete   N''?''' 清空SQL Server数据库中所有表数据的方法(有约束的情况) 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之

SQL Server中的执行引擎入门 图解_MsSql

本文旨在分类讲述执行计划中每一种操作的相关信息. 数据访问操作     首先最基本的操作就是访问数据.这既可以通过直接访问表,也可以通过访问索引来进行.表内数据的组织方式分为堆(Heap)和B树,其中表中没有建立聚集索引时数据是通过堆进行组织的,这个是无序的,表中建立聚集索引后和非聚集索引的数据都是以B树方式进行组织,这种方式数据是有序存储的.通常来说,非聚集索引仅仅包含整个表的部分列,对于过滤索引,还仅仅包含部分行.     除去数据的组织方式不同外,访问数据也分为两种方式,扫描(Scan)和

在SQL Server中迁移数据的几种方法_MsSql

1.通过工具"DTS"的设计器进行导入或者导出 DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不 多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动.在SQL Server Enterprise Manager中,展开服务器左边的+,选择数据库,右击,选择All tasks/Import Data...(或All tasks/Export Data...),进入向导模式,按提示一步一步走就行了,里面分得很

SQL SERVER中UPDLOCK ,READPAST使用

SQL SERVER中中获取不重复数据: select top 1 * from orders with(UPDLOCK ,READPAST,RowLock) where Id=1 READPAST 指定数据库引擎不读取由其他事务锁定的行.在大多数情况下,这同样适用于页.如果指定了 READPAST,则行级锁和页级锁都将被跳过.也就是说,数据库引擎将跳过这些行或页,而不是阻塞当前事务直到锁被释放.例如,假设表 T1 包含一个单精度整数列,其值为 1.2.3.4 和 5.如果事务 A 将值 3 更

SQL Server中生成测试数据

原文:SQL Server中生成测试数据 简介      在实际的开发过程中.很多情况下我们都需要在数据库中插入大量测试数据来对程序的功能进行测试.而生成的测试数据往往需要符合特定规则.虽然可以自己写一段程序来进行插入数据,但每一个项目就写一个插入数据的程序并不明智.本文主要介绍使用VS2010的数据生成计划在SQL Server中生成测试数据.   生成测试数据的方法      1.手动编辑           在开发过程中,非常少量的数据可以手动插入.这个方法的缺点可想而知-.插入100条数