实验五 查询数据库
1 启动SQL Server查询分析器,打开SQL查询分析器窗口。
2 SQL查询分析器窗口中选择要操作的数据库,如XSCJ”数据库。
3 KC表中查询学分低于3的课程信息,并按课程号升序排列。
  select *
From KC
Where 学分<=3
4 XS_KC表中按学号分组汇总学生的平均分,并按平均分的降序排列。
select distinct from
Select 学号,avg(成绩)
From XS_KC
Group by 学号
Order by 学号
5 XS_KC表中查询选修了3门以上课程的学生学号。
Select 学号
From XS_KC
Group by 学号
Having count(*)>=3
6 按学号对不及格的成绩记录进行明细汇总。
Select 学号,成绩
From XS_KC
Where 成绩<60
7 分别用子查询和连接查询,求107号课程不及格的学生信息。
  Select *
  From XSQK
  Where 学号in
    (select 学号
      From XS_KC
      Where 课程号= '107'  and 成绩<60 )
8 用连接查询在XSQK表中查询与杨颖住在同一寝室的学生,即其相同
  Select *
  From XSQK
  Where in
  (Select
From XSQK
Where 姓名='杨颖')
9 查询XSQK表中所有的系名。
10)查询有多少同学选修了课程。
  select count(distinct 学号)
  From XS_KC
11 查询有多少同学没有选课。
  select count(*)
from xsQK left join xs_KC  on xs_KC.学号=xsQK.学号
where 成绩is null
12)查询与杨颖同一个系的同学姓名。
    select 姓名
From xsQK
Where
13 查询选修了课程的学生的姓名、课程名与成绩。
 
14 统计每门课程的选课人数和最高分。
select 课程号,count(学号),max(成绩)
from xs_kc
group by 课程号

15 统计每个学生的选课门数和考试总成绩,并按选课门数的降序排列。
select 学号,count(课程号),max(成绩)
from xs_kc
group  by 学号
order by count(课程号)
实验七 创建和使用索引
1) 给KC表的课程号属性上创建聚集索引K1,在XS_KC表的[学号,课程号]上创建复合索引IX_XS_KC
create clustered index k1 on [KC](课程号)
create clustered index IX_XS_KC on [XS_KC](学号,课程号)
2)强制使用索引进行查询
select *
from kc with(index (k1))
实验八 创建并使用约束和默认值对象
1) 建立一个默认值对象“DFO_出生日期,其值为1980-1-1
Create default DFO_出生日期
      As  '1980-1-1'
2) 将默认值对象绑定到XSQK表的出生日期列。
exec sp_bindefault DFO_出生日期,'xsqk.出生日期'
实验九 实现数据完整性
1)XSQK表中创建一个规则X_R,只能接收8位的数字,并邦定到电话号码列中。
create rule x_R
as
@a like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
exec sp_bindrule x_r,'xsqk.电话号码 '
2XSQK表再插入数据,电话号码为“7768971”,“34ar,检查完整性
参照完整性
1)给XSQKKCXS_KC建立参照完整性,确定主码,外码。
alter table KC
add constraint skc  primary key(课程号)
alter table xsqk
add constraint skc1  primary key(学号)
alter table xs_kc
add constraint skc2  primary key(学号,课程号)
alter table xs_kc
add constraint xs foreign key(学号) references  xsqk(学号)
on
delete cascade
on update cascade
alter table xs_kc
add constraint xs1 foreign key(课程号) references  kc(课程号)
on delete no action
on update noaction
2)设置SXQK表对于删除和更新操作是级连,KC表对于删除更新操作是拒绝。
3)在XS_Kc表中分别插入两条记录,学号分别为“020208”和“020201”检查完整性。
4)更新XS_KC,更改学号“020201”为“020206”,检查完整性。
5)删除XSQK表中的学号为“020201”的记录,更改学号为“020201”的记录为“020208
实验十 用户自定义函数
1)创建一个函数,输入学生学号,要求出此学生所选课程的门数
create function n1
(@id int  )  --    参数
returns int    -- 返回值类型
begin
declare @nu int
select @nu=count(*)
from xs_kc
where 学号=@id
return @nu  -- 返回值
end
select dbo.n1('020101')
2)创建一个函数,输入教师姓名,要求输入此教师所授课程被选修的情况
create function table1
(@tname varchar(50))
returns table
return
(select *
from kc
where 教师=@tname and 课程号 in
(select  课程号
from xs_kc
))select *
from t('陈红')
3)创建一个函数,输入学号,输出这个学生选修的情况以及成绩的等级。
 小于60 不及格  6070 及格  7080 中等  8090 良好
90以上 优秀
create function m6
(@sno nchar(10))
returns @my_table table
(
sno nchar(10),
cno nchar(10),
grade nchar(10),
l nchar(10)
)
as
begin
insert @my_table select 学号,课程号, 成绩,l=
case
when 成绩 <60 then '不及格'
when 成绩>=60 and 成绩<70 then '及格'
when 成绩>=70 and 成绩<80 then '中等'
when 成绩>80 and 成绩<=90 then '良好'
else '优秀'
end
from  XS_kc
where 学号=@sno
return
end
select *
from m6('020101')
实验十一 实现存储过程
1)建立一个存储过程,要求输入一个课程号,查询该课成绩不及格的学生的基本信息,包括学号、姓名、性别和信息,最后输出。
create proc mp4
@cno varchar(10)
as
select  xsqk.学号,姓名,性别,
from xsqk,xs_kc
where  xsqk.学号=xs_kc.学号 and 成绩<60 and 课程号=@cno
exec mp4 ‘001’
2)创建一个存储过程,要求输入教师号,输出该教师所教课程的课程的被选修的人数
create proc mp5

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。