数据库系统概论实验指导书

更新时间:2023-09-17 07:21:01 阅读量: 幼儿教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 MSSQL SERVER 2000 环境及主要工具

一、实验目的:

1. 了解MSSQL SERVER 2000 提供的各种工具及其功能。

2. 掌握企业管理器(Enterprise Manager)、服务管理器(Service Manager)、查询分析

器(Query Analyzer)及联机文档(Books Online)的基本操作。 3. 掌握通过企业管理器启动、关闭、注册和配置服务管理。

二、实验内容及步骤:

1. 从开始菜单打开MSSQL SERVER 2000的服务管理器,设置其服务器为本机服务器,

服务为SQL Server,并启动该服务器。练习SQL Server 2000服务的开始、暂停、继续、停止等操作。

2. 从开始菜单打开MSSQL SERVER 2000企业管理器,并将企业管理器与上述启动的服

务器连接。

3. 对企业服务器进行配置,将其在操作系统启动时 自动启动SQL Server 的功能去掉;

先将其身份验证修改为Windows和SQL Server 共同验证,再修改为Windows验证。 4. 观察企业管理器的各个组成部分,练习有关的操作。

5. 打开查询分析器,观察查询分析器的组成部分,练习有关的操作。

6. 练习SQL Server 2000的联机丛书的使用,并使用联机丛书学习自己感兴趣的知识。

实验二 数据定义

一、实验目的:

1. 掌握使用SQL SERVER企业管理器及SQL语言创建数据库与表。 2. 掌握使用SQL SERVER企业管理器及SQL语言修改数据库与表。 3. 掌握使用SQL SERVER企业管理器及SQL语言删除数据库与表。

二、实验内容及步骤:

1. 通过用企业管理器创建一个指定多个数据文件和日志文件的数据库,该数据库名称

为jxsk,要求:

有1个10MB和1个20MB的数据文件和2个10MB的事务日志文件。数据文件逻辑名称为jxsk1和jxsk2,物理文件名为jxsk1.mdf和jxsk2.mdf。主文件是jxsk1,由primary指定,两个数据文件的最大尺寸分别为无限大和100MB,增长速度分别为10%和1MB。事务日志文件的逻辑名为jxsklog1和jxsklog2,物理文件名为jxsklog1.ldf和jxsklog2.ldf,最大尺寸均为50MB,文件增长速度为1MB。 2. 用企业管理器修改数据库

要求:添加一个包含两个数据文件的文件组和一个事务日志文件到jxsk数据库中。

3. 用企业管理器在jxsk数据库中建立如下表: 学生表: Student

名称 学号 姓名 性别 年龄 所在系 列名 Sno Sname Ssex Sage Sdept 数据类型 Char (5) Varchar (20) Char (2) Int Varchar (50) 说明 NOT NULL 主键 NOT NULL 课程表: Course

名称 课程号 课程名 先行课 学分 列名 Cno Cname Cpon Ccredit 数据类型 Varchar (3) Char (10) Varchar (3) Smallint 说明 NOT NULL 主键 NOT NULL 选课表: SC

名称 学号 课程名 成绩 列名 Sno Cname Grade 数据类型 Char (5) Char (10) Int 说明 NOT NULL 主键 NOT NULL 主键 默认值为0 4. 查看表格:显示当前数据库中所有对象的信息。 5. 利用企业管理器删除表:

在企业管理器中,展开指定的数据库和表格项,用右键单击要删除的表,从快捷菜单中选择“除去表”选项,则会出现除去对象对话框。单击“全部删除”按钮,即可删除表。

6. 利用企业管理器删除数据库jxsk。 7. 用SQL语言创建数据库jiaoxuedb:

CREATE DATABASE jiaoxuedb ON (NAME=jiaoxuedb_dat,FILENAME='d:\\jiaoxuedb_dat.mdf') LOG ON (NAME=jiaoxuedb_log,FILENAME='d:\\jiaoxuedb_log.ldf') GO 8. 用SQL语言创建jiaoxuedb中的表:

USE jiaoxuedb

CREATE TABLE Student(

Sno CHAR(10) NOT NULL, Sname CHAR(10) NOT NULL, Sex CHAR(2) NULL, Age TINYINT NULL, Dept CHAR(10) NULL) Tno CHAR(10) NOT NULL, Tname CHAR(10) NOT NULL, Sex CHAR(2) NULL, Age TINYINT NULL, Prof CHAR(10) NULL, Sal SMALLINT NULL, Comm SMALLINT NULL, Dept CHAR(10) NULL) Cno CHAR(10) NOT NULL, Cname CHAR(10) NOT NULL, Chour TINYINT NULL, Ccredit TINYINT NULL) Sno CHAR(10) NOT NULL,

CREATE TABLE Teacher(

CREATE TABLE Course(

CREATE TABLE SC(

Cno CHAR(10) NOT NULL, SCORE TINYINT NULL) Tno CHAR(10) NOT NULL, Cno CHAR(10) NOT NULL) CREATE TABLE TC( 9. 用ALTER TABLE语句向学生表增加“入学时间”列,其数据类型为日期型,然后再

间接删除该列。

10. 用ALTER TABLE语句将学生的年龄的数据类型改为半字长(Smallint),查看修改属性

后再改回原数据类型。

11. 用DROP TABLE语句删除已有的表。

12. 用DROP DATABASE语句删除数据库jiaoxuedb。

13. 学习SQL SERVER在线文档中关于建立表、删除表,修改表的详细用法。

实验三 数据更新

一、 实验目的:

掌握用SQL语句实现数据的插入、修改和删除。

二、实验内容及步骤:

1. 重建实验二中的数据库jiaoxuedb和其中的表,并插入相应数据值。

插入jiaoxuedb库中各表值: USE jiaoxuedb

/*Insert values to Student Table*/

INSERT INTO Student VALUES('001101','宋大方','男',19,'计算机') INSERT INTO Student VALUES('002102','李王','男',20,'信息') INSERT INTO Student VALUES('991101','张彬','男',18,'计算机') INSERT INTO Student VALUES('991102','王蕾','女',19,'计算机') INSERT INTO Student VALUES('991103','张建国','男',18,'电子商务') INSERT INTO Student VALUES('991104','李平方','男',18,'计算机') INSERT INTO Student VALUES('991201','陈东辉','男',19,'计算机') INSERT INTO Student VALUES('991202','葛鹏','男',21,'电子商务') INSERT INTO Student VALUES('991203','潘桃芝','女',19,'电子商务') INSERT INTO Student VALUES('991204','姚一峰','男',18,'计算机') INSERT INTO Student VALUES('001102','许辉','女',22,'电子商务') INSERT INTO Student VALUES('001201','王一山','男',20,'计算机') INSERT INTO Student VALUES('001202','牛莉','女',19,'计算机') INSERT INTO Student VALUES('002101','李丽丽','女',19,'信息')

/*Insert values to Teacher Table*/

INSERT INTO Teacher VALUES('000006','许红霞','女',39,'讲师',1100,1200,'计算机') INSERT INTO Teacher VALUES('000007','许永军','男',57,'教授',2000,3000,'电子商务') INSERT INTO Teacher VALUES('000008','李贵青','女',65,'教授',2000,3000,'计算机') INSERT INTO Teacher VALUES('000009','王一凡','女',43,'讲师',1200,1200,'计算机') INSERT INTO Teacher VALUES('000010','田峰','男',33,'助教',500,800,'信息') INSERT INTO Teacher VALUES('000001','李英','女',39,'副教授',1500,2000,'电子商务') INSERT INTO Teacher VALUES('000002','张雪','女',51,'教授',1900,3000,'信息') INSERT INTO Teacher VALUES('000003','张朋','男',30,'讲师',1000,1200,'计算机') INSERT INTO Teacher VALUES('000004','王平','女',28,'讲师',850,1200,'信息') INSERT INTO Teacher VALUES('000005','李力','男',47,'教授',1800,3000,'计算机')

/*Insert values to Course Table*/

INSERT INTO Course VALUEs('01001','计算机基础',60,3) INSERT INTO Course VALUEs('01002','程序设计',80,5)

GO 4. 查询与学生张建国同岁的所有学生的学号、姓名和系别。

/*方法一*/ USE jiaoxuedb SELECT Sno AS 学号,Sname AS 姓名,Age AS 年龄,Dept AS 专业 FROM Student WHERE Age=ANY GO /*方法二*/ USE jiaoxuedb SELECT s2.Sno,s2.Sname,s2.Dept FROM Student s1, Student s2 WHERE s1.age=s2.age AND s1.Sname='张建国' AND s2.Sname <> '张建国'

(SELECT Age FROM Student WHERE Sname='张建国') AND Sname <> '张建国' ORDER BY Age DESC 5. 查询选修了2门以上课程的学生名单。

USE jiaoxuedb SELECT Sno AS 学号,Sname AS 姓名,Age AS 年龄,Dept AS 专业 FROM Student WHERE Sno=ANY GO (SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) >=2) 6. 查询至少有一门与“张建国”选课相同的学生的姓名、课程名和系别。

USE jiaoxuedb SELECT Sno AS 学号,Sname AS 姓名,Age AS 年龄,Dept AS 专业 FROM Student WHERE Sno=ANY (SELECT Sno FROM SC WHERE Cno=ANY (SELECT Cno FROM SC WHERE Sno=’991103’)) AND Sname <> '张建国' GO 7. 查询成绩比该课程平均成绩高的学生的成绩表。

/*方法一*/ USE jiaoxuedb SELECT Sno AS 学号,Sname AS 姓名,Age AS 年龄,Dept AS 专业 FROM Student WHERE Sno=ANY GO /*方法二*/ SELECT * FROM SC sc1 WHERE Score > GO (SELECT AVG(Score) FROM SC sc2) AND sc1.Cno=sc2.Cno; (SELECT Sno FROM SC x WHERE Score >= (SELECT AVG(Score) FROM SC y WHERE y.Sno=x.Sno)); 8. 查询选修课号为01001课程且成绩高于课程01002学生的姓名、此两门课程的k

而成名和成绩。

/*方法一*/ USE jiaoxuedb SELECT Sname,Cname,Score FROM Student ,SC,Course WHERE Student.Sno= GO /*方法二*/ USE jiaoxuedb SELECT Sname,Cname,Score FROM Student ,SC,Course WHERE Student.Sno= (SELECT s1.Sno FROM SC s1,SC s2 WHERE s1.Cno='01001' AND s2.Cno='01002' AND s1.Score>s2.Score AND AND SC.Sno=Student.Sno AND Course.Cno=SC.Cno s1.Sno=s2.Sno) GO (SELECT Sno FROM SC x WHERE Score >= (SELECT AVG(Score) FROM SC y WHERE y.Sno=x.Sno AND x.Cno='01001' AND y.Cno='01002') AND SC.Sno=Student.Sno AND Course.Cno=SC.Cno) 9. 查询所有未修01001号课程的学生名单。

USE jiaoxuedb SELECT Student.Sno,Sname FROM Student WHERE Student.Sno IN GO

(SELECT s1.Sno FROM SC s1 WHERE Sno NOT IN (SELECT s2.Sno FROM SC s2 WHERE Cno='01001')) 10. 查询每个同学各门课程的平均成绩和最高成绩,按降序排列输出姓名、平均成绩、

最高成绩。

USE jiaoxuedb SELECT Sname AS 姓名,AVG(Score) AS 平均,MAX(Score) AS 最高 FROM Student,SC WHERE Student.Sno=SC.Sno GROUP BY Sname ORDER BY Sname DESC GO

11. 查询所有学生都选修了的课程号和课程名。 USE jiaoxuedb SELECT Cname AS 课程号,Cno AS 课程名 FROM Course WHERE NOT EXISTS (SELECT * FROM Student WHERE NOT EXISTS GO

(SELECT * FROM SC WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno)); 12. 查询选修了991102号学生选修了的课程的学生学号和姓名。

use jiaoxuedb SELECT DISTINCT Sno,Sname FROM SC s1 WHERE NOT EXISTS (SELECT Cno FROM SC s2 WHERE Sno='991102' AND NOT EXISTS (SELECT Cno FROM SC s3 WHERE s1.Sno=s3.Sno AND s2.Cno=s3.Cno)) AND s1.Sno!= '991102' GO 13. 建立教材中第2章事例数据库中的3个表,并装入相应数据,执行第3章中的SQL

语句示例,并查看执行结果。

14. 建立教材中第2章习题7中的4个表,并装入相应数据,完成第3章习题4、5、

11,并查看执行结果。

15. 向SC中增加几个选修了英语课但无成绩(grade值为空值)的学生,用SQL语句

实现找出这些无成绩学生,并查看执行结果。

本文来源:https://www.bwwdw.com/article/8poh.html

Top