使用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