数据库实验四作业及答案
更新时间:2024-06-23 21:55:01 阅读量: 综合文库 文档下载
实验4 数据查询
一、 实验目的
1. 掌握使用Transact-SQL的SELECT语句进行基本查询的方法。 2. 掌握使用SELECT语句进行条件查询的方法。 3. 掌握嵌套查询的方法。 4. 掌握多表查询的方法。
5. 掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。 6. 掌握联合查询的操作方法。
7. 掌握数据更新语句INSERT INTO、UPDATE、DELETE的使用方法。
二、 实验准备
1. 了解SELECT语句的基本语法格式和执行方法。
2. 了解嵌套查询的表示方法。 3. 了解UNION运算符的用法。
4. 了解SELECT语句的GROUP BY和ORDER BY子句的作用。 5. 了解IN、JOIN等子查询的格式。
6. 了解INSERT INTO、UPDATE、DELETE的格式与作用。
三、 实验内容及步骤
0. 创建studentsdb数据库及其相应表,并录入数据。 启动查询分析器,运行下面链接的代码即可。 创建数据库代码
1. 在studentsdb数据库中,使用下列SQL语句将输出什么? (1) SELECT COUNT(*) FROM grade
(2) SELECT SUBSTRING(姓名,1,2) FROM student_info
(3) SELECT UPPER('kelly')
(4) SELECT Replicate('kelly',3)
(5) SELECT SQRT(分数) FROM grade WHERE 分数>=85
(6) SELECT 2,3,POWER(2,3)
(7) SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE())
2. 在studentsdb数据库中使用SELECT语句进行基本查询。
(1) 在student_info表中,查询每个学生的学号、姓名、出生日期信息。
SELECT*FROMstudent_info
(2) 查询学号为0002的学生的姓名和家庭住址。
SELECT姓名,家庭住址FROMstudent_info
WHERE学号=0002
(3) 找出所有男同学的学号和姓名。
SELECT学号,姓名FROMstudent_info
WHERE性别='男'
3. 使用SELECT语句进行条件查询
(1) 在grade表中查找分数在80~90分为内的学生的学号和分数。
SELECT学号,分数FROMgrade WHERE分数BETWEEN 80 AND 90
(2) 在grade表中查询课程编号为0003的学生的平均分。
SELECTAVG(分数)AS平均分FROMgrade
WHERE课程编号=0003
(3) 在grade表中查询学习各门课程的人数。
SELECT课程编号,COUNT(*)AS人数 FROMgrade GROUPBY课程编号
(4) 将学生按出生日期由大到小排序。
SELECT学号,姓名,出生日期 FROMstudent_info ORDERBY出生日期ASC
(5) 查询所有姓“张”的学生的学号和姓名。
SELECT 学号,姓名 FROM student_info WHERE 姓名 LIKE '张%'
4. 嵌套查询
(1) 在student_info表中查找与“刘卫平”性别相同的所有学生的姓名、出生日
期。
SELECT 姓名,出生日期
FROM student_info WHERE 性别=
(SELECT 性别
FROM student_info WHERE 姓名='刘卫平')
(2) 使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。
SELECT 学号,姓名,性别 FROM student_info
WHERE student_info.学号 IN
(SELECT 学号 FROM grade
WHERE 课程编号 IN ('0002', '0005'))
(3) 列出学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。
SELECT课程编号,分数FROMgrade
WHERE学号='0001'AND分数>ANY
(SELECT分数FROMgrade
WHERE学号='0002')
(4) 列出学号为0001的学生的分数比0002的学生的最高成绩还要高的课程编号和分数。
SELECT课程编号,分数 FROMgrade
WHERE学号='0001'AND分数>ALL (SELECT分数 FROMgrade
WHERE学号='0002')
5. 多表查询
(1) 查询分数在80~90范围内的学生的学号、姓名、分数。 SELECT student_info.学号,姓名,分数
FROM student_info,grade
WHERE student_info.学号=grade.学号 AND 分数 BETWEEN 80 AND 90
(2) 查询学习“C语言程序设计”课程的学生的学号、姓名、分数。
SELECT student_info.学号,姓名,分数
FROM student_info
INNER JOIN grade ON student_info.学号=grade.学号
INNER JOIN curriculum ON 课程名称='C语言程序设计'
(3) 查询所有男同学的选课情况,要求列出学号、姓名、课程名称、分数。
selectstudent_info.学号,姓名,课程编号,分数 fromstudent_info
leftouterjoingradeonstudent_info.学号=grade.学号 where性别='男'
(4) 查询每个学生的所选课程的最高成绩,要求列出学号、姓名、课程名称、分数。
selectgrade.学号,student_info.姓名,grade.课程编号,grade.分数 fromstudent_infoleftouterjoingradeonstudent_info.学号=grade.学号 wheregrade.分数>=(selectMAX(分数)fromgradeb whereb.学号=grade.学号)
(5) 查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学
生的总成绩为空。
提示:使用左外连接。
selectgrade.学号,姓名,sum(分数)
fromstudent_infoleftouterjoingradeonstudent_info.学号=grade.学号 groupbygrade.学号,姓名
(6) 为grade表添加数据行:学号0004、课程编号为0006、成绩为76。查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。
提示:使用右外连接。
insertgradevalues('0004','0006','76')
selectgrade.课程编号,课程名称,count(*)fromgraderightouterjoincurriculum ongrade.课程编号=curriculum.课程编号 groupbygrade.课程编号,课程名称
6. 使用UNION运算符将student_info表中姓“张”的学生的学号、姓名与curriculum表的课程编号、课程名称返回在一个表中,且列名为u_编号、u_名称,如图1-8所示。
select 学号 u_编号,姓名 u_名称
from student_info where 姓名 like '张%' union select 课程编号,课程名称 from curriculum
图1-8 联合查询结果集
7. 数据更新
(1) 创建totalgrade表,具有数据列:学号、姓名、总成绩。 CREATE TABLE totalgrade
( 学号 char(4) NOT NULL,
姓名 varchar(8) NULL,
总成绩 decimal(5,2) NULL )
(2) 使用INSERT INTO语句通过student_info表更新totalgrade表的学号、姓
名列数据。 INSERT INTO totalgrade
SELECT 学号,姓名,总成绩=0 FROM student_info
(3) 使用UPDATE语句通过grade表更新totalgrade表的中成绩列数据,使
totalgrade表中每个学生的总分成绩为grade表中该学生各成绩之和。 UPDATE totalgrade SET 总成绩=
(SELECT SUM(分数) FROM grade WHERE totalgrade.学号=grade.学号) FROM grade
(4) 删除totalgrade表中没有总成绩的学生记录。 delete from totalgrade where 总成绩 is null
四、 实验思考
1. 查询所有没有选修课程的学生信息,返回结果包括学号、姓名、性别。 2. 在student_info表和grade表之间实现交叉连接。
3. 查询每个学生的所选课程的成绩,并列出学号生成分组汇总(总成绩)和明细行
(各课成绩)。
提示:使用SELECT语句的COMPUTE选项。
正在阅读:
数据库实验四作业及答案06-23
半导体行业的发展趋势 2010 普华永道05-25
单选历届自考毛邓三试题12-03
高等动力学习题答案(1.2.3章)10-05
2018尔雅科学通史章节测验满分答案04-22
网页制作试用期工作总结(精选多篇)09-27
最新财务管理专业毕业论文选题(题目)04-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 作业
- 答案
- 实验
- 数据库
- 泰州万千百货有限公司2012年应急预案汇编
- 2018年山东枣庄中考物理试卷解析版
- 座落于平阴县西南部的东阿镇
- 度米文库精品文档小升初满分作文必备关于端午节的素材
- 体验式德育
- 中国远程教育技术标准国际研讨会
- 中国人民银行外汇
- 大二班第一学期评语
- 2011年水平三体育全套表格式教案
- 百贰分金周天度数坐穴吉凶诀
- 材料成型技术基础 讲稿
- 人教新目标八年级英语下册Unit 4课时训练(含答案)
- 个体工商户登记文书格式规范
- 生活磁字007号 O类员工管理细则
- 财政学习题
- 中国户口本英文翻译模板
- 2103下分层机巷作业规程
- 水疗SPA多功能器项目可行性研究报告(发改立项备案+2013年最新案
- 关于宪法的演讲稿大学生
- 警示教育专题片《岂是妻儿惹祸端》观后感