sql培训教程三数据性.pptx
三.数据的完整性
数据完整性的类型DomainIntegrity
(columns)EntityIntegrity(rows)ReferentialIntegrity
(betweentables)
约束的种类TypeofintegrityConstrainttype列DEFAULTCHECK行PRIMARYKEYUNIQUE关系FOREIGNKEY
USElibrary
ALTERTABLEmember
ADD
CONSTRAINTPK_member_member_no
PRIMARYKEYnonclustered(member_no)PRIMARYKEY约束一个表只能有一个PKPK字段不能有重复的值不允许NULL值可以指定产生聚集索引(非聚集索引)
USEsample_database
ALTERTABLEemployee
ADD
CONSTRAINTU_driver_lic_no
UNIQUE(driver_lic_no)UNIQUE约束允许NULL值一个表中可以创建多个UNIQUE约束自动产生非聚集索引
USElibrary
ALTERTABLEadult
ADD
CONSTRAINTfirstnameDEFAULT
UNKNOWNFORfirstnameDEFAULT约束只用于INSERT语句一列只有一个DEFAULTConstraint不能用于IDENTITY或ortimestamp字段
CHECK约束用于INSERT和UPDATEStatements不能用于IDENTITY属性的列USElibrary
ALTERTABLEadult
ADD
CONSTRAINTphone_noCHECK(phone_no
LIKE(212)[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9])
使用Defaults和Rules是独立的对象:可以定义一次可以绑定到一个或多个列CREATEDEFAULTphone_no_default
AS(000)000-0000
GO
sp_bindefaultphone_no_default,
adult.phone_no_colCREATERULEstatecode_rule
AS@statecodein(IA,IL,KS,MO)
GO
sp_bindrulestatecode_rule,state_type
主外键关联PK:主表当中的值。FK:引用主表的主健值作为列的值一旦两个表之间建立了主外健关系,FK上的值要么为NULL,要么为PK的值。在外表上插入新值,则数据必须是在主健的值的范围之内。删除主表当中的记录,若外表中存在相关记录,则系统不允许删除。更新主表当中的记录。
外键约束必须与PRIMARYKEY或UNIQUE约束有关不自动产生索引用户必须在关联的表上有SELECT或REFERENCES的权限USElibrary
ALTERTABLEjuvenile
ADD
CONSTRAINTFK_adult_memberno
FOREIGNKEY(adult_memberno)
REFERENCESadult(member_no)
USElibrary
ALTERTABLEsales
NOCHECK
CONSTRAINTcorrect_amount在加入新数据时取消检查
适用于CHECK和FOREIGNKEYConstraints在以下条件下使用:数据有约束要加入新数据
数据库设计的三个范式所有的表由列组成,列决定了行规范化的数据库,由主关键字唯一标识数据库的外键的列都要与主关键字的列有关系:一对一:一个表一对多:两个表多对多:三个表
数据库图表数据库图表可以查看和修改关系。Sp_helpconstraint表名可以查看关系
索引的种类
聚集索引(cluster):非聚集索引(noncluster)唯一性索引Sp_helpindex可以查看索引
索引的特点聚集索引一个表中只能有一个聚集索引对表中的行的物理位置作排序创建索引很耗费时间非聚集索引一个表中可以有多个非聚集索引不对表中行的物理位置作排序创建索引很占空间唯一性索引可以是Clusteredornon-clusteredindex创建索引的列的值必须唯一