弦月下的SQL<5> 数据完整性

数据库中的设计和管理的过程中,维护数据的完整性非常重要。数据的完整性关系到数据库中数据的精确性、可用性。所谓数据完整性,就是指存储在数据中的数据的一致性、正确性、精确性和可用性。

保证数据库的完整性,在数据库管理信息系统中是十分重要的。因为数据的完整,是用户使用和管理数据库的基础。完整的数据为客户提供可用的数据服务。

为了保证数据库的完整性,SQL中提供了定义、检查和控制数据完整性的机制,并且把用户定义的数据库完整性约束条件作为约束条件作为模式的一部分存入数据库中。我们必须了解数据库完整性的内容和控制机制,掌握定义数据完整性的方法。

SQL数据库中,根据数据完整性涉及的方式不同,以及它所作用的数据库对象和范围的不同,可以将数据完整性分为四个类型:实体完整性、域完整性、参照完整性以及用户定义完整性。

实体完整性:行完整性,是将行定义为特定表的唯一实体,即数据库中的所有行都具有一个非空并且没有重复的主键值,这样就确保数据库中所代表的任何事物均不存在重复的条目。可以通过建立唯一的索引、PRIMARY KEY约束、UNIQUE约束或IDENTITY属性,强制表的标识符列、主键的完整性。

域完整性:也称为列完整性,用以指定列的数据输入是否具有正确的数据类型、格式以及有效的数据范围。用户可以通过限制数据类型,强制列的完整性规则:通过使用CHECK约束和规则,限制格式。通过FOREIGN KEY约束,CHECK约束、默认值定义、NOT NULL定义和规则,限制可能值的取值范围(即数据的有效性)。

参照完整性:又称为引用完整性。参照完整性保证主表(被参照表)中的数据和从表(参照表)中数据的一致性。参照完整性确保键值在所有表中的一致,这样的一致性使得不存在的值不能被参照,如果键值更改了,那么在整个数据库中,对该键值和主键之间、外键和唯一键之间的关系来实现。

用户定义完整性:用户定义完整性允许用户定义不属于其他任何完整性类型的特定规则。

1、创建带有默认值的表

create table student1

(

s_no char(50) not null,

s_average char(50) not null,

s_score decimal(2,1)  null  default ('4')

)

 

2、创建一个默认约束

alter table student1

add

constraint df_c_name default ('4') for s_no

 

 

3、删除约束

alter table student1

drop constraint df_c_name

 

4、创建默认对象

create default killer

as '男'

 

 

5、绑定默认对象到一个表中

exec sp_bindefault 'killer','student1.s_sex'

 

6、解除默认对象绑定

exec sp_unbindefault 'student1.s_sex'

 

7、删除默认值

drop default killer

 

规则限制了可以存储在表中或者用户定义数据类型的值,可以使用多种方式完成对数据的检验。是一种独立的数据库对象,表中每一列或者每一个用户定义的数据类型只能和一个规则绑定。

8、创建规则

create rule xq as @xp between 1 and 8

 

9、绑定规则

exec sp_bindrule 'xq','student1.s_average'

 

10、接触和表的规则绑定

exec sp_unbindrule 'student1.s_average'

 

11、删除规则

drop rule xq

 

12、创建表的时候添加check属性

CREATE TABLE HERO

(

s_sept varchar(50) null,

s_pow varchar(50) null,

s_sex char(2) null,

constraint check_xb check (s_sex='男' or s_sex='女')

)

 

13、更改已经存在列的check属性

alter table student1

add constraint check_xb1

check (s_sex='男' or s_sex='女')

 

14、删除表中相关的check变量

alter table student1

drop constraint check_xb1

 

15、创建新表并且向其中添加主键

create table student

(

s_name varchar(50) null,

s_class varchar(50) null,

s_no char(11) not null

constraint pk_p primary key clustered

)

 

16、在一个已存在的表中添加键值

alter table HERO 

add

constraint pk_k1 primary key clustered(s_pow)

 

17、在表中删除键值

alter table HERO

drop constraint pk_k1

 

18、创建一个新表,其中一个属性是另一表的外键

create table average

(

s_no char(11) not null

foreign key references student2(s_no),

c_id char(6) not null,

c_average decimal(4,1) null,

c_score  decimal(2,1) null

)

 

19、当两个表同时存在的时候设置主键外键

alter table average

add

constraint xh foreign key(s_no) references student(s_no)

 

20、删除主外键关系

alter table average

drop 

constraint  xh

 

21、在已存在表中设置唯一键

alter table HERO

add

constraint IX_course unique (s_pow)

 

22、创建一个新表并且添加一个唯一值

create table course

(

c_id char(6) null

constraint IX_course unique

)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值