实验5实验报告.docx

上传人:b****2 文档编号:1436936 上传时间:2023-05-01 格式:DOCX 页数:17 大小:606.62KB
下载 相关 举报
实验5实验报告.docx_第1页
第1页 / 共17页
实验5实验报告.docx_第2页
第2页 / 共17页
实验5实验报告.docx_第3页
第3页 / 共17页
实验5实验报告.docx_第4页
第4页 / 共17页
实验5实验报告.docx_第5页
第5页 / 共17页
实验5实验报告.docx_第6页
第6页 / 共17页
实验5实验报告.docx_第7页
第7页 / 共17页
实验5实验报告.docx_第8页
第8页 / 共17页
实验5实验报告.docx_第9页
第9页 / 共17页
实验5实验报告.docx_第10页
第10页 / 共17页
实验5实验报告.docx_第11页
第11页 / 共17页
实验5实验报告.docx_第12页
第12页 / 共17页
实验5实验报告.docx_第13页
第13页 / 共17页
实验5实验报告.docx_第14页
第14页 / 共17页
实验5实验报告.docx_第15页
第15页 / 共17页
实验5实验报告.docx_第16页
第16页 / 共17页
实验5实验报告.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验5实验报告.docx

《实验5实验报告.docx》由会员分享,可在线阅读,更多相关《实验5实验报告.docx(17页珍藏版)》请在冰点文库上搜索。

实验5实验报告.docx

实验5实验报告

学号:

姓名:

陈家凤

实验五SQL语言

一、目的与要求

1.掌握SQL语言的查询功能;

2.掌握SQL语言的数据操作功能;

3.掌握对象资源管理器建立查询、索引和视图的方法;

二、实验准备

1.了解SQL语言的查改增删四大操作的语法;

2.了解查询、索引和视图的概念;

3.了解各类常用函数的含义。

三、实验内容

(一)SQL查询功能

使用提供的studentdb数据库文件,先附加到目录树中,再完成下列题目,SQL命令请保存到脚本文件中。

1.基本查询

(1)查询所有姓王的学生的姓名、学号和性别

SelectSt_Name,St_Sex,St_ID

Fromst_info

WhereSt_Namelike'王%'

图5-1

(2)查询全体学生的情况,查询结构按班级降序排列,同一班级再按学号升序,并将结果存入新表new中

select*intonew

fromst_info

orderbyCl_Namedesc,st_IDasc

图5-2

(3)对S_C_info表中选修了“体育”课的学生的平均成绩生成汇总行和明细行。

(提示:

用compute汇总计算)

因2014版本已不支持compute关键字,所以选择用其他方式。

Selectc_no,score

Froms_c_info

Wherec_no=

groupbyc_no,score

图5-3

2.嵌套查询

(1)查询其他班级中比“材料科学0601班”的学生年龄都大的学生姓名和年龄

selectst_name,born_date

fromst_info

wherecl_name!

='材料科学0601班'andborn_date<(selectmin(born_date)

fromst_infowherecl_name='材料科学0601班')

图5-4

(2)用exists查询选修了“9710041”课程的学生姓名

selectst_name

fromst_info

whereexists(select*froms_c_infowherec_no=9710041andst_id=

图5-5

(3)用in查询找出没有选修“9710041”课程的学生的姓名和所在班级。

selectst_name,cl_name

fromst_info

wherest_idnotin(selectst_idfroms_c_infowherec_no='9710041')

图5-6

(4)查询选修了学号为“05”的学生所选全部课程的学生姓名。

selectst_name

fromst_infowherest_idin

(selectdistinctst_idfroms_c_infowherenotexists

(select*froms_c_info

wherest_id='05'andnotexists

(select*froms_c_infowhere=and

c_no=any(selectc_nofroms_c_infowherest_id='05'))))

图5-7

 

3.连接综合查询及其他

(1)查询每个学生所选课程的最高成绩,要求列出学号,姓名,课程编号和分数。

select,st_name,,score

fromst_infoinnerjoins_c_infoon=innerjoin

c_infoon=

wherescore=(selectmaxfroms_c_info

where=

图5-8

(2)查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生总成绩为空。

select,st_name,总成绩

fromst_info

leftouterjoin(selectst_id,sum(score)as总成绩froms_c_infogroupby

st_id)s_c_infoon=

图5-9

(3)查询“大学计算机基础”课程考试成绩前三名的学生姓名和成绩。

select,st_name,score

fromst_info

innerjoins_c_infoon=

innerjoinc_infoon=

andc_name='大学计算机基础'

图5-10

(4)将s_c_info中的score列的值转为等级制输出,即60分以下显示为“不及格”,60~69分显示“及格”,70~79分显示“中等”,80~81显示“良好”,90~100显示“优秀”。

要求输出学号、姓名、课程名、成绩等级。

(提示:

在select字句中使用case…when…end语句)

select,st_name,c_name,成绩等级=

case

whenscore>=90then'优秀'

whenscore>=80then'良好'

whenscore>=70then'中等'

whenscore>=60then'及格'

whenscore<60then'不及格'

end

froms_c_info,st_info,c_info

where=and=

图5-11

(二)SQL的增删改功能

在实验四建立的studb数据库中,写SQL语句实现增删改功能。

1.在S表中增加如下记录:

图5-12

insert S

values('s3','张明华','男','1995/08/2100:

00:

','MA_数学','','浙江杭州',NULL) 

图5-13

图5-14

2.在C表中将课程名为“数据库”的学分更改为3。

update C   set ccredit='3' 

where cname='数据库'

图5-15

图5-16

3.删除S表中S2的学生记录,请问是否能删除,为什么,要如何操作。

能删除

delete from S 

where sno='S2'

图5-17

图5-18

图5-19

图5-20

(三)索引

1.在studb数据库中,分别用对象资源管理器和SQL语言定义索引

在对象资源管理器中,在T表的tname列上中建立聚集索引ix_tname,降序。

查看聚集的效果。

图5-21

图5-22

1.使用SQL语言定义TC表的(tno,cno)列上的复合索引ix_tc,tno列设为升序,cno列设为降序

先增加cno列,再删除聚集索引ix_tname。

create  clustered  index  ix_tc  

on T(tno,cno)

图5-23

图5-24

(四)视图

在studb数据库中操作。

1.在对象资源管理中建立视图v_s_c,列出所有学生所选课程的成绩:

学号,姓名,班级名,课程号,课程名,成绩。

图5-25

图5-26

图5-27

2.使用SQL语言建立视图v_cjtj,列出每位同学的学号,最高成绩,最低成绩,平均成绩和总成绩,按总成绩降序排列。

createviewv_cjtj(xh,zgf,zdf,pjf,zf)

as

(selecttop100sno,max(score),min(score),avg(score),sum(score)

fromSCgroupbysno

orderbysum(score)desc

图5-28

图5-29

四、思考与练习

1.视图和表有何区别?

(1)视图是已经编译好的sql语句。

而表不是       

(2)视图没有实际的物理记录。

而表有。

    

(3)表是内容,视图是窗口 

(4)表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改     

(5)表是内模式,视图是外模式     

(6)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。

从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。

 

(7)表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。

      

(8)视图的建立和删除只影响视图本身,不影响对应的基本表。

2.视图中的列都能更新吗?

不一定

3.查询年龄最大的教师号和年龄,SQL命令如下:

请问为什么报错?

如何修改?

Selecttno,max(year(getdate())-year(tbirday))

FromT

选择列表中的列‘’无效,因为该列没有包含在聚合函数或GROUP BY 子句中。

 在from后面加group by tno

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2