数据库数据查询实验报告.docx

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

数据库数据查询实验报告.docx

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

数据库数据查询实验报告.docx

数据库数据查询实验报告

实验报告

课程名称数据库技术与应用

实验名称数据查询实验

1.实验目的

1)掌握select语句的基本语法;

2)学会使用orderby子句进行排序,使用groupby子句进行分组统计;

3)学会数据汇总、连接查询、嵌套查询的方法。

2.实验准备

1)在服务器上创建用户数据库student

2)在用户数据库student中创建学生基本信息表(stud_info)、学生成绩表(stud_grade)、教师基本信息表(teacher_info)、课程信息表(lesson_info)、课程安排表(teach_schedule)、院系代码表(dept_code)、专业代码表(specialty_code)、教研室信息表(staffroom_info)和教室信息表(classroom_info);

3)通过对象资源管理器或SQL编辑器向各个数据表输入实验数据。

3.实验内容和步骤与实验结果

(1)select语句的基本使用

1)查询学生基本表(stud_info)中的每个学生的所有数据。

select*fromstud_info

独立实践:

用select语句查询学生成绩表(stud_grade)的所有记录。

select*fromstud_grade

 

教师基本信息表(teacher_info)的所有记录。

select*fromteacher_info

 

课程信息表(lesson_info)的所有记录。

select*fromlesson_info

课程安排表(teach_schedule)的所有记录。

select*fromteach_schedule

院系代码表(dept_code)的所有记录。

select*fromdept_code

专业代码表(specialty_code)的所有记录。

select*fromspecialty_code

教研室信息表(staffroom_info)的所有记录。

select*fromstaffroom_info

教室信息表(classroom_info)的所有记录。

select*fromclassroom_info

2)在学生基本信息表(stud_info)中查询每个学生的地址和电话。

selectstud_id,name,address,telcodefromstud_info

独立实践:

用select语句查询学生成绩表(stud_grade)的一列或若干列。

selectstud_id,name,gradefromstud_grade

 

教师基本信息表(teacher_info)的一列或若干列。

selectteacher_id,name,gender,salary,course_id

fromteacher_info

课程信息表(lesson_info)的一列或若干列。

selectcourse_id,course_name,course_typefromlesson_info

课程安排表(teach_schedule)的一列或若干列。

selectcourse_id,course_week,teacher_idfromteach_schedule

院系代码表(dept_code)的一列或若干列。

selectdeptnamefromdept_code

专业代码表(specialty_code)的一列或若干列。

selectspecnamefromspecialty_code

教研室信息表(staffroom_info)的一列或若干列。

selectjysh_id,jysh_name,jysh_leader

fromstaffroom_info

教室信息表(classroom_info)的一列或若干列。

selectroom_id,room_name,room_sizefromclassroom_info

 

3)查询stud_id为“0401010634”的学生的地址和电话。

selectstud_id,name,address,telcodefromstud_info

wherestud_id='0401010634'

独立实践:

用select语句

查询学生成绩表(stud_grade)满足指定条件的一列或若干列。

selectstud_id,name,gradefromstud_grade

wherestud_id='0401010634'

教师基本信息表(teacher_info)满足指定条件的一列或若干列。

selectteacher_id,name,salaryfromteacher_info

whereteacher_id='010101'

课程信息表(lesson_info)满足指定条件的一列或若干列。

selectcourse_id,course_name,course_timefromlesson_info

wherecourse_time=30

课程安排表(teach_schedule)的一列或若干列。

selectcourse_id,course_week,teacher_idfromteach_schedulewherecourse_week=15

院系代码表(dept_code)满足指定条件的一列或若干列。

selectdeptnamefromdept_code

wheredeptcode='03’

专业代码表(specialty_code)满足指定条件的一列或若干列。

selectspecnamefromspecialty_codewherespeccode='040104'

教研室信息表(staffroom_info)满足指定条件的一列或若干列。

selectjysh_id,jysh_name,jysh_leaderfromstaffroom_info

wherejysh_id='0101'

教室信息表(classroom_info)满足指定条件的一列或若干列。

selectroom_id,room_name,room_sizefromclassroom_info

whereroom_size=60

4)查询stud_info表中性别为“女”的学生的地址和电话。

使用AS子句将结果中指定目标列的名称分别指定为汉字标题。

selectstud_idas学号,nameas姓名,addressas地址,telcodeas电话fromstud_info

wheregender=N'女'

5)查询计算机应用教研室的教师工资情况.

selectteacher_id,name,gender,age,tech_title,salaryfromteacher_info

wheresubstring(course_id,3,4)='0101'

6)找出所有姓“王”的教师所对应的技术职称。

selectteacher_id,name,tech_titlefromteacher_info

wheresubstring(name,1,1)='王'

独立实践:

查询所有电话号码中含有“3460”的教师所担任课程的编码。

selectname,course_id,telephonefromteacher_info

wheretelephonelike'%3460%'

7)学生成绩表中查询成绩在80-89之间的学生的学号,课程号和成绩。

selectstud_id,course_id,gradefromstud_grade

wheregradebetween80and90

独立实践:

在学生基本信息表中查询出生日期从“01-01-1987”到“12-31-1987”的学生的学号,的姓名,家庭住址和邮政编码。

selectstud_id,name,address,zipcodefromstud_info

wherebirthdaybetween'01-01-1987'and'12-31-1987'

(2)子查询的使用

1)查找在计算机工程系(教师编号中第一位,第二位为院系编号)工作的教师名册

select*

fromteacher_info

wheresubstring(teacher_id,3,2)

in(selectsubstring(teacher_id,3,2)fromteacher_info

wheresubstring(teacher_id,1,2)='01')

独立实践:

用子查询的方法查找计算机工程系计算机应用教研室(教师编号中第三位、第四位为教研室编号)的教师名册。

select*fromteacher_info

wheresubstring(teacher_id,3,2)=

(selectright(speccode,2)fromspecialty_codewherespecname='计算机应用技术')

(2)查找计算机工程系中所有担任‘计算机专业英语‘的教师编号和姓名

selectteacher_id,namefromteacher_info

wheresubstring(teacher_id,3,2)

in(selectsubstring(teacher_id,3,2)fromteacher_infowheresubstring(teacher_id,1,2)='01')

andright(course_id,2)=(selectsubstring(course_id,9,2)from

lesson_infowherecourse_name='计算机专业英语')

提示练习:

在学生成绩表中查询计算机工程系,且课程名称为计算机专业英语的学生考试情况。

select*fromstud_gradewheresubstring(stud_id,3,2)=

(selectdeptcodefromdept_codewheredeptname='计算机工程系')andright(course_id,2)=

(selectright(course_id,2)fromlesson_info

wherecourse_name=’计算机专业英语’)

3)查找计算机应用技术专业的学生姓名,学号,年龄,电话号码及家庭住址

selectname,stud_id,birthday,telcode,addressfromstud_info

wheresubstring(stud_id,3,2)=(selectdeptcodefromdept_codewheredeptname='计算机工程系')

andsubstring(stud_id,5,2)=(selectsubstring(speccode,5,2)fromspecialty_codewherespecname='计算机应用技术')

提示练习:

查询计算机工程系计算机应用教研室的教师编号、姓名及其课程编号。

selectteacher_id,name,course_idfromteacher_info

wheresubstring(teacher_id,3,2)=(selectdeptcodefromdept_codewheredeptname='计算机工程系')

andsubstring(teacher_id,3,2)=(selectsubstring(jysh_id,3,2)fromstaffroom_infowherejysh_name='计算机应用')

4)查找计算机工程系担任“多媒体技术”课程教学的教师名称,电话号码,以及课程编码

selectname,telephone,course_idfromteacher_infowhereleft(teacher_id,2)

in(selectdeptcodefromdept_codewheredeptname='计算机工程系')

andright(course_id,2)

in(selectsubstring(course_id,9,2)

fromlesson_infowherecourse_name=’多媒体技术’)

独立实践:

查询计算机工程系参与了‘多媒体技术‘课程考试的学生的学号,姓名和考试成绩

selectstud_id,name,gradefromstud_grade

wheresubstring(stud_id,3,2)

=(selectdeptcodefromdept_codewheredeptname='计算机工程系')

andcourse_id=

(selectcourse_idfromlesson_infowherecourse_name='多媒体技术')

(3)连接查询的使用

1)下列命令实现stud_info与stud_grade等值连接,请完善其命令。

select*fromstud_info

innerjoinstud_grade

onstud_info.stud_id=stud_grade.stud_id

orderbystud_info.stud_id

 

独立实践:

写出课程安排表(teach_schedule)与课程信息表(lesson_info)的等值连接的sql语句。

select*fromteach_schedule

innerjoinlesson_info

onteach_schedule.course_id=lesson_info.course_id

orderbyteach_schedule.course_id

2)下列命令实现teacher_info与lesson_info左外连接,请完善其命令。

selectlesson_info.course_name,teacher_info.name,

teacher_info.teacher_idfromteacher_info

leftouterjoinlesson_info

onlesson_info.course_id=teacher_info.course_id

独立实践:

写出教师信息表(teacher_info)与课程安排表(teach_schedule)的右外连接的sql语句。

selectteacher_info.*,teach_schedule.*fromteacher_info

rightouterjointeach_schedule

onteach_schedule.course_id=teacher_info.course_id

(4)数据汇总

1)查询计算机工程系全体教师的工资情况

selectavg(salary)as计算机工程系教师平均工资

fromteacher_info

Whereleft(teacher_id,2)=(selectdeptcodefromdept_codewheredeptname='计算机工程系')

独立实践:

查询计算机工程系教师的最大年龄和最小年龄

selectmax(age)as最大年龄,min(age)as最小年龄

fromteacher_info

whereleft(teacher_id,2)=(selectdeptcodefromdept_codewheredeptname='计算机工程系')

2)求计算机工程系教师的平均年龄

selectavg(age)as计算机工程系教师平均年龄

fromteacher_info

whereleft(teacher_id,2)=(selectdeptcodefromdept_codewheredeptname='计算机工程系')

独立实践:

查询计算机工程系学生的最大分数和最低分数

selectmax(mark)as最大分数,min(mark)最低分数

fromstud_info

wheresubstring(stud_id,3,2)=(selectdeptcodefromdept_code

wheredeptname='计算机工程系')

3)求计算机工程系教师的总人数

selectcount(teacher_id)as计算机工程系教师总人数

fromteacher_info

whereleft(teacher_id,2)=(selectdeptcodefromdept_code

wheredeptname='计算机工程系')

独立实践:

统计计算机工程系担任多媒体技术课程教学的教师的工资总和

selectsum(salary)as总工资

fromteacher_info

whereleft(teacher_id,2)=(selectdeptcodefromdept_code

wheredeptname='计算机工程系')andcourse_id='0401010106'

(5)groupby.orderby子句的使用

1)按照职称统计各各教研室的教师人数

selecttech_title职称,count(tech_title)人数

fromteacher_info

groupbytech_title

独立实践:

按性别统计计算机工程系的学生人数

selectgender,count(gender)

fromstud_info

wheresubstring(stud_id,3,2)=(selectdeptcodefromdept_code

wheredeptname='计算机工程系')

groupbygender

2)将计算机工程系支撑位“讲师”的教师,按年龄由低到高排序

selectteacher_id,name,tech_title,age

fromteacher_info

wheretech_title='讲师'

orderbyage

独立实践:

将计算机工程系的学生情况按出生日期的先后序列

Selectname,year(getdate())-year(birthday)agefromstud_info

orderbybirthday

实验总结:

总的来说,这次实验做得并不顺利,最主要的原因就是对SELECT语句的基本语法不熟练,写查询语句时还要一边看书一边写,花了不少时间,但却收获很多。

通过实验进一步熟悉了SQLServer2005的一些基本操作,熟悉并掌握了SELECT语句的基本语法,会使用简单的连接查询、嵌套查询、数据汇总等基本语句和方法,并学会了使用orderby子句进行排序,使用groupby子句进行分组统计。

当然在实验过程中遇到不少问题,例如,当子查询返回的值不止一个时,或子查询用作表达式时,子查询语句不能跟随在=、!

=、<、<=、>、>=之后,此时应改为in。

总之,实验上机操作能帮助我们发现并纠正很多问题。

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

当前位置:首页 > 医药卫生

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

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