SQL SERVER数据完整性及约束

合集下载

2022年北华大学软件工程专业《数据库原理》科目期末试卷B(有答案)

2022年北华大学软件工程专业《数据库原理》科目期末试卷B(有答案)

2022年北华大学软件工程专业《数据库原理》科目期末试卷B(有答案)一、填空题1、SQL Server中数据完整性包括______、______和______。

2、____________和____________一起组成了安全性子系统。

3、设有关系模式R(A,B,C)和S(E,A,F),若R.A是R的主码,S.A是S的外码,则S.A的值或者等于R中某个元组的主码值,或者______取空值,这是规则,它是通过______和______约束来实现的。

4、关系系统的查询优化既是关系数据库管理系统实现的关键技术,又是关系系统的优点。

因为,用户只要提出______,不必指出 ______。

5、若事务T对数据对象A加了S锁,则其他事务只能对数据A再加______,不能加______,直到事务T释放A上的锁。

6、设在SQL Server 2000环境下,对“销售数据库”进行的备份操作序列如下图所示。

①出现故障后,为尽可能减少数据丢失,需要利用备份数据进行恢复。

首先应该进行的恢复操作是恢复_____,第二个应该进行的恢复操作是恢复_____。

②假设这些备份操作均是在BK设备上完成的,并且该备份设备只用于这些备份操作,请补全下述恢复数据库完全备份的语句RESTORE_____FROM BKWITH FILE=1,_____;7、数据库系统在运行过程中,可能会发生各种故障,其故障对数据库的影响总结起来有两类:______和______。

8、____________、____________、____________和是计算机系统中的三类安全性。

9、数据库恢复是将数据库从______状态恢复到______的功能。

10、某事务从账户A转出资金并向账户B转入资金,此操作要么全做,要么全不做,为了保证该操作的完整,需要利用到事务性质中的_____性。

二、判断题11、并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。

SQL Server数据库应用开发技术 第六章

SQL Server数据库应用开发技术 第六章
返回目录
6.2 使用约束
6.2.1 空约束(NULL)、非空约束(NOT NULL)
1. 用SQL Server Management Studio实现 【例6.1】设置学生表中字段学号、姓名、性别、入学 时间不允许为空。 1)打开SQL Server Management Studio,在对象资源管理 器中展开教务管理系统,展开“表”结点。 2)选择“学生表”,单击右键,选择“修改”进入表设计 器进行表结构设计,如图6.1所示,分别将学号、姓名 、性别、入学时间字段后的允许空复选框去掉对勾。 3)修改完毕后单击工具栏上的“保存”图标或选择菜单“ 文件”下的“保存”项,关闭窗口即可。
第6章 数据完整性实施
6.1 数据完整性实施方法 6.2 使用约束
6.3 使用默认
6.4 使用规则
6.5 使用标识列
小结
6.1 数据完整性实施方法
有两种方式可以实现数据完整性,即声明数据完 整性和过程数据完整性。 1.声明数据完整性 使用声明数据完整性就是通过在对象定义中来实 现,即定义数据必须满足的条件作为对象定义的一部 分。它包括使用各种约束、默认和规则。 实现数据完整性的首选方法是使用声明完整性。 2.过程完整性 过程数据完整性是通过在脚本语言中定义来实现 的。当执行这些脚本时,就可以强制完整性的实现。 过程数据完整性的方式包括使用触发器和存储过程。 也可以在客户机或服务器上使用其他的编程语言和工 具实现。
【例6.7】创建学生表,对字段身份证号设置唯一约束。
返回目录
6.2 使用约束
6.2.3 唯一约束(UNIQUE)
由于一个表只能定义一个主键,而实际应用中表中 不止一列希望值是唯一的,例如身份证号一般不会做主 键,但它的值也应确保是唯一的,这时就可使用唯一约 束来确保唯一性了。与主键不同的是一个表可以定义多 个 UNIQUE 约束,且定义 UNIQUE 约束列允许空值。不 过由于唯一性,空值也只能出现一次。

第10章 SQL server 2008 表数据完整性

第10章  SQL server 2008  表数据完整性

第10章SQL server 2008 表数据完整性表数据完整性指的是数据库中表数据的准确性和一致性。

数据完整性是衡量数据库中数据质量好坏的一种标志,是确保数据库中数据一致、正确以及符合企业规则的一种思想。

可以使无序的数据条理化,确保正确的数据被存放在正确的位置的一种手段。

10.1 表主键表主键(PRIMARY KEY)通过表数据中的一个列或多个列组合的数据来惟一标识表中的每一行数据。

换句话说,表主键就是用来约束数据表中不能存在相同的两行数据。

而且,位于主键约束下的数据应使用确定的数据,不能输入NULL来代替确定的数值。

在管理数据时,应确保每一个数据表都拥有自己惟一的主键,从而实现数据的实体完整性。

在SQL Server 2008系统中,表的主键约束有以下几个特征和作用:●主键约束通常不允许一个或多个列输入重复的值,来保证一个表中所有行的惟一性,使所有行都是可区分的。

●一个表上只能有一个主键,且组成主键的列的数据都不能为空值。

●当定义主键约束时,SQL Server在主键列上建立惟一索引,这个索引在主键被查询时可以提高查询的速度。

当主键由多个列组成时,某一列上的数据可以出现重复,但是这几个列的组合值必须是惟一的。

并且IMAGE和TEXT类型的列不能被定义为主键。

在SQL Server 2008系统中,定义表的主键可以在创建表的同时定义主键,也可以给已有的表添加主键。

同时如果表中指定的主键不需要时,也可以通过Transact-SQL语句将其主键删除。

1.在创建表时定义主键在创建表时,定义主键(PRIMARY KEY)约束的语法如下:在上面语法中,各元素的具体意义如下:●constraint_name 主键约束的名称,他也是数据库对象,所以约束的命名也必须遵守数据库对象命名的规则。

●CLUSTERED 表示在该列上建立聚集索引。

●NONCLUSTERED 表示在该列上建立非聚集索引。

例如,在【工资管理系统】数据库中,新建一个【学历表】,定义【学历编号】列为主键约束,具体语句如下所示:2.给已有表添加主键如果某个表已经存在,但没有设置主键(PRIMARY KEY)约束,那么就可以使用下列语句向表中添加PRIMARY KEY约束。

第5章sql数据库完整性约束

第5章sql数据库完整性约束
CHECK约束是限制用户输入某一列的数据取值,即该 列只能输入一定范围的数据。 CHECK约束可以作为表定义的一部分在创建表时创建, 也可以添加到现有表中。表和列可以包含多个CHECK约束。 允许修改或删除现有的CHECK约束。 在现有表中添加CHECK约束时,该约束可以仅作用于 新数据,也可以同时作用于已有的数据。默认设置为 CHECK约束同时作用于已有数据和新数据。当希望现有数 据维持不变,则使用约束仅作用于新数据选项。
5.2.4 默认值(DEFAULT)约束
默认约束是指在用户未提供某些列的数据时,数据库 系统为用户提供的默认值。从而简化应用程序代码和提高 系统性能。 表的每一列都可包含一个DEFAULT定义。可以修改或 删除现有的DEFAULT定义,但必须首先删除已有的 DEFAULT定义,然后通过新定义重新创建。 1.利用Management Studio定义(删除)default约束 步骤1:右键要建立default约束的表选择“修改”。 步骤2:在弹出的窗口中对应字段的“默认值或绑定”处 输入默认值。 步骤3:点击保存即可。
PRIMARY KEY约束在表中定义一个主键,唯一的标 识表中的行。一个表只能有一个PRIMARY KEY约束。
当向表中的现有列添加PRIMARY KEY约束时,SQL Server将检查列中现有的数据以确保现有数据遵从主键的 规则,即无空值、无重复值。 每个表都应有一个主键。主键可以是一列或列组合。
CREATE TABLE kc_new (5-4)
(课程号 CHAR(4) NOT NULL CONSTRAINT pk_kch1 PRIMARY KEY, 课程名 CHAR(16) NOT NULL CONSTRAINT ix_kcm1 UNIQUE,
学分 SMALLINT,

数据库管理与开发项目教程(SQL Server 2019)第3版 项目八 实现数据完整性

数据库管理与开发项目教程(SQL Server 2019)第3版 项目八 实现数据完整性

/*定义列名、数据类型、
是否空值
[[CONSTRAINT check_name] CHECK (logical_expression)][,…n]) /*定义
CHECK约束
【例8-1】 在xs数据库中创建XSXX表,并定义CHECK约束。
10
项目8 实现数据完整性 ->任务1 实现域完整性
任务1-2 CHECK约束
项目8 实现数据完整性 ->任务1 实现域完整性
任务1-2 CHECK约束
CHECK约束实际上是字段输入内容的验证规则,表示一个字段的输入内容
必须满足CHECK约束的条件,如果不满足,数据就无法正常输入。
CHECK约束可以作为表定义的一部分在创建表时创建,也可以添加到现有表中。
表和列可以包含多个CHECK约束。允许修改或删除现有的CHECK约束。
【项目描述】
为xs数据库创建CHECK约束、规则、DEFAULT约束、默认值对象、索引、PRIMARY KEY约束、 UNIQUE约束、FOREIGN KEY约束实现数据完整性保护。

项目8 实现数据完整性
【项目分析】 项目4在数据库xs中建立了数据表,在向表中输入数据时,由于种种原因,有
时会输入无效或错误的信息。比如,对不同的学生输入了相同的学号,“性别” 字段的值输入了非法数据,相同的数据行被多次输入,学生成绩表中出现了学生 档案表中不存在的学号等。之所以会出现这些错误信息,是因为没有实现数据完 整性。为避免此类情况发生,本项目主要介绍如何通过实施数据完整性来解决上 述问题,以此保证数据输入的正确性、一致性和可靠性。
《SQL SERVER2019项目开发教程 》
项目8 实现数据完整性
项目8 实现数据完整性

第六章完整性控制(“约束”相关文档)共74张

第六章完整性控制(“约束”相关文档)共74张
[NOT FOR REPLICATION]] } [,…n] }
34
6.2 约束
4)使用企业管理器管理外键
35
36
6.2 约束
CHECK约束
• 一个列级检查约束只能与限制的字段有关;一个表级检查 约束只能与限制的表中字段有关。
• 一个表中可以定义多个检查约束。 • 每个CREATE TABLE语句中每个字段只能定义一个检查约束。 • 在多个字段上定义检查约束,则必须将检查约束定义为表级约 束。
第八章 SQL Server的完整性控制
6.1 数据完整性概述 6.1.1 完整性的分类
6.1.2 数据完整性的实现机制 6.2 约束 6.2.1 主键约束
6.2.2 外键约束 6.2.3 CHECK约束
6.2.4 唯一约束
1
第六章 SQL Server的安全性机制
6.3 规则
6.4.2 查看默认值
注意:外键约束除了和另一个表的主键相关联之外,还可与另 一个表的unique约束相关联。
18
6.2 约束
外部键约束用于强制参照完整性,提供单个字段或者多个字段的参 照完整性。当使用外部键约束时,应该考虑以下几个因素:
①外部键约束提供了字段参照完整性。 ②外部键从句中的字段数目和每个字段指定的数据类型必 须和REFERENCES从句中的字段相匹配。
31
6.2 约束
例:创建一个考勤表,与已存在的“课程基本信息”表相关联。
CREATE TABLE 考勤表(
学号 char(10) not null references 学生基本信息(学号),
姓名 char(10) not null,
课程号 char(2) references 课程基本信息(课程号),

[SQL]基本表的定义及其完整性约束

[SQL]基本表的定义及其完整性约束

[SQL]基本表的定义及其完整性约束在使⽤数据库时,绝⼤多数时间都是在使⽤基本表。

SQL Server数据类型创建基本表基本格式如下:create table <表名>(<列名1> <数据类型> [<列级完整性约束条件>],……<列名n> <数据类型> [<列级完整性约束条件>][, <表级完整性约束条件>])如果完整性约束涉及到多个属性列,则必须定义在表级上,否则可以定义在列级或表级。

如下创建⼀个Persons基本表:use test -- 在该数据库中创建基本表gocreate table Persons(Id_P int primary key, -- Id_P为主键LastName nvarchar(20),FirstName nvarchar(20),Address nvarchar(50),City nvarchar(10))go完整性约束完整性约束的⽤途是限制输⼊到基本表中的值的范围,SQL的完整性约束可分为列级完整性约束和表级完整性约束:列级完整性约束:针对关系属性值的限定条件,只能应⽤在⼀列上表级完整性约束:涉及关系中的多个属性的限制条件,可以应⽤在⼀个基本表中的多个列上。

如果完整性约束涉及到多个属性列,则必须定义在表级上,否则可以定义在列级或表级。

当创建完整性约束之后,它作为基本表定义的⼀部分,存⼊数据字典中。

pri m ary key约束主键(primary key)约束是实体完整性约束,primary key⽤于定义主键,它保证主键的唯⼀性与⾮空性。

⼀个基本表的主键由⼀列或者⼏列构成,可以定义在列级或者表级上,但是不能在两个级别上进⾏定义。

定义主键约束的⽅法如下:1. primary key之间写在列名及其数据类型之后。

例如:create table test(col_name int primary key,……)2. 按照语法在相应的列名及其数据类型后单独列出:constraint <约束名> primary key约束名就是主键的名字。

SQL Server 2000数据库中数据完整性解决方案

SQL Server 2000数据库中数据完整性解决方案
职 业 技 能
C E R HO Z AR E RI ON
S L S re 00 q ev r20 数据库中数据完整性解决方案
徐 也 可
摘要 : 保证数据库 中数据 的完整性 ,在数据库应用 中是十 数据完整性可 以分为 4种类型 :实体完整性 (ni nery 、 Ety I gi ) t t t 分 重要 的.它是衡量 数据库 中数据质 量的 重要标 志。在 S 域 完 整 性 (o i I ery 、 照 完 整 性 (ee nilnery 、 L Q D ma n gi ) 参 n t t Rfr t t i ) e a I gt Sre 2 0 e r 00中, 以通过 “ v 可 约束” 规则” 默认” 触发器” 用 户 定 义 的完 整 性 (sr df e nery 。 、“ 、“ 、“ 、 U e- ei d I gi ) n t t “ 存储 过程”等来达 到保证数据完整性 的 目的。 1实体 完 整性 。 实体 完 整 性也 称 为行 完 整 性 ,是规 定 表 中 . 关键词 :数据 库 ;S L Sre 2 0 ;数据完整性;约束 ; 的每一行数据在表 中保证惟一且非空值 ,即数据库 中所有的行 O evr 0 0
性别char2check性别男or性别女以上定义的全为列对象级数据完整性定义学号列为主键姓名列为非空值性别列通过检验checkcreatetable课程表课程名char20primarykeyconstraintkcxzidcheck课程性质考试or以上定义的约束constraintkcxzidcheck课程性质考试or课程性质考查为表对象级数据完整createtable学生成绩表学号char6课程名char20成绩intconstraintxhkcmidprimarykey学号课程constraintxhidforeignkey号references学生信息表学号constraintkcmidforeignkey名references课程表课程名以上三个约束全为表对象级约束约束constiaintxhkcmidprimarykey学号课程名保证学号课程名非空且惟一约束constraintxhidforelgnkey学号references学生信息表学号constraintkcmidforeignkey名references课程表课程名保证该表中的学号和课程名字段值只能取中已存在的学号值和中已存在的课举例2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

注:字段名所指字段必须有主键或唯一性约 束 with nocheck 不检查表中现有数 据 on delete 删除 on update 更新 ascade 级联 no action 不级联
外键示例
• • • • • • • create table t_group ( id int not null, name varchar(30), primary key (id) ) insert into t_group values (1, 'Group1') insert into t_group values (2, 'Group2')
• 直接添加主键信息会怎么样?应该如何处理 ? • alter table student add constraint pk_stuid primary key (stu_id)
• 处理方式为:先修改要定义为主键的列为 非空列,再将其定义为主键 • alter table student alter column stu_id int not null
• 3、引用完整性,指对数据库进行添加、删 除、修改数据时,要维护表间数据一致性 。实现方法:外键约束foreign key、核查约 束check、触发器trigger、存储过程 procedure
• 用户定义的完整性,用于实现用户特殊要 求的数据规则或格式,便如在学生库中, 学生表的出生日期列数据可以规定格式为 ddd-dd-dddd形式(d表示0~9之间的数据)。 实现方法:默认值default、核查约束check 、规则rule等。
• 按照在数据库中实现数据完整性的作用级 别,可以将其分为对象级与总体级。 • 对象级,作用范围是数据库的某个表对象 ,是在定义表的同时定义的,删除表则失 去作用,如约束。 • 总体级:是作为数据库的对象单独定义的 ,因此单独存在于数据库中,需要时可以 绑定到数据库的表或用户定义的数据类型 中,如默认对象、规则。
• insert into t_user values (1, 'qianxin', 1); --可 以插入 • insert into t_user values (2, 'yiyu', 2); --可以 插入 • insert into t_user values (3, 'dai', 3); --错误 ,无法插入,用户组3不存在,与参照完整 性约束不符
列级约束
• • • • • • • create table users ( u_id int identiyt(1,1) primary key, u_name varchar(50), u_datetime datetime ) 定义了一个主键的约束
表级约束
• • • • • • • create table users ( u_id int, u_name varchar(50), u_datetime datetime constraint u_id primary key(u_id,u_datetime) )
• 下面创建用户表,分别以不同的约束方式创建外键 引用关系 • 1、级联(cascade)方式 create table t_user ( • id int not null, • name varchar(30), • groupid int, • primary key (id), • foreign key (groupid) references t_group(id) on delet e cascade on update cascade • );
• 对于已经创建的表添加主键,将要设置为主键 的字段并未指明是非空字段的处理方法 • 创建student表,表中含有stu_id、name、sex字 段,随后再修改此表,为其添加主键 • create table student • ( • stu_id varchar(10), • name varchar(20), • sex char(2) • )
• 创建part_sample表时添加主键约束,指明约束 名称 • create table part_sample • ( • part_number int constraint pk_partnumber primary key, • part_name varchar(30), • part_weight decimal(6,2), • part_color varchar(15) • )
• 创建part_sample表,包含part_number(PK) 、part_name、part_weight、part_color字段, 不指明主键约束的名称 • create table part_sample • ( • part_number int primary key, • part_name varchar(30), • part_weight decimal(6,2), • part_color varchar(15) • )
• 按照数据完整性的实施方法包括:约束、 默认、规则、触发器、存储过程等。
• 约束的用途是限制输入到表中的值的范围 。SQL server根据不同的用途提供了多种约 束,分别是: • Primary key(主键)约束 • Foreign key(外键)约束 • Uniqe(惟一)约束 • Check(核查)约束 • Nullable约束 • Cascade级联引用一致性约束
• 创建订单表book_order,表中包含orderID(PK)、 bookID(PK)、clientID、quantity、purchase_date字段 • create table book_order • ( • orderID varchar(10), • bookID varchar(5), • clientID varchar(10), • quantity int, • purchase_date datetime, • constraint pk_orderkey primary key (orderID,bookID) • )
正确与错误的对比
Pro_id OA0001 Pro_name 洗衣粉 Pro_price 27.00 Sto_id STO00001 Pro_id OA0001 Pro_num 300
Pro_id OA0001
Pro_name 洗衣粉
Pro_price 27.00
Sto_id STO00001
Pro_id 0001
• alter table student add constraint pk_stuid primary key (stu_id)
• 创建表authors,表中含有au_id(PK)、 au_name、pseudonym字段,其中pseudonym 字段带有唯一约束,不指明约束名称 • create table authors • ( • au_id varchar(20) primary key, • au_name varchar(20), • pseudonym varchar(20) unique • )
创建表时添加唯一约束,指明约束名称 create table authors ( au_id varchar(20) primary key, au_name varchar(20), pseudonym varchar(20) constraint UQ_pseudonym unique • ) • • • • • •
外键约束
• 外键约束主要用来维护两个表之间的一致 性关系。外键的建立主要是通过将一个表 中的主键所在列包含在另一个表中,这些 列就是另一个表的外键。
Pub_id Pub_name city
Title_id title Pub_id type
state price
外键约束
• 创建表Order_part,含有order_number、 part_number、qty_orderde字段,建立一个外键引用 前面定义的表part_sample中的part_number。 • create table order_part • ( • order_number int, • part_number int foreign key references part_sample (part_number) on delete no action, • qty_orderde int • )
• 2、数据的存在必须确保同一表格数据之间 的和谐关系。 • 例如:在一个表中,已经存在了分配给某 一个同学的学号为KDE00001,则再也不许 将KDE00001这个学号在一次分配给别的同 学。
• 3、数据的存在必须能确保维护不同表格数 据之间的和谐关系。 • 例如:我们有产品表和库存表两个表,现 在我产品表里有一列是productID这个字段 ,该字段必须与我库存表里的产品ID这个字 段相对应。不请允许出现在产品表中与库 存表中不统一的情况。
Primary 主键约束
• Primary 主键约束利用表中的一列或多列数 据来惟一地标识一行数据。在表中,绝不 请允许有主键相同的两行存在。在受主键 约束的任何一列上都一定要有确定的数据 ,不能输入NULL值代替。为了有效实现数 据的管理,每一张表都应该有自己的主键 ,且只能有一个主键。
• 注意:在同一张表上,也许存在多于一种 列的组合可以惟一地标识一行数据。这任 意一种列的组合 被称为候选键(candidate key),数据库管理员可以根据实际情况从候 选键中选 出一个(也只能挑选一个)合适的作 为 表的主键。 • 主键不能为空,不能重复
• • • • • • •
修改表时添加唯一约束,指明约束名称 create table authors ( au_id varchar(20) primary key, au_name varchar(20), pseudonym varchar(20) )
相关文档
最新文档