- 浏览: 166072 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
917380319:
找了N多个,就你的能在安卓远程调用,谢谢了
Web Service修炼之二Xfire+Spring -
alpenliebe:
马克一下,日后学习
知识收集9【原创】 -
leo_lnx:
very good,顶大兵!
知识收集3【原创】 -
fengyuan_2012:
不错...
SSH搭建的框架,提供源码 -
影非弦:
没有效果图看啊
FusionChart实现的动态统计图
定义
数据完整性用于保证数据库中数据的正确性、一致性和可靠性。
类型
• 实体完整性(Entity Integrity)
• 域完整性(Domain Integrity)
• 参照完整性(Referential Integrity)
• 用户定义完整性(User-defined Integrity)
图示
实体完整性(Entity Integrity)
实体完整性用于保证数据库中数据表的每一个特定实体的记录都是唯一的
域完整性(Domain Integrity)
域完整性是指保证指定列的数据具有正确的数据类型、格式和有效的数据范围。
参照完整性(Referential Integrity)
当增加、修改或删除数据库表中记录时,可以借助参照完整性来保证相关联表之间数据的一致性
用户定义完整性 (User- defined Integrity)
这是由用户定义的完整性。用户定义完整性可以定义不属于其他任何完整性分类的特定业务规则
数据完整性的实现方式
声明数据完整性和过程数据完整性
使用IDENTITY(标识符)列
语法格式:
CREATE TABEL 数据表名
(列名 列数据类型 IDENTITY [(种子, 增量)] [,…])
说明:标识种子为标识列的起始值,标识递增量为每次增加的数,二者的默认值均为1。
使用IDENTITY函数
语法格式:
IDENTITY ( 数据类型 [ , 种子 , 递增量 ] ) AS 列名
说明:只用在带有 INTO table 子句的 SELECT 语句中,可以将标识列插入到新表中。
尽管类似,但是 IDENTITY 函数不是与 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 属性。
完整性类型 约束类型 描述
域 DEFAULT 指定列的默认值
CHECK 指定列的允许值
FOREIGN KEY 指定必须存在值的列
NULL 指定是否允许为NULL
实体 PRIMARY KEY 唯一标识每一行
UNIQUE 防止非主键重复
引用 FOREIGN KEY 定义值与同一个表或另一个表的主键值匹配的一列或多列组合
CHECK 指定根据同一个表中其他列的值可在列中接受的数据值
在SQL SERVER中,对于基本表的约束分为列约束和表约束。
完整性约束的基本语法格式为:
[CONSTRAINT constraint_name(约束名)] <约束类型>
约束不指定名称时,系统会给定一个名称。
在SQL Server 2005中有6种约束:主键约束(primary key constraint)、惟一性约束(unique constraint)、检查约束(check constraint)、默认约束(default constraint)、外部键约束(foreign key constraint)和空值(NULL)约束。
PRIMARY KEY 约束
PRIMARY KEY约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。PRIMARY KEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:
①一个表只能有一个 PRIMARY KEY 约束 ,但可定义多个UNIQUE约束;
②对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。
注意:不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束;
PRIMARY KEY既可用于列约束,也可用于表约束。
(2)使用Transact-SQL语句操作法设置主键约束,其语法形式如下:
PRIMARY KEY
CONSTRAINT constraint_name PRIMARY KEY ( column_name )
举例:建立一个SC表,定义SNO,CNO共同组成SC的主键
程序清单如下:
create table sc(
sno char(5) not null,
cno char(5) not null,
score numeric (3),
constraint sc_prim primary key(sno,cno)
)
UNIQUE约束
惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止在列中输入重复的值。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。
当使用惟一性约束时,需要考虑以下几个因素:
• 使用惟一性约束的字段允许为空值;
• 一个表中可以允许有多个惟一性约束;
• 可以把惟一性约束定义在多个字段上;
• 惟一性约束用于强制在指定字段上创建一个惟一性索引;
• 默认情况下,创建的索引类型为非聚集索引。
使用Transact-SQL语句完成惟一性约束的操作,其语法形式如下:
• UNIQUE
• CONSTRAINT constraint_name UNIQUE ( column_name )
CHECK 约束
检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。
当使用检查约束时,应该考虑和注意以下几点:
• 一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;
• 一个表中可以定义多个检查约束;
• 每个CREATE TABLE语句中每个字段只能定义一个检查约束;
• 在多个字段上定义检查约束,则必须将检查约束定义为表级约束;
• 当执行INSERT语句或者UPDATE语句时,检查约束将验证数据;
• 检查约束中不能包含子查询。
用Transact-SQL语句创建检查约束。其语法形式如下:
• CONSTRAINT constraint_name CHECK (logical_expression)
• CHECK (logical_expression)
create table sc(
sno char(5) not null,
cno char(5) not null,
score numeric(5,1) constraint score_chk check(score>=0 and score <=100),
constraint sc_prim primary key(sno,cno),
)
drop table sc
insert into sc values('1','2',3)
DEFAULT 约束
默认约束指定在插入操作中如果没有提供输入值时,则系统自动指定值。默认约束可以包括常量、函数、不带变元的内建函数或者空值。
使用默认约束时,应该注意以下几点:
(1)每个字段只能定义一个默认约束;
(2)如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断;
(3)不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上;
(4)如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则不允许该字段有默认约束。
创建默认约束的Transact-SQL语句操作法。其语法形式如下:
• CONSTRAINT constraint_name DEFAULT constraint_expression [FOR column_name]
• DEFAULT constraint_expression [FOR column_name]
举例:为 dept字段创建默认约束。
程序清单如下:
constraint con_dept default ‘计算机’ for dept
NULL 约束
空值约束用来控制是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串的“NULL”字符串,而是表示“不知道”、“ 不确定”或“没有数据”的意思。
当某一字段的值一定要输入才有意义的时候,则可以设置为NOT NULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用。空值约束只能用于定义列约束。
FOREIGN KEY 约束
FOREIGN KEY约束是用于建立和加强两个表数据之间的链接的一列或多列。外部键约束用于强制参照完整性。
FOREIGN KEY 约束确保同一个表或者不同表之间的引用完整性
必须引用一个PRIMARY KEY或者UNIQUE约束
用户必须在应用表上具有REFERENCES权限
一个表中最多可以有31个外部键约束;
在临时表中,不能使用外部键约束;
主键和外部键的数据类型必须严格匹配 。
使用Transact-SQL语句设置外部键约束 ,其语法形式如下:
CONSTRAINT constraint_name
FOREIGN KEY (column_name[,…n])
REFERENCES ref_table [(ref_column[,…n])]
ALTER TABLE [Sales].[SalesOrderHeader] WITH CHECK
ADD CONSTRAINT [FK_SalesOrderHeader_Customer_CustomerID]
FOREIGN KEY([CustomerID])
REFERENCES [Sales].[Customer] ([CustomerID])
禁用 CHECK 和 FOREIGN KEY 约束:
当运行大型批处理作业时提高性能
当向表中添加新的约束的时候避免检查已经存在的数据
数据完整性用于保证数据库中数据的正确性、一致性和可靠性。
类型
• 实体完整性(Entity Integrity)
• 域完整性(Domain Integrity)
• 参照完整性(Referential Integrity)
• 用户定义完整性(User-defined Integrity)
图示
实体完整性(Entity Integrity)
实体完整性用于保证数据库中数据表的每一个特定实体的记录都是唯一的
域完整性(Domain Integrity)
域完整性是指保证指定列的数据具有正确的数据类型、格式和有效的数据范围。
参照完整性(Referential Integrity)
当增加、修改或删除数据库表中记录时,可以借助参照完整性来保证相关联表之间数据的一致性
用户定义完整性 (User- defined Integrity)
这是由用户定义的完整性。用户定义完整性可以定义不属于其他任何完整性分类的特定业务规则
数据完整性的实现方式
声明数据完整性和过程数据完整性
使用IDENTITY(标识符)列
语法格式:
CREATE TABEL 数据表名
(列名 列数据类型 IDENTITY [(种子, 增量)] [,…])
说明:标识种子为标识列的起始值,标识递增量为每次增加的数,二者的默认值均为1。
使用IDENTITY函数
语法格式:
IDENTITY ( 数据类型 [ , 种子 , 递增量 ] ) AS 列名
说明:只用在带有 INTO table 子句的 SELECT 语句中,可以将标识列插入到新表中。
尽管类似,但是 IDENTITY 函数不是与 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 属性。
完整性类型 约束类型 描述
域 DEFAULT 指定列的默认值
CHECK 指定列的允许值
FOREIGN KEY 指定必须存在值的列
NULL 指定是否允许为NULL
实体 PRIMARY KEY 唯一标识每一行
UNIQUE 防止非主键重复
引用 FOREIGN KEY 定义值与同一个表或另一个表的主键值匹配的一列或多列组合
CHECK 指定根据同一个表中其他列的值可在列中接受的数据值
在SQL SERVER中,对于基本表的约束分为列约束和表约束。
完整性约束的基本语法格式为:
[CONSTRAINT constraint_name(约束名)] <约束类型>
约束不指定名称时,系统会给定一个名称。
在SQL Server 2005中有6种约束:主键约束(primary key constraint)、惟一性约束(unique constraint)、检查约束(check constraint)、默认约束(default constraint)、外部键约束(foreign key constraint)和空值(NULL)约束。
PRIMARY KEY 约束
PRIMARY KEY约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。PRIMARY KEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:
①一个表只能有一个 PRIMARY KEY 约束 ,但可定义多个UNIQUE约束;
②对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。
注意:不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束;
PRIMARY KEY既可用于列约束,也可用于表约束。
(2)使用Transact-SQL语句操作法设置主键约束,其语法形式如下:
PRIMARY KEY
CONSTRAINT constraint_name PRIMARY KEY ( column_name )
举例:建立一个SC表,定义SNO,CNO共同组成SC的主键
程序清单如下:
create table sc(
sno char(5) not null,
cno char(5) not null,
score numeric (3),
constraint sc_prim primary key(sno,cno)
)
UNIQUE约束
惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止在列中输入重复的值。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。
当使用惟一性约束时,需要考虑以下几个因素:
• 使用惟一性约束的字段允许为空值;
• 一个表中可以允许有多个惟一性约束;
• 可以把惟一性约束定义在多个字段上;
• 惟一性约束用于强制在指定字段上创建一个惟一性索引;
• 默认情况下,创建的索引类型为非聚集索引。
使用Transact-SQL语句完成惟一性约束的操作,其语法形式如下:
• UNIQUE
• CONSTRAINT constraint_name UNIQUE ( column_name )
CHECK 约束
检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。
当使用检查约束时,应该考虑和注意以下几点:
• 一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;
• 一个表中可以定义多个检查约束;
• 每个CREATE TABLE语句中每个字段只能定义一个检查约束;
• 在多个字段上定义检查约束,则必须将检查约束定义为表级约束;
• 当执行INSERT语句或者UPDATE语句时,检查约束将验证数据;
• 检查约束中不能包含子查询。
用Transact-SQL语句创建检查约束。其语法形式如下:
• CONSTRAINT constraint_name CHECK (logical_expression)
• CHECK (logical_expression)
create table sc(
sno char(5) not null,
cno char(5) not null,
score numeric(5,1) constraint score_chk check(score>=0 and score <=100),
constraint sc_prim primary key(sno,cno),
)
drop table sc
insert into sc values('1','2',3)
DEFAULT 约束
默认约束指定在插入操作中如果没有提供输入值时,则系统自动指定值。默认约束可以包括常量、函数、不带变元的内建函数或者空值。
使用默认约束时,应该注意以下几点:
(1)每个字段只能定义一个默认约束;
(2)如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断;
(3)不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上;
(4)如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则不允许该字段有默认约束。
创建默认约束的Transact-SQL语句操作法。其语法形式如下:
• CONSTRAINT constraint_name DEFAULT constraint_expression [FOR column_name]
• DEFAULT constraint_expression [FOR column_name]
举例:为 dept字段创建默认约束。
程序清单如下:
constraint con_dept default ‘计算机’ for dept
NULL 约束
空值约束用来控制是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串的“NULL”字符串,而是表示“不知道”、“ 不确定”或“没有数据”的意思。
当某一字段的值一定要输入才有意义的时候,则可以设置为NOT NULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用。空值约束只能用于定义列约束。
FOREIGN KEY 约束
FOREIGN KEY约束是用于建立和加强两个表数据之间的链接的一列或多列。外部键约束用于强制参照完整性。
FOREIGN KEY 约束确保同一个表或者不同表之间的引用完整性
必须引用一个PRIMARY KEY或者UNIQUE约束
用户必须在应用表上具有REFERENCES权限
一个表中最多可以有31个外部键约束;
在临时表中,不能使用外部键约束;
主键和外部键的数据类型必须严格匹配 。
使用Transact-SQL语句设置外部键约束 ,其语法形式如下:
CONSTRAINT constraint_name
FOREIGN KEY (column_name[,…n])
REFERENCES ref_table [(ref_column[,…n])]
ALTER TABLE [Sales].[SalesOrderHeader] WITH CHECK
ADD CONSTRAINT [FK_SalesOrderHeader_Customer_CustomerID]
FOREIGN KEY([CustomerID])
REFERENCES [Sales].[Customer] ([CustomerID])
禁用 CHECK 和 FOREIGN KEY 约束:
当运行大型批处理作业时提高性能
当向表中添加新的约束的时候避免检查已经存在的数据
发表评论
-
数据库每日一练01
2010-06-12 18:08 989部门月份业绩表 CREATE TABLE [dbo].[bm ... -
数据库总结十存储过程
2010-05-31 21:00 783 什么是存储过程存储过程(procedure)类似于C语言中 ... -
数据库总结九触发器
2010-05-20 20:09 965在SQL Server 2005中,触发 ... -
数据库总结八分区表、索引和视图
2010-05-19 20:25 2589分区表: 分区表的目的是将同一张 ... -
数据库总结七事务
2010-05-16 10:54 878定义 事务(Transaction)是由对数据库的若干操作组 ... -
数据库总结六视图
2010-05-14 20:13 1245视图是由一个或多个数据表(基本表)或视图导出的虚拟表或查询表, ... -
数据库总结五游标
2010-05-13 21:17 823create table users( id int ... -
数据库总结四游标
2010-05-13 21:15 755打开游标 语法格式:OPEN [GLOBAL] 游标名 Ø ... -
数据库总结三游标
2010-05-13 21:13 910游标(Cursor)是用户从查询记录集中逐条逐行地访问(移动读 ... -
数据库总结二索引
2010-05-12 21:13 788非聚集索引 非聚集索引的数据存储在一 ... -
数据库总结一索引
2010-05-12 21:11 934索引是数据库随机检索的常用手段,它实际上就是记录的关键字与其 ... -
工作总结8——数据库小总结
2010-03-13 19:24 997最近与一个哥们讨论了一晚上,数据库的并 ... -
工作总结7
2010-01-24 16:39 787在根据业务进行查询处理的时候,尽量把条件放到查询S ... -
工作总结6
2010-01-20 20:54 801在做数据查询的时候,利用了数据库中的 ... -
数据库连接不上解决方案
2009-12-05 13:17 2059在使用网站管理工具做登录页面的时候遇到的问题 所遇问题: ... -
数据库问题解决方案
2009-12-05 13:11 15301.右键服务器,属性--安全性,服务器身份验证选SQL Ser ... -
数据库三范式最简单最易记的解释
2009-07-30 14:30 868书上讲了好多, 归结起来3句话: 1NF:字段不可分; 2N ... -
SQL性能优化2
2009-07-23 15:14 5491 逻辑数据库和表的设 ... -
SQL性能优化1
2009-07-23 15:08 7171.对查询进行优化,应尽量避免全表扫描,首先应考虑在 wher ... -
Sql性能优化
2009-07-23 14:58 1920操作符优化 IN 操作符用IN写出来的SQL的优点是比较容易 ...
相关推荐
1、熟练update,delete,insert语句进行更新数据库操作 2、创建视图以及操作视图的基本使用方法, ...熟悉通过SQL语句更新数据库、创建视图以及操作视图的基本使用方法,熟悉DBMS系统关于数据库完整性的约束限制。
2020年数据库实验一的完整代码,完整性约束
考试和学习用 数据是描述事物的符号记录。 数据库是长期存储(永久存储)在计算机内、有组织的、可共享的大量数据的...数据模型构成:数据结构、数据操作、完整性约束。 数据库操作:查询、更新(插入、删除、修改)。
1. 启动数据库服务软件SQL Server 2000的查询分析器,用CREATE VIEW语句建立视图,语法格式如下: CREATE VIEW <视图名> [(<属性列1>[,<属性列2>]…)] AS <子查询> [WITH CHECK OPTION]; 2.用DROP VIEW语句删除,...
2. 关系完整性约束 3. 一些基本术语关系、属性、值域、元组、分量、关系模式 5. 描述三类关系完整性约束规则 6. 关系完整性约束的作用 7. 不符合范式的关系,会产生哪些异常 1. sql语言的特点和功能 2. 三种模式与...
(5) 掌握实体完整性、参照完整性和用户自定义完整性约束的创建方法。 (6) 掌握完整性约束的运行检查机制。 (7) 掌握参照完整性的级联删除和修改方法。 (8) 掌握正确设计关系模式完整性约束的方法。 2 实验...
包括关系数据模型的数据结构和基本术语,关系模型的完整性约束和关系代数运算。重点是关系模式完整性的分类和功能,以及关系代数中集合运算和关系运数据库系统及应用课程总结全文共6页,当前为第2页。数据库系统及...
(3) 要设计良好的数据库完整性约束。 (4) 思考题:数据库设计通常由哪些辅助工具?各有哪些优缺点? 4 实验步骤 4.1 数据库概念模型设计 (1) 进行需求分析。 (2) 设计数据库概念模型,画出E-R图。 4.2 ...
4.2.4 视图更新 4.3 事务 4.4 完整性约束 4.5 SQL的数据类型和模式 4.6 模式的授权 第六章、 形式化关系查询语⾔ 6.1 关系代数 6.1.1 基本运算 6.1.2 关系运算的形式化定义 6.1.3 附加的关系代数运算 6.1.4 扩展的...
2.5.3 引用完整性 2.5.4 其他类型的约束 小结 习题 第3章 关系模型和关系运算 3.1 关系模型的基本概念 3.1.1 属性 3.1.2 模式 3.1.3 元组 3.1.4 域 3.1.5 关系的等价表示法 3.1.6 关系的实例 3.2 从ODL设计到关系...
10、关系三类完整性约束 11、等值连接、自然连接区别与联系 12、SQL特点 16、数据模型根据应用的不同目的可以分为两类 14、外模式/模式映像(逻辑独立性) 15、模式/内模式映像(物理独立性) 13、使用视图的优点: ...
建立数据库相关表之间的参照完整性约束。 (2)高校学籍管理系统 功能要求: 实现学生信息、班级、院系、专业等的管理; 实现课程、学生成绩信息管理; 实现学生的奖惩信息管理; 创建规则用于限制性别项只能输入...
5. 数据库完整性设计 () 5.1. 主键及唯一性索引 () 5.2. 参照完整性设计 () 5.3. Check约束 () 5.4. Default约束 () 5.5. 触发器设计 () 6. 数据库视图设计 () 7. 数据库存储过程设计 () 8. 权限设计 () 9. 总结 () ...
数据模型由数据结构,数据操作,数据的完整性约束三个部分组成。 1.3 数据库系统的结构 在数据模型中有型和值的概念,型是对某⼀类数据的结构和属性的说明,值是型的⼀个具体赋值。⼀个具体值也是⼀个实例。模式是...
的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和完整 性约束三部分组成。 ( l )数据结构:是所研究的对象类型的集合,是对系统静态特性的描述。 ( 2 )数据操作:是指对数据库中...
掌握数据库的完整性约束定义,完整性检查及违约处理方式。 掌握触发器的定义及使用。 实验内容: 1. 定义S, C表的完整性约束 2. 定义SC表的完整性约束,要求当其被参照表发生删除操作时,违约处理的方式为级联,...
创建表、更新表和实施数据完整性 1. 运行给定的SQL Script,建立数据库GlobalToyz。 2. 在企业管理器中建立所有表的关系图。 3. 利用系统定义的存储过程sp_helpdb查看数据库的相关信息,例如所有者、大小、创建...
文章目录数据库介绍MySql介绍添加数据导入数据查询数据内连接左外...概述:操作和管理数据库的软件,用于建立,使用,维护数据库,对数据库进行统一管理,以确保数据库的安全性和完整性,用户通过数据库管理系统访问
SQL Server中存在五种约束,分别是:主键约束、外键约束、检查约束、默认约束和唯一性约束(唯一性约束将在后续课程中使用SQL语句实现)总结创建数据库表需要:确定表的列名、数据类型、是否允许为空,还需要确定...