打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Sql server 2005学习笔记之约束

Sql server 2005学习笔记之约束

上传时间:2009-04-30 | 作者:吴忠胜 | 来源:新华3++网络学院 | 点击:

相信大家学习了数据库后,都知道数据库中的数据是现实世界中的反映,彼此之间可能都存在一定的联系,例如,学生系统中学生的学号是唯一的,学生的年龄要在一定的范围内,不可以随意输入的,等一些情况,这样的例子可能现实生活中,还有很多,从这些例子中,我们可以得出一个结果,也就是一个成功的数据库必须对这些数据进行定义,使它们符合现实,具有完整性,那么这里完整性,就是我们所说的约束.
约束实际上就是使数据完整,也就是存储的数据具有一致性和正确性,为了使我们的数据完整,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。

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SQL Server数据完整性
[学习笔记] Oracle字段类型、建表语句、添加约束
mysql中常见约束
SQL语句(建库、建表、修改语句)
Sql Server 和 Access 操作数据库结构Sql语句
CREATE TABLE、ALTER TABLE、DROP TABLE等,及表内列的添加、...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服