数据库开发007数据的完整性

使用Identity属性

        表中一般会包含连续值的列,将Identity属性添加到该列上,SQL Server可自动生成这些值。 Identity属性生成的值唯一地标识表中的每一行,每次表中插入一行时,该属性就会自动生成值。在创建表的时候创建Identity列,定义Identity列的语法如下:
Identity [ (Seed, Increment) ]

    创建一个Student表,其中的StudID列具有Identity属性,Seed值为101,Increment的值为5。

use Archive
create table Student
(
	StudID		int Identity(101,5),
	FirstName	varchar(20),
	LastName	varchar(20)
)
insert into Student(FirstName,LastName)
values('三','张')
select * from Student

    如果已经创建了Student表,并且希望将Identity属性附加到StudID列,则可以使用下面的语句.
                 ALTER TABLE Student ADD StudID intldentity (101,5)

使用Uniqueidentifier类型

     可以使用Uniqueidentifier数据类型和NEWID()函数来生成列的唯一值。如果创建的列是Uniqueidentifier类型,需使用NEWID()函数为该列生成新值。利用CREATE TABLE来创建Uniqueidentifier列.

use Archive
create table MyFriend
(
	NID				uniqueidentifier,
	Studentxing		varchar(20),
	StudentMing		varchar(20)
)
go
insert MyFriend values(NEWID(),'李','四')
go
insert MyFriend values(NEWID(),'刘','三')
select * from MyFriend

使用六大约束

    对表强制执行完整性的最常用方法是使用约束,限制表或列中的值。约束有六种,分别是:主键约束(Primary Key)、外键约束(Foreign key)、唯一约束(Unique)、非空约束(NotNull)、检查约束(Check)和默认约束(Default)。

1.主键约束

主键Primary Key约束具有以下3个特性:

  • (1)一个表中只可定义一个主键;
  • (2)不能在主键列中输入null值和重复的值;
  • (3)最多可定义16列作为主键.

创建一个新的STUDENT_PRI表,并将表的StudID列设置为主键:
 

create table Student_Pri
(
	StudId			int primary key,
	FirstName		Varchar(20),
	LastName		varchar(20)
)
insert into Student_Pri values(1001,'褒','姒')
select * from Student_Pri

2.外键约束

    外键(Foreign Key)约束定义列值与另一个表的主键相匹配。使用外键时应该注意:Foreign key约束必须引用另一个表的主键列或者Unique列.
    下面创建两个表,并且建立两张表的外键关系口。一个是学生的基本信息表,另一个是学员档案历史表。学生的基本信息是基本固定的,学员每学习完一年就升学到高年级学习,这样,一个学员可能对应多条历史记录。有这样的一个关系,所有历史表中的学员一定在基本信息表中可以找到,因为学员总是先注册然后上课学习的。外键约束就是要实现这样的约束关系。

create table basicinfo
(
	stu_id			int Identity(1001,1)	primary key,
	FirstName		varchar(10),
	LastName		Varchar(10)
)
create table history
(
	historyid		int primary key,
	stu_id			int,
	stu_grade		int,
	foreign key(stu_id) references basicinfo(stu_id)
)

3.唯一约束

    在列中应用唯一(Unique)约束是为了确保列中不输入重复的值。使用Unique约束应该注意:Unique约束的列可以出现一个空值的行,只要不重复就不违反约束。下面的案例向Student表中的TeINo列添加Unique约束。

create table testUnique
(
	stu_id		int Identity(1001,1) primary key,
	FirstName	varchar(10) unique,
	LastName	varchar(10)
)
insert into testUnique values('木头','六')

4.非空约束

如果一个列被附加了非空约束,该列就不能为空值∥每次插入数据时必须插入数据。

create table testNotNull
(
	firstName		varchar(10) not null,
	LastName		varchar(10)
)
insert into testNotNull(firstName,LastName) values('管','仲')

  5.检查约束

    检查( Check)约束根据指定值测试列中的输入值。每次在列中插入或更新数据时都需要进行这一测试。
 

create table testCheck
(
	Stu_id		int Identity(100000,1)  primary key,
	FirstName	varchar(10)				not null,
	LastName	varchar(10)				not null,
	Age			int						check(age>6),
	Sex			varchar(2)				check(sex in('M','F'))
)
insert into testCheck values('张','良',21,'M')
insert into testCheck values('吕','雉',68,'F')

6.默认约束

    默认( Default)约束用于在用户未提供列值的情况下,提供一个自动添加的列值。testDefault表中的Sex列被添加Default约束,默认值为“M”。

create table testDefault
(
	Stu_id		int Identity(100000,1)		primary key,
	FirstName	varchar(10)					not null,
	LastName	varchar(10)					not null,
	Sex			varchar(3)					default 'M'
)
insert into testDefault(FirstName,LastName) values('樊','哙')

select * from testdefault


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值