实验四:数据库单表查询.doc_第1页
实验四:数据库单表查询.doc_第2页
实验四:数据库单表查询.doc_第3页
实验四:数据库单表查询.doc_第4页
实验四:数据库单表查询.doc_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验四:数据库单表查询一、实验目的1. 掌握SELECT语句的基本语法和查询条件表示方法;2. 掌握查询条件表达式和使用方法;3. 掌握GROUP BY 子句的作用和使用方法;4. 掌握HAVING子句的作用和使用方法;5. 掌握ORDER BY子句的作用和使用方法。二、实验环境已安装SQL Server 企业版的计算机(120台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1. 了解数据库查询;2. 了解数据库查询的实现方式;3. 完成实验报告;五、实验内容及步骤(一)在学生选课库中,用Transact-SQL语句实现下列简单数据查询操作。学号姓名性别年龄电话系编号S001王明男1986824571D2S002李勇男2389454321D3S003刘燕女21D1S004王萍女23D1S005王佳男2413098765892D3S006赵婷女20D1Student表学号课程号1课程号课程名称学分C1数据库系统原理4C2C程序设计4C3计算机体系结构3C4自动控制原理2C5数据结构4 Course 表成绩S001C183S001C289S001C365S001C485S001C569S002C378S002C475S005C195S004C185S005C192S005C376 SC表1)查询系编号为D2学生的基本信息(学号、姓名、性别、年龄)。select 学号,姓名,性别,年龄 from student where 系编号 like d2 2)查询学号为S006的学生的姓名。select 姓名 from student where 学号 =S006 3) 查询成绩在60-85之间的学生的学号。select distinct学号 from sc where 成绩 between 60 and 85 4) 查询所有姓王,并且姓名为两个字的学生的信息。select * from student where 姓名 like 王_5) 查询选修课程号为C1且成绩非空的学生学号和成绩,成绩按150分制输出(每个成绩乘以系数1.5)。select 学号,成绩*1.5 from sc where 课程号=c1and 成绩 is not null6) 查询有选课记录的所有学生的学号,用DISTINCT限制结果中学号不重复。select distinct 学号 from sc where 课程号 is not null7) 查询选修课程C1的学生学号和成绩,结果按成绩的升序排列,如果成绩相同则按学号的降序排列。select 学号,成绩 from sc where 课程号 like c1 order by 成绩 ,学号 desc(二)、以数据库原理实验3数据库中数据为基础,请使用T-SQL 语句实现以下操作:1. 列出所有不姓刘的所有学生;select sname from student where sname not like 刘%2. 列出姓“沈”且全名为3个汉字的学生; select sname from student where sname like 沈_;3. 显示在1985年以后出生的学生的基本信息;select sno,sname,ssex, sage,year(getdate()-sage birther,sdept from student where year(getdate()-sage1985;4. 按照“性别、学号、姓名、年龄、院系”的顺序列出学生信息,其中性别按以下规定显示:性别为男显示为男 生,性别为女显示为女 生,其他显示为“条件不明”;select 性别=case when ssex=男 then男生 when ssex=女 then女生 else条件不明 end,学号=sno,sname as 姓名,sage 年龄,院系=sdept from 学生5. 查询出课程名含有“数据”字串的所有课程基本信息;select * from 课程 where cname like %数据%6. 显示学号第八位或者第九位是1、2、3、4或者9的学生的学号、姓名、性别、年龄及院系;select sno,sname,ssex,sage,sdept from 学生 where sno like _1-4,9_ or _1-4,9 7. 列出选修了1课程的学生,按成绩的降序排列;select * from 选课 where cno like 1 order by grade desc8. 列出同时选修“1”号课程和“2”号课程的所有学生的学号;select sno from 选课 where cno like 1 and cno like 29. 列出课程表中全部信息,按先修课的升序排列; select * from course order by cpno;10. 列出年龄超过平均值的所有学生名单,按年龄的降序显示; select * from student where sage (select avg(sage) from student) order by sage desc;11. 按照出生年份升序显示所有学生的学号、姓名、性别、出生年份及院系,在结果集中列标题分别指定为“学号,姓名,性别,出生年份,院系”; select sno 学号,sname 姓名,ssex 性别,year(getdate()-sage birthday from studentorder by year(getdate()-sage;12. 按照院系降序显示所有学生的 “院系,学号、姓名、性别、年龄”等信息,其中院系按照以下规定显示:院系为CS显示为计算机系,院系为IS显示为信息系,院系为MA显示为数学系,院系为EN显示为外语系,院系为CM显示为中医系,院系为WM显示为西医系,其他显示为院系不明;select 院系 = case when sdept = CS then 计算机系 when sdept = IS then 信息系 when sdept = MA then 数学系 when sdept = EN then 外语系 when sdept = CM then 中医系 when sdept = WN then 西医系 else 院系不明 end, sno 学号, sname 姓名,ssex 性别 from student order by sdept;13. 显示所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段“院系规模”,其中若该院系人数=5则该字段值为“规模很大”,若该院系人数大于等于4小于5则该字段值为“规模一般”, 若该院系人数大于等于2小于4则该字段值为“规模稍小”,否则显示“规模很小”;select distinct sdept,院系人数=count(*) into student2 from student where sdept is not nullgroup by sdept;select * 院系规模 = case when 院系人数=5 then 规模很大 when 院系人数=4 then 规模一般 when 院系人数=2 then 规模稍小 else 规模很小 endfrom student2;14. 按照课程号、成绩降序显示课程成绩在70-80之间的学生的学号、课程号及成绩;select * from sc where grade between 70 and 80order by cno desc,grade desc15. 显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为“学生总人数,平均年龄”; select count(sno) 学生总人数,avg(sage) 平均年龄 from student16. 显示选修的课程数大于3的各个学生的选修课程数; select sno,count(cno) cno_count from sc group by sno having count(cno)3;17. 按课程号降序显示选修各个课程的总人数、最高成绩、最低成绩及平均成绩;select count(cno) con_count,max(grade) max_grade,min(grade) min_grade,avg(grade) avg_grade from scgroup by cno order by cno desc;(三)、选做题18. 显示平均成绩大于“200515001”学生平均成绩的各个学生的学号、平均成绩; select sno,avg(grade) avg_grade from sc group by snohaving avg(grade)(select avg(grade) from sc where sno = 200515001);19. 显示选修各个课程的及格的人数; select cno,count(sno) sno_count from scwhere grade=60group by cno;20. 显示选修最多的课程数和最少的课程数; select sno 学号,count(cno) 选修最多的课程数 from sc group by snohaving count(cno) = all(select count(cno) from sc group by cno) select sno 学号,count(cno) 选修最少的课程数 from sc group by snohaving count(cno) = all(select count(cno) from sc group by cno)21. 显示各个院系男女生人数,其中在结果集中列标题分别指定为“院系名称、男生人数、女生人数”; select sdept 院系名称, 男生人数 = case when ssex = 男 the

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论