计算机科学专业数据库实验的代码

preview
需积分: 0 1 下载量 31 浏览量 更新于2011-06-16 收藏 55KB DOC 举报
【数据库实验】是计算机科学与技术学院数据库课程的重要实践环节,旨在帮助学生深入理解数据库管理系统(DBMS)的工作原理和SQL语言的使用。通过实验,学生可以掌握如何创建数据库、定义数据表,以及进行单表和多表的查询操作。 在实验一中,主要涉及数据库的创建和表的定义。例如,创建名为`StudentCouresYYXXXX`的数据库,以及`StudentsYYXXXX`和`CoursesYYXXXX`两张表。`StudentsYYXXXX`表用于存储学生信息,包含学号(Sno)、姓名(Sname)、性别(Ssex)、出生日期(Sbirthday)和所在系(Sdept)等字段,其中学号为主键。`CoursesYYXXXX`表则记录课程信息,包括课程编号(Cno)、课程名称(Cname)、前置课程编号(PreCno)和学分(Credit)。另外还有一张关联表`SCYYXXXX`,用来存储学生选课信息,即学生学号(Sno)和课程编号(Cno),同时定义了外键约束,关联到`StudentsYYXXXX`和`CoursesYYXXXX`表。 实验二主要讲解了SQL查询语言的使用,分为单表查询和多表查询两部分: (1)单表查询: - 查询计算机系所有学生信息,使用`SELECT * FROM StudentsYYXXXX WHERE Sdept='计算机'`。 - 查找姓“李”的学生学号和姓名,利用`LIKE`操作符,如`SELECT Sno, Sname FROM StudentsYYXXXX WHERE sname LIKE '李%'`。 - 显示课程表中无前置课程的课程名,通过`IS NULL`判断,如`SELECT cname FROM CoursesYYXXXX WHERE PreCno IS NULL`。 - 获取不及格学生的学号,使用条件`Grade<60`,如`SELECT sno FROM SCYYXXXX WHERE Grade<60`。 - 查询选修特定课程的学生学号及成绩,用`OR`操作符,如`SELECT sno, grade FROM SCYYXXXX WHERE Cno='c1' OR Cno='c2'`。 - 计算计算机系学生的姓名及年龄,如`SELECT Sname, Sbirthday FROM StudentsYYXXXX WHERE Sdept='计算机'`。 - 找出1986-1987年间出生的计算机系学生,结合`BETWEEN`关键字,如`SELECT sname FROM StudentsYYXXXX WHERE Sdept='计算机' AND year(Sbirthday) BETWEEN 1986 AND 1987`。 - 查询姓“李”的前两个学生学号和姓名,用`TOP`限制返回行数,如`SELECT TOP 2 Sno, Sname FROM StudentsYYXXXX WHERE sname LIKE '李%'`。 - 计算选修两门以上课程的学生学号和课程数,运用`GROUP BY`和`HAVING`,如`SELECT Sno, COUNT(*) 课程数 FROM SCYYXXXX GROUP BY Sno HAVING COUNT(Cno)>=2`。 (2)多表查询: - 查询选修了“数据库原理”的计算机系学生学号和姓名,通过`JOIN`操作连接`StudentsYYXXXX`、`SCYYXXXX`和`CoursesYYXXXX`表,如`SELECT s.Sno, Sname FROM StudentsYYXXXX s JOIN SCYYXXXX sc ON s.Sno=sc.Sno JOIN CoursesYYXXXX c ON sc.cno=c.cno WHERE Sdept='计算机' AND Cname='数据库原理'`。 - 获取每门课的间接前置课,用`LEFT JOIN`查找,如`SELECT c1.Cname, c2.PreCno FROM CoursesYYXXXX c1 LEFT JOIN CoursesYYXXXX c2 ON c1.PreCno=c2.Cno`。 - 输出学生学号、姓名、所选课程名称和成绩,这同样涉及多表连接,如`SELECT s.Sno, s.Sname, c.Cname, sc.Grade FROM StudentsYYXXXX s JOIN SCYYXXXX sc ON s.Sno=sc.Sno JOIN CoursesYYXXXX c ON sc.cno=c.cno`。 这些实验涵盖了基本的数据库操作,包括数据的增、删、改、查,以及更复杂的联接查询、聚合函数、分组和过滤等,有助于提升学生对数据库系统的实际操作能力和SQL语言的应用水平。