数据库设计与SQL查询实践

5星 · 超过95%的资源 需积分: 10 51 下载量 165 浏览量 更新于2024-09-29 1 收藏 72KB DOC 举报
"数据库笔试题相关的数据库设计及SQL查询示例" 在数据库笔试题中,通常会涉及到数据库设计、关系模型以及SQL查询等核心概念。这里给出的是一个学生-课程数据库的例子,包括三个表:学生表(Student)、课程表(Course)和学生选修表(SC)。下面将详细解释这些表的结构以及提供的SQL语句。 首先,我们来看学生表(Student),它包含了学生的学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)和所在系(Sdept)。其中,Sno是主键,确保了每个学生都有唯一的标识。接着是课程表(Course),包含课程号(Cno)、课程名(Cname)、先行课程号(Cpno,表示课程的先决条件)和学分(Credeit)。Cno是这个表的主键。学生选修表(SC)记录了学生选修的课程及其成绩,由Sno和Cno共同作为主键,表明特定的学生选修了特定的课程,并且获得了相应的Grade。 接下来是创建这三个表的SQL语句。首先,创建数据库stu_course: 1. `createdatabase stu_course` 然后,使用这个数据库: 2. `use stu_course` 接着,创建学生表: 3. `createtable student( sno varchar(32), sname varchar(32), ssex varchar(32), sage int, sdept varchar(32) )` 再创建课程表: 4. `createtable Course( Cno varchar(32), Cname varchar(32), Cpno varchar(32), credit int )` 最后,创建学生选修表: 5. `createtable SC( Sno varchar(32), Cno varchar(32), Grade int )` 这部分内容展示了如何用SQL来定义数据库表的结构。 在查询部分,给出了几个基本的SQL查询示例: 1. 查询全体学生的学号与姓名:`select sno, sname from student` 2. 查询全体学生的姓名、学号、所在系:`select sno, sname, sdept from student` 3. 查询全体学生的详细记录:这通常意味着获取所有列的信息,可以使用`select * from student` 这些查询涵盖了基本的SELECT语句,用于从数据库中检索信息。通过这些题目,可以评估应试者对数据库操作的理解和SQL语言的掌握程度。 此外,这个数据库模型可以支持更复杂的查询,例如: - 查询某门课程的所有选修学生:`select * from SC where Cno = '课程号'` - 查询某个学生的所有课程及成绩:`select * from SC where Sno = '学号'` - 查询选修特定课程的学生平均成绩:`select avg(Grade) from SC where Cno = '课程号'` - 查询年龄大于等于19岁的女生:`select * from student where ssex = '女' and sage >= 19` 这些例子进一步扩展了数据库查询的深度和广度,涵盖了条件过滤、聚合函数和多表关联等进阶概念。在实际的数据库笔试中,可能还会涉及更多的复杂查询和优化问题,比如联接操作、子查询、索引使用以及性能分析等。