SQLServer完整性实验

  1. 检验是否存在指定数据库
if exists(select * from sysdatabases where name='XSGL')
  1. 检验是否存在指定列
if exists(select *from syscolumns where id='student' and name='uid')
  1. 检验是否存在指定表
if exists(select * from sysobjects where name='teacher')

添加和删除

添加
  1. 为student表新增一列id
    identity(m,n)表示标识类型,标识种子是1,增量为1,当用户删掉某一行后,标识号并不会被删掉
alter table student
add  id int identity(1,1); 
  1. 为student表新增一列入学日期
alter table student
add en_date date; 
删除
  1. 删除日期的约束
alter table student
drop constraint df_en_date;
  1. 删除student表中的uid列
alter table student drop column uid;

一、实体完整性

  1. not null 非空 字段默认允许为空
alter table student
alter column sno char(5) not null;   
--将student表中的sno设置为非空,因为默认状态下为“允许为空”
  1. primary key 主键约束 主键非空且唯一
alter table student
add constraint pk_sno primary key(sno);
  1. unique 唯一值,不允许重复
alter table student
add constraint uq_sname unique(sname);
  1. 将sc表中的sno,cno设置为非空,然后设置成主键,并将其设置为外键
    主码是多个属性时一定要进行表级约束
alter table sc
alter column sno char(5) not null;
alter table sc
alter column cno char(2) not null;

alter table sc
add constraint pk_snocno primary key(sno,cno);

二、域完整性

  1. check约束,设置ssex的取值
alter table student
add constraint ck_ssex check(ssex in('男','女'));
  1. check约束,设置sage取值范围
alter table student
add constraint ck_sage check(sage between 15 and 50);
//或者  check(sage>15 and sage<50)
  1. default约束,给ssex设置默认值
alter table student
add constraint df_ssex default('女') for ssex;
  1. 添加一身份证号字段,设置其惟一性
alter table student add uid char(18) unique (uid);

设置身份证号的输入格式:

alter table student add constraint 
ck_uid_format check ((uid like '[0-9][0-9][0-9][0-9][0-9][0-9][1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]_') 
or (uid like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]'));

设置18位身份证号的第7位到第10位为合法的年份(1900-2050)
convert()函数是把日期转换为新数据类型的通用函数;可以用不同的格式显示日期/时间数据。
详细见W3C-convert()函数

alter table student add constraint 
ck_uid_format2 check ( not len(uid)=18 
or ( (convert(smallint,substring(uid,7,4) )>=1900) 
and(convert(smallint,substring(uid,7,4) )<=2050)) );

参照完整性

  1. 将sc表中的sno,cno设置为外键
alter table sc
add constraint fk_sno
foreign key(sno) references student(sno);
alter table sc
add constraint fk_cno
foreign key(cno) references course(cno);
一、实验目的 使学生加深对数据库安全性和完整性的理解。并掌握SQL Server有关用户、角色及操作权限的管理方法。熟悉通过SQL语句对数据进行完整性控制。 二、实验内容和要求   数据库的安全性实验,在SQL Server企业管理器,设置SQL Server的安全认证模式,实现对SQL Server的用户和角色管理,设置和管理数据操作权限。   具体内容如下:   设置SQL Server的安全认证模式(Windows或SQL Server和Windows(S)认证模式)。   登录的管理 创建一个登录用户   数据库用户的管理 登陆用户只有成为数据库用户(Database User)后才能访问数据库。每个数据库的用户信息都存放在系统表Sysusers,通过查看Sysusers表可以看到该数据库所有用户的情况。SQL Server的数据库都有两个默认用户:dbo(数据库拥有者用户)和(dba)。通过系统存储过程或企业管理器可以创建新的数据库用户。   角色的管理 创建一个角色,使创建的用户成为该角色的成员,并授予一定的操作权限。   在学生表定义主键、外键约束。   在课程表的“课程名”字段上定义唯一约束。   在选课表的“成绩”字段上定义check约束,使之必须大于等于0且小于等于100.“课程号”字段只能输入数字字符。   定义规则,并绑定到读者表的“性别”字段,使之只能取“男、女”值。   在学生表增加出生日期字段。定义缺省,并绑定到借阅表的“借阅日期”上,使之只能取当前日期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值