Sql server 2005中的约束

相信大家学习了数据库后,都知道数据库中的数据是现实世界中的反映,彼此之间可能都存在一定的联系,例如,学生系统中学生的学号是唯一的,学生的年龄要在一定的范围内,不可以随意输入的,等一些情况,这样的例子可能现实生活中,还有很多,从这些例子中,我们可以得出一个结果,也就是一个成功的数据库必须对这些数据进行定义,使它们符合现实,具有完整性,那么这里完整性,就是我们所说的约束. 约束实际上就是使数据完整,也就是存储的数据具有一致性和正确性,为了使我们的数据完整,sql server 2005定义了相应的检查和控制数据完整的一套机制,根据所对应的数据库对象和范围的不同,可以分为实体完整,域完整,参照完整和用户自定义完整4种,这4种完整性的涵义在这里我就不多说了,具体大家可以看书. 约束在实现时,可以通过以下来实现,主要包括 primary key,check,unique,default,foreign key. 那么下面我们就来看看如何在sql server2005中实现以上5种约束. 一,建立student 数据库,方法有两种,这里我们用<新建查询>也就是sql语句来实现,语句如下: Create database student 写完后按f5执行,数据库就可以了, 二,建立两张表,一个是学生资料表(stuinfo),和学生成绩表(stucj),sql语句如下: Stuinfo表: create table stuinfo ( stuid char(8) not null, stuname nvarchar(10), stusex nvarchar(2), stuage tinyint, stuaddr varchar(50), stutel varchar(15), stuintro varchar(200) ) Stucj表: create table stucj ( stuid char(8) not null, stuname nvarchar(10), chinese numeric(4,1), english numeric(4,1), math numeric(4,1) ) 三, primary key(主键约束)指的是唯一能将所有记录区分开的字段,以上两张表中的stuid(学生学号)可以作为主键,定义语句是: use student go alter table stuinfo add constraint pri_id1 primary key(stuid) alter table stucj add constraint pri_id2 primary key(stuid) 四.Check(核对)约束,指的是限制一列和多列所输入的值的范围。表中shuage字段表示的是学生的年龄,对这个字段我们可以设置它的范围,sql 语句如下: Use student Go Alter table stuinfo Add constraint ch_age check(stuage>10 and stuage<50) 执行完毕后,你可以向表中添加数据,此时我们的check约束就起作用了。五.Default(默认)约束,指的是当用户添加数据时,如果没有给该字段添加数据时,系统自动给它一个默认值,上表中的stusex(学生性别)字段,我们就可以给它设置默认值,比如男或女,那么定义的语句如下: Use student Go Alter table stuinfo Add constraint def_stusex default ‘男’ for stusex 同样再次执行,添加数据时,你不添加stusex的值,看看结果。六.Foreign key(外键)约束,指的是用于和加强两张表之间的联系,当在添加,修改和删除数据时,保持两张表中数据的一致性。上面stuinfo表和stucj表中的stuid字段就可以设置,sql语句如下: Use student Go alter table stucj add constraint stu_f foreign key(stuid) references stuinfo(stuid) 执行完毕后,可以对两张表中添加,删除和修改数据,测试看看。七.unique(唯一)约束,指的是让字段的数据具有唯一性,该字段内的数据不可以发生从复,但是可以为空,而主键不可以为空,实际上,主键也就是一个唯一性约束。在这里我们把stuname(学生姓名)字段设计成unique,但是实际操作时,学生姓名是可以从复的,这里我们是假设,是为把这个约束制作完。接下来我们看看sql语句: Use student Go alter table stuinfo add constraint un_stu unique(stuname) 同样,执行完毕后,可以添加数据,测试看看。以上,我们是一个一个的介绍了约束的使用,实际上在使用时,可以直接在建立表时一起定义,只不过这种定义我们没有给每一个约束命名,操作起来可能不是很方便。那么,接下来我们也来看看这种定义方式,建立一张新表stuinfo1: Use student Go create table stuinfo1 ( stuid char(8) not null primary key, stuname varchar(10) unique, stusex char(2) default '男', stuage tinyint check(stuage>10 and stuage<40), stutel char(14) ) 这种方法的缺点是:它的约束名不是很清楚,所以删除时就必须要到管理视图去操作,麻烦一点。下面我们来看看,用sql语句来删除这些约束: Use student Go alter table stuinfo drop constraint un_stu 我们这里删除的是unique 约束,大家可以试着删除其它约束。最后,我把添加约束的格式写一下,便于大家参考: Alter table 表名 Add constraint 约束名 约束类型(字段名或表达式) 删除的格式如下: Alter table 表名 drop constraint 约束名好了,约束的学习就到这里,在下一篇,我还会和大家共同来学习sql server 2005。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值