《数据库概论》实验指导书
实验类别: 课内实验 实验室名称:软件工程实验室
实验课程名称:数据库概论 实验课程编号:N02140111
总 学 时:56 学 分:3.5 适用专业:软件工程
先修课程:专业导论、离散数学、数据结构与算法
实验一 SQL的数据定义与单表查询(2学时)
1、实验目的
(1) 掌握DBMS的数据定义功能 (2) 掌握SQL语言的数据定义语句 (3) 掌握RDBMS的数据单表查询功能 (4) 掌握SQL语言的数据单表查询语句
2、实验内容
(1) 创建、删除表
(2) 查看、修改表的定义 (3) 理解索引的特点 (4) 创建和删除索引
(5) SELECT语句的基本用法
(6) 使用WHERE子句进行有条件的查询
(7) 使用IN,NOT IN,BETWEEN AND等谓词查询 (8) 利用LIKE子句实现模糊查询 (9) 利用ORDER BY子句为结果排序
(10) 用SQL Server的聚集函数进行统计计算 (11) 用GR0UP BY子句实现分组查询的方法
3、实验要求
(1) 熟练掌握SQL的数据定义语句CREATE、ALTER、DROP (2) 熟练掌握SQL的数据查询语句SELECT (3) 写出实验报告
4、实验步骤
设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC: 学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
(1) 用查询分析器创建、删除表,例如:
Create Database S_T1; CREATE TABLE Student
(Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE,
Ssex CHAR(1) , Sage INT,
Sdept CHAR(15)) create table Course
(Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno) );
CREATE TABLE SC(
Sno CHAR(5), Cno CHAR(3), Grade int,
Primary key (Sno, Cno)); DROP TABLE Student
(2) 查看、修改表的定义,例如:
ALTER TABLE Student ADD Scome DATETIME
ALTER 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 (4) 删除表
DROP TABLE SC;
DROP TABLE STUDENT; DROP TABLE COURSE;
(5) 利用SQL Server集成管理器(简称SSMS)交互式创建数据库S_T2; (6) 将S_T设为当前数据库
例如:use S_T2; (7) 创建3个表
利用SQL语句中的Create Table命令创建表 create table Student
(Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ); go
/*表Student的主码为Sno,属性列Sname取唯一值*/ create table Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno) ); go
/*表Course的主码为Cno,属性列Cpno(先修课)为外码,被参照表为Course,被参照列是Cno*/ create table SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT,
primary key (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) ); go
/*表SC的主码为(Sno, Cno), Sno和Cno均为外码,被参照表分别为Student和Course,被参照列分别为Student.Sno和Course.Cno*/
(8) 在3个表中添加示例数据(任选一种数据添加方法) 表Student 学号 姓名 性别 年龄 所在系 Sno Sname Ssex Sage Sdept 200215121 李勇 男 20 CS 200215122 刘晨 女 19 CS 200215123 王敏 女 18 MA 200215125 张立 男 19 IS 表Course 课程号 课程名 现行课 学分 Cno Cname Cpno Ccredit 1 数据库 5 4 2 数学 2 3 信息系统 5 4 4 操作系统 6 3 5 数据结构 7 4 6 数据处理 2 7 PASCAL语言 6 4
表SC
学号 课程号 成绩 Sno Cno Grade 200215121 1 92 200215121 2 85 200215121 3 88 200215122 200215122 2 3 90 80
①用SQL语句中的更新语句(Insert语句、Update语句和Delete语句)往3个表输入示例数据。
use S_T;/*将S_T设为当前数据库*/
insert into Student values('200215121','李勇','男',20,'CS'); insert into Student values('200215122','刘晨','女',19,'CS'); insert into Student values('200215123','王敏','女',18,'MA'); insert into Student values('200215125','张立','男',19,'IS'); go
/*为表Student添加数据*/
insert into Course values('1', '数据库', NULL,4); insert into Course values('2', '数学', NULL,2); insert into Course values('3', '信息系统', NULL,4); insert into Course values('4', '操作系统', NULL,3); insert into Course values('5', '数据结构', NULL,4); insert into Course values('6', '数据处理', NULL, 2); insert into Course values('7', 'java', NULL,4); go
update Course set Cpno = '5' where Cno = '1'; update Course set Cpno = '1' where Cno = '3'; update Course set Cpno = '6' where Cno = '4'; update Course set Cpno = '7' where Cno = '5'; update Course set Cpno = '6' where Cno = '7'; /*为表Course添加数据*/ go
insert into SC values('200215121', '1',92); insert into SC values('200215121', '2',85); insert into SC values('200215121', '3',88); insert into SC values('200215122', '2',90); insert into SC values('200215122', '3',80); /*为表SC添加数据*/ go
②利用SQL Server集成管理器(简称SSMS)交互式输入数据。
(9) 对学生关系Student、课程关系Course和选修关系SC进行查询。
基本练习
1、SELECT语句的基本用法
例如:查询全体学生的详细记录。 SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student
2、使用WHERE子句进行有条件的查询
例如:查询选修2号课程且成绩在90分以上的所有学生的学号、姓名 SELECT Student.Sno, Student.Sname FROM Student, SC
WHERE Student.Sno = SC.Sno AND SC.Cno= ' 2 ' AND SC.Grade > 90 3、 使用IN,NOT IN,BETWEEN等谓词查询
例如:查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和
性别。
SELECT Sname,Ssex FROM Student
WHERE Sdept IN ( 'IS','MA','CS' )
例如:查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和
年龄。
SELECT Sname,Sdept,Sage FROM Student
WHERE Sage BETWEEN 20 AND 23 4、利用LIKE子句实现模糊查询
例如:查询所有姓刘学生的姓名、学号和性别。 SELECT Sname,Sno,Ssex FROM Student
WHERE Sname LIKE '刘%' 5、利用ORDER子句为结果排序 例如:查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。 SELECT Sno,Grade FROM SC
WHERE Cno= '3' ORDER BY Grade DESC
6、用SQL Server的统计函数进行统计计算 例如:计算1号课程的学生平均成绩。 SELECT AVG(Grade) FROM SC
WHERE Cno= '1'
7、用GR0UP BY子句实现分组查询的方法
例如:查询选修了3门以上课程的学生学号。 SELECT Sno FROM SC GROUP BY Sno
HAVING COUNT(*) >3
扩展练习(要求写出并执行SQL语句来完成以下各种操作,记录查询结果)
(1)查询全体学生的学号、姓名和年龄; (2)查询所有计算机系学生的详细记录; (3)找出考试成绩为优秀(90分及以上)或不及格的学生的学号、课程号及成绩; (4)查询年龄不在19~20岁之间的学生姓名、性别和年龄; (5)查询数学系(MA)、信息系(IS)的学生的姓名和所在系;
(6)查询名称中包含“数据”的所有课程的课程号、课程名及其学分; (7) 找出所有没有选修课成绩的学生学号和课程号;
(思考:如何查询所有没有选修课成绩的计算机系的学生学号和课程号?) (8)查询学生200215121选修课的最高分、最低分以及平均成绩;
(9)查询选修了2号课程的学生的学号及其成绩,查询结果按成绩升序排列; (10)查询每个系名及其学生的平均年龄。
(思考:如何查询学生平均年龄在19岁以下(含19岁)的系别及其学生的平均年
龄?)
实验二 SQL的多表数据查询(2学时)
1、实验目的
(1) 掌握RDBMS的数据多表查询功能 (2) 掌握SQL语言的数据多表查询语句
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据库概论实验指导书在线全文阅读。
相关推荐: