数据库实验:SQL查询操作与数据处理
需积分: 31 81 浏览量
更新于2024-09-11
收藏 1.07MB DOC 举报
"数据库上机实验题一"
本实验主要关注于数据库的查询操作,包括在已有数据库上执行建立查询、修改等任务。实验目的是让学生掌握SQL语言中的各种查询技术,例如单表查询、多表连接查询、嵌套查询,以及如何进行数据查询中的分组、统计、计算和组合操作。实验内容基于一个教学数据库,包含学生表(Student)、课程表(Course)和学生选课表(SC)三个表。
1. 查询SC表中所有选修了课程的学生学号,去除重复行:
使用`DISTINCT`关键字来消除重复的Sno,确保返回每个学生唯一一次。
SQL语句:
```sql
SELECT DISTINCT Sno
FROM SC;
```
2. 查询非信息系、数学系和计算机科学系的学生姓名和性别:
`NOT IN`操作符用于排除指定的值。在这个例子中,它用来筛选出不属于'CS'、'MA'或'IS'这三个系的学生。
SQL语句:
```sql
SELECT Sname, Ssex
FROM Student
WHERE Sdept NOT IN ('CS', 'MA', 'IS');
```
3. 按照系号升序、年龄降序查询所有学生信息:
`ORDER BY`语句用于排序结果。首先按照系号(Sdept)升序排列,然后在同一系内按照年龄(Sage)降序排列。
SQL语句:
```sql
SELECT *
FROM Student
ORDER BY Sdept ASC, Sage DESC;
```
4. 查询选修了3号课程的学生学号及其成绩,结果按分数降序排列:
在这个查询中,`WHERE`子句用于筛选Cno为'3'的记录,`ORDER BY`语句则按Grade降序排序。
SQL语句:
```sql
SELECT Sno, Grade
FROM SC
WHERE Cno = '3'
ORDER BY Grade DESC;
```
5. 检索至少选修了课程号为C2和C4的学生学号:
使用嵌套的`IN`查询,找出同时选修C2和C4课程的学生。
SQL语句:
```sql
SELECT Sno
FROM Student
WHERE Sno IN (
SELECT Sno
FROM SC
WHERE Cno = '2'
) AND Sno IN (
SELECT Sno
FROM SC
WHERE Cno = '4'
);
```
6. 查询每个学生的学号、姓名、选修的课程名及成绩:
这个查询通过`JOIN`操作将Student、SC和Course三张表关联起来,获取所需信息。
SQL语句:
```sql
SELECT Student.Sno, Sname, Cname, Grade
FROM Student
JOIN SC ON Student.Sno = SC.Sno
JOIN Course ON SC.Cno = Course.Cno;
```
7. 查询总学分超过6分的同学:
未提供具体的SQL语句,但可以通过聚合函数`SUM`和`GROUP BY`来实现。首先需要计算每个学生的所有课程的学分总和,然后筛选出总学分大于6的学生。
SQL语句示例:
```sql
SELECT Student.Sno, Sname, SUM(SC.Ccredit) AS TotalCredits
FROM Student
JOIN SC ON Student.Sno = SC.Sno
GROUP BY Student.Sno, Sname
HAVING TotalCredits > 6;
```
这些实验题涵盖了数据库查询的基础和进阶技巧,对于理解和掌握SQL语言非常有帮助。通过这些练习,学生可以提高在实际场景中运用SQL解决数据处理问题的能力。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2015-12-14 上传
2013-11-09 上传
2010-03-05 上传
2021-10-11 上传
2022-06-27 上传
2021-10-08 上传
一个帅小伙子
- 粉丝: 0
- 资源: 1
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析