数据库实验四作业及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验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*FROM student_info
(2)查询学号为0002的学生的姓名和家庭住址。
SELECT姓名,家庭住址FROM student_info
WHERE学号=0002
(3)找出所有男同学的学号和姓名。
SELECT学号,姓名FROM student_info
WHERE性别='男'
3.使用SELECT语句进行条件查询
(1)在grade表中查找分数在80~90分为内的学生的学号和分数。
SELECT学号,分数FROM grade
WHERE分数BETWEEN 80 AND 90
(2)在grade表中查询课程编号为0003的学生的平均分。
SELECT AVG(分数)AS平均分FROM grade
WHERE课程编号=0003
(3)在grade表中查询学习各门课程的人数。
SELECT课程编号,COUNT(*)AS人数
FROM grade
GROUP BY课程编号
(4)将学生按出生日期由大到小排序。
SELECT学号,姓名,出生日期
FROM student_info
ORDER BY出生日期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课程编号,分数FROM grade
WHERE学号='0001'AND分数>ANY
(SELECT分数FROM grade
WHERE学号='0002')
(4)列出学号为0001的学生的分数比0002的学生的最高成绩还要高的课程编号和分数。
SELECT课程编号,分数
FROM grade
WHERE学号='0001'AND分数>ALL
(SELECT分数
FROM grade
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语言程序设计'