数据库SQL Server实验报告 之 数据库的完整性实验(8/8)

 数据库的完整性实验

注意:原版word在下载资源里面(免费下载)

实验目的及要求:

  1. 掌握数据库完整性控制的概念。
  2. 熟练掌握实体完整性参照完整性和用户自定义完整性的实现方法 。
  3. 掌握主键和外键的概念。
  4. 请用T-SQL语句完成以下内容。
  5. 在数据库表创建时是已有表中添加其完整性。

实验内容及步骤:

创建一个新的数据库stu,在数据库里建三个表分别是student、course和sc

创建数据库stu:

create database stu

on

primary

(name=stu,

filename='D:\database\stu.mdf',

size=10,

maxsize=100,

filegrowth=5)

log on

(name=stu_log,

filename='D:\database\stu_log.ldf',

size=10,

maxsize=50,

filegrowth=5)

建三个表

use stu

create table student

(sno char(9) not null,

sname char(8),

ssex char(2),

sage int,

sdept char(2));

create table course

(cno char(4) not null,

cname char(16),

credit int);

create table sc

(sno char(9) not null,

cno char(4)not null,

grade int check(grade<=100 and grade>=0),

)

以系统管理员身份登录到SQL Server服务器,

1. 定义stu数据库中student表的主键sno;

use stu

alter table student

add constraint sno_pk primary key(sno) --约束名为sno_pk

2. 将数据库stu的表course的cno字段定义为主键,约束名称为cno_pk;

use stu

alter table course

add constraint cno_pk primary key(cno)--约束名为 cno_pk

  1. 为表course中的字段cname添加唯一值约束;

alter table course

add constraint uq_cname unique(cname)

  1. 将数据库stu的表sc的sno及cno字段组合定义为主键,约束名称为sc_pk;

alter table sc

add constraint sc_pk primary key(sno,cno)

  1. 对于数据表sc的sno、cno字段定义为外码,使之与表student的主码sno及表course的主码cno对应。

alter table sc

add constraint sc_s_fk foreign key(sno)

references student(sno)

alter table sc

add constraint sc_c_fk foreign key(cno)

references course(cno)

实现如下参照完整性,设置成功后进行验证:

  1. 删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录;

alter table sc

add constraint sc_stu_fk foreign key(sno)

references student(sno)

on delete cascade

  1. 修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改;

alter table sc

add constraint fk_sno_student foreign key (sno)

references student(sno) on delete cascade on update no action

  1. 修改course表cno字段值时,该字段在sc表中的对应值也应修改;

alter table sc

add constraint sc_c_fk foreign key(cno)

references course(cno)

on update cascade

  1. 删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录;

alter table sc

add constraint fk_cno_course foreign key (cno)

references course(cno)

on delete cascade on update cascade

  1. 向sc表添加记录时,如果该记录的sno字段的值在student中不存在,则拒绝插入;

alter table sc

add constraint sc_f1 foreign key(sno)

references student(sno)

on update no action

  1. 定义check约束,要求学生学号sno必须为9位数字字符,且不能以0开头,第二三位皆为0;

(难)

方法一:

Alter  table  student Add  CONSTRAINT sno_ck
Check (sno  like &apos;[1-9]00[0-9][0-9][0-9][0-9][0-9][0-9]&apos;)

方法二:

alter table student

with nocheck

add constraint sno_ck

check ([sno] like '[1-9]00%s' and len(sno)=9)

  1. 定义stu数据库中student表中学生年龄值在16-25范围内;

alter table student

with nocheck

add constraint ck_age

check (16<=sage and sage<=25)

  1. 定义stu数据库中student表中学生姓名长度在2-8之间;

(难)

方法一:

Alter  table  student Add  CONSTRAINT sname_ck
check(len(sname)>2 and len(sname)<8)

方法二:

alter table student

with nocheck

add constraint ck_name

check (len(Sname)<=8 and len(Sname)>=2)

  1. 定义stu数据库中student表中学生性别列中只能输入

alter table student

with nocheck

add constraint ck_sex

check (Ssex in ('男','女'))

  1. 定义stu数据库student表中学生年龄值默认值为20;

alter table student

add constraint df_age default '20'

for sage

  1. 修改student表学生的年龄值约束可以为15-30范围内;

alter table student

drop ck_age

alter table student

with nocheck

add constraint ck_age

check (15<=Sage and Sage<=30)

  1. 删除上述唯一值约束、外键约束及check约束;

alter table sc

drop constraint fk_sno_student,fk_cno_course

alter table course

drop constraint uq_cname,sc_s_fk

alter table student

drop constraint sno_pk,sno_ck,cno_pk,sc_s_fk

--删除的顺序,一般不能改变,因为约束之间存在羁绊,比如需要先删除course表中的sc_s_fk约束才能删除student的sc_s_fk的约束。唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一、实验目的 使学生加深对数据库安全性和完整性的理解。并掌握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
发出的红包

打赏作者

君无戏言。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值