数据库实验三

  • 实验目的
  1. 深入理解数据库表中数据完整性、视图、存储过程的意义。
  2. 掌握数据库表中数据完整性的实现方法。
  3. 掌握数据库视图的实现方法。
  4. 掌握数据库存储过程的实现方法。
  5. 掌握数据完整性、视图、存储过程分别在SQL Server 查询分析器和企业管理器的使用方法。

  • 实验内容
  1. 学生成绩数据库包括学生表数据、课程表数据和学生课程表数据。
  2. 根据要求掌握主外键约束的实现方法。
  3. 根据要求掌握唯一约束的实现方法。
  4. 根据要求掌握检查约束的实现方法。
  5. 根据要求掌握默认值的实现方法。
  6. 根据要求掌握视图的使用方法。
  7. 根据要求存储过程的使用方法。

  • 实验内容部分程序及结果
  1. 定义学生成绩数据库中各表的主键和外键约束。

创建班级表并使班级号为主键/唯一约束

create table dbo.BJ 

    班级号 char(6) not null primary key, 

    班级名 char(12) null, 

    辅导员 char(8) null, 

    专业名 char(12) null 

go 

给学生表添加身份证号码属性,添加班级号属性并作为外键约束

alter table XS 

    add 身份证号码 char(20) 

alter table XS 

    add 班级号 char(6)  

        constraint fk_bjh foreign key(班级号) references BJ

  1. 给学生表身份证号码赋值(不同)后,设置为学生表的唯一约束

alter table XS 

    add constraint sf_uk unique(身份证号码) 

将姓名设置为唯一约束

alter table XS 

    add constraint sf_xm unique(姓名) 

  1. 设置检查约束

性别是否为0/1

alter table XS 

    add constraint ck_xb check ((性别='1') or (性别='0'))

成绩是否为[0,100]

alter table CJ 

    add constraint ck_cj check ((成绩>=0) and (成绩<=100)) 

专业名是否为计算机,通信工程,测控之一

alter table KC 

    add constraint ck_kcm check (课程名 in ('计算机','通信工程','测控')) 

  1. 设置默认值

专业名默认值为计算机

alter table XS 

    add constraint def_zym default '计算机' for 专业名 

备注默认为当天日期

alter table xs 

add  constraint aa default convert(char(30),getdate(),111)  for 备注 

  1. 定义规则,要求学号输入格式为:学号共6位,前两位数字范围在0-3之间,后4位数字范围在0-9之间。并绑定到XS表的学号字段上

create rule xs_rule 

    as @range like'[0-3][0-3][0-9][0-9][0-9][0-9]' 

go 

exec sp_bindrule 'xs_rule','XS.学号' 

go 

  1. 创建一个叫v_xs1的视图, 查询总学分大于50的计算机专业学生的信息

create view v_xs1 with encryption 

    as 

        select * from XS where 总学分>=50 and 专业名='计算机' 

        with check option 

  1. 创建一个叫v_xs的视图,查询总学分大于50的所有学生的学号,姓名,专业和选修的课程名及成绩

create view v_xs with encryption 

    as 

        select XS.学号,姓名,专业名,课程名,成绩 from XS,KC,CJ where XS.学号=CJ.学号 and KC.课程号=CJ.课程号 and 总学分>=50 

        with check option 

  1. 创建一个叫proc_info的存储过程,查询计算机专业的所有学生的信息。

create procedure proc_info 

    as 

        select * from XS where 专业名='计算机' 

go 

execute proc_info 

  1. 创建一个带参数叫proc_student的存储过程,查询某个学生的信息。

create procedure pro_student @学号 char(6)

as    select XS.学号,姓名,性别,出生时间,专业名,总学分,备注 from XS where XS.学号=@学号

  1. 删除v_xs视图

drop view if exists v_xs

  1. 删除proc_student存储过程

drop procedure if exists pro_student

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值