《数据库原理及应用》实验指导书中北大学电子与计算机科学技术学院《数据库原理及应用》实验类别: 实验室名称: 总学时:课内实验电子与计算机科学技术学院56实验课程名称:实验课程编号:学 分:数据库原理及应用020600073.5适用专业: 计算机科学与技术、网络工程、软件工程先修课程: 离散数学、计算机导论及操作、数据结构实验在教学培养计划中地位、作用:数据库原理及应用是一门理论与实践相结合的课程,上机实验环节是本课程的重要组成部分 实验的目的是为了配合课堂教学,进•步强化对数据库原理的理解实验的任务是要结合数据库原 理和SQI, Server 2000数据库系统,熟练掌握和深入理解课堂教学内容,实现从理论到实践的统一实验一 SQL的数据定义(2学时)1、 实验目的(1) 掌握DBMS的数据定义功能(2) 掌握SQL语言的数据定义语句2、 实验内容(1) 创建、删除表(2) 查看、修改表的定义(3) 理解索引的特点(4) 创建和删除索引3、 实验要求(1) 熟练掌握SQL的数据定义语句CREATE. ALTER> DROP(2) 写出实验报告4、 实验步骤设有一个学生-课程数据库,包括学生关系Student.课程关系Course和选修关系SC: 学生表:Student (Sno, Sname, Ssex, Sage, Sdept)课程表:Course(Cno, Cname, Cpno, Ccredit)学生选课表:SC(Sno, Cno, Grade)(1) 创建、删除表,例如:CREATE TABLE Student(Sno CHAR(5) NOT NULL UNIQUE,Sname CHAR(20) UNIQUE,Ssex CHAR(l),Sage INT,Sdept CHAR(15))CREATE TABLE SC(Sno CHAR(5),Cno CHAR(3),Grade int,Primary key (Sno, Cno));DROP TABLE Student(2) 查看、修改表的定义,例如:ALTER TABLE Student ADD Scome DATETIMEALTER TABLE Student ALTER COLUMN Sage SMALLINT(3) 创建和删除索引CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC, Cno DESC); DROP INDEX Stusno实验二SQL的数据查询(2学时)1、 实验目的(1) 掌握DBMS的数据查询功能(2) 掌握SQL语言的数据查询语句2、 实验内容(1) SELECT语句的基本用法(2) 使用WHERE子句进行有条件的查询(3) 使用IN, NOT IN, BETWEEN等谓词查询(4) 利用LIKE子句实现模糊查询(5) 利用ORDER子句为结果排序(6) 用SQL Server的统计函数进行统计计算(7) 用GROUP BY子句实现分组查询的方法3、 实验要求(1) 熟练掌握SQL的数据查询语句SELECT(2) 掌握多表查询的技术(3) 掌握使用嵌套查询的方法(4) 写出实验报告4、 实验步骤对学生关系Student 课程关系Course和选修关系SC进行查询:(1) SELECT语句的基本用法例如:查询全体学生的详细记录。
SELECT Sno, Sname, Ssex, Sage, SdeptFROM Student;(2) 使用WHERE子句进行有条件的查询例如:查询选修2号课程旦成绩在90分以上的所有学生的学号、姓名SELECT Student.Sno, student.SnameFROM Student, SCWHERE Student.Sno = SC.Sno AND SC.Cno= 2 1 AND SC.Grade > 90; 使用 IN,NOT IN, BETWEEN等谓词查询例如:查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别SELECT Sname, SsexFROM StudentWHERE Sdept TN ( IS , MA , CS)例如:查询年龄在20〜23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄SELECT Sname, Sdept, SageFROM StudentWHERE Sage BETWEEN 20 AND 23(4) 利用LIKE子句实现模糊查询例如:查询所有姓刘学生的姓名、学号和性别SELECT Sname, Sno, SsexFROM StudentWHERE Sname LIKE 刘%(5) 利用ORDER子句为结果排序例如:查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
SELECT Sno, GradeFROM SCWHERE Cno= 3 ORDER BY Grade DESC(6) 用SQL Server的统计函数进行统计计算例如:计算1号课程的学生平均成绩SELECT AVG(Grade)FROM SCWHERE Cno= 1 (7) 用GROUP BY子句实现分组查询的方法例如:查洵选修了 3门以上课程的学生学号SELECT SnoFROM SCGROUP BY SnoHAVING COUNT(*) >3实验三SQL的数据更新(2学时)1、 实验目的(1) 掌握DBMS的数据查询功能(2) 掌握SQL语言的数据更新功能2、 实验内容(1) update语句用于对表进行更新(2) delete语句用于对「表进行删除(3) insert语句用于对表进行插入3、 实验要求(1) 熟练掌握SQL的数据更新语句INSERT、UPDATE、DELETE(2) 写出实验报告4、 实验步骤(1) update语句用于X寸表进行更新例如:将信息系所有学生的年龄增加1岁UPDATE StudentSET Sage= Sage+1WHERE Sdept=IS (2) delete语句用于对表进行删除例如:删除学号为95019的学生记录。
DELETEFROM StudentWHERE Sno=,95019(3) insert语句用于对表进行插入例如:插入一条选课记录(95020, 1 )INSERTINTO SC(Sno, Cno)VALUES ( 95020 , 1 )实验四SQL的数据视图(2学时)1、 实验目的(1) 掌握DBMS的数据查询功能(2) 掌握SQL语言的视图功能2、 实验内容(1) 创建表的视图(2) 利用视图完成表的查询(3) 删除表的视图3、 实验要求(1) 掌握视图的定义(2) 掌握对视图的操作(3) 写出实验报告4、 实验步骤(1)创建表的视图例如:建立信息系学生的视图CREATE VIEW IS StudentASSELECT Sno, Sname, Sage FROM StudentWHERE Sdept= IS(2) 利用视图完成表的查询例如:查询信息系选修了 1号课程的学生SELECT Sno, SnameFROM IS_Student, SCWHERE IS_Studcnt. Sno =SC. Sno ANDSC. Cno= 1(3) 删除表的视图例如:DROP VIEW IS_Student实验五SQL的数据控制(2学时)1、 实验目的(1) 掌握DBMS的数据查询功能(2) 掌握SQL语言的数据控制功能2、 实验内容(1) 使用grant语句进行授权(2) 使用revoke语句收叵I权限3、 实验要求(1) 了解数据控制的方法(2) 掌握命令 GRANT、REVOKE(3) 写出实验报告4、 实验步骤(1) 使用grant语句进行授权例如:把查询Student表权限授给用户U1GRANT SELECTON TABLE StudentTO U1(2) 使用revoke语句收I可权限例如:把用户U4修改学生学号的权限收Pl REVOKE UPDATE(Sno) ON TABLE StudentFROM U4。