数据库原理实验三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三、数据库的简单查询和连接查询实验
班级:学号:姓名:日期:12月18日1. 实验目的
了解SQL Server 查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。掌握表的数据简单查询、数据排序和数据联结查询的SQL 表达和查询分析操作方法。
2. 实验内容
1)简单查询实验
用SQL表达简单查询操作,包括投影、选择条件表达、数据排序和使用临时表等,通过SQL Server查询分析器输入,并显示正确结果。
2)连接查询实验
用SQL表达连接查询操作,包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等,通过SQL Server查询分析器输入,并显示正确结果。
3. 实验要求
1)简单查询实验
在学生选课库中,用Transact-SQL语句表示下列操作,并通过查询分析器实现其数据查询操作:
1、求数学系学生的学号和姓名。
2、求选修了课程的学生学号。
3、求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。
4、求选修课程C1且成绩在80~90之间的学生学号和成绩,将成绩乘以系数0.8输出。
5、求数学系或计算机系姓张的学生的信息。
6、求缺少了成绩的学生的学号和课程号。
2)连接查询实验
在学生选课库中,用Transact-SQL语句表示下列数据连接查询操作,并在查询分析器中实验。
1、查询每个学生的情况以及他(她)所选修的课程。
2、求学生的学号、姓名、选修的课程名及成绩。
3、求选修C1课程且成绩为90分以上的学生学号、姓名及成绩。
4、查询每一门课的间接先行课(即先行课的先行课)。
4. 实验步骤及结果:
(1)简单查询实验
1)求数学系学生的学号和姓名。
T-SQL语句:SELECT 学号,姓名 FROM 学生
WHERE 所在系='数学'
查询结果:
图1 运行界面图(1)
2)求选修了课程的学生学号。
T-SQL语句:SELECT DISTINCT 学号 FROM 选课查询结果:
图2 运行界面图(2)
3)求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。
T-SQL语句:SELECT 学号,成绩 FROM 选课
WHERE 课程号='C1'
ORDER BY 成绩 DESC,学号 ASC
查询结果:
图3 运行界面图(3)
4)求选修课程C1且成绩在80~90之间的学生学号和成绩,将成绩乘以系数0.8输出。
T-SQL语句:SELECT 学号,成绩*0.8 FROM 选课
WHERE 课程号 = 'C1' AND 成绩 BETWEEN 80 AND 90 查询结果:
图4 运行界面图(4)
5)求数学系或计算机系姓张的学生的信息。
T-SQL语句:SELECT * FROM 学生
WHERE 所在系 IN('数学','计算机')AND 姓名 LIKE '张%'
查询结果:
图5 运行界面图(5)
(2)连接查询实验
1)查询每个学生的情况以及他所选修的课程。
Transact-SQL语句:SELECT 学生.*,选课.* FROM 学生,选课
WHERE 学生.学号=选课.学号
查询结果:
图6 运行界面图(6)
2)求学生的学号、姓名、选修的课程名及成绩。
T-SQL语句:SELECT 学生.学号,姓名,课程名,成绩
FROM 学生,课程,选课
WHERE 学生.学号=选课.学号 AND 课程.课程号=选课.课程号查询结果:
图7 运行界面图(7)
3)求选修C1课程且成绩为90分以上的学生学号、姓名及成绩。
T-SQL语句:SELECT 学生.学号,姓名,成绩 FROM 学生,选课WHERE 学生.学号=选课.学号 AND 课程号= 'C1' AND 成绩>90 查询结果:
图8 运行界面图(8)
4)查询每一门课的间接先行课(即先行课的先行课)。
Transact-SQL语句:SELECT A.课程号,A.课程名,B.先行课
FROM 课程 A,课程 B
WHERE A.先行课=B.课程号
查询结果:
图9 运行界面图(9)
5. 实验总结
在本次实验中我学会了很多查询问题,了解了SQL Server 查询分析器的使用方法,加深了对SQL和Transact-SQL语言的查询语句的理解。掌握表的数据简单查询、数据排序和数据联结查询的SQL表达和查询分析操作方法。