9299.net
大学生考试网 让学习变简单
当前位置:首页 >> 工学 >>

数据库系统原理与应用课程实验指导书

数据库系统原理与应用课程实验指导书

数 据 库 实 验 报 告

计算机科学学院 11 级网络工程一班 郭广慧 41109040105

数据库系统原理与应用课程实验指导书
一、实验基本要求: (1) 学习相关知识(参见教材相关内容) (2) 准备程序,上机调试、运行 (3) 写出实验报告 二、实验报告内容: (1) 实验题目 (2) 实验目的 (3) 实验内容及原理 (4) 实验过程 (5) 总结 三、实验中使用的关系表 关系表 S、C、SC: S(SNO,SNAME,SEX,AGE,DEPT) C(CNO,CNAME,CCREDIT,CT) SC(SNO,CNO,GRADE) 学生表 S 由学号 SNO,姓名 SNAME,性别 SEX,年龄 AGE,所在系 DEPT 组成。 课程表 C 由课程号 CNO,课程名 CNAME,学分 CCREDIT,授课教师 CT 组成。 选课表 SC 由学号 SNO,课程号 CNO,成绩 GRADE 组成。 实验一 实验题目:数据库管理系统的使用 实验目的:掌握 SQL SERVER2005 的使用和数据库设计的一般方法。 实验内容: (1) SQL SERVER2005 的使用 (2) 数据库的设计过程并利用 SQL SERVER2005 建立数据库。

实验二 实验题目:数据库的设计 实验目的:掌握数据表建立、修改、删除、索引的 SQL 语句。 实验内容: (1) 数据表的建立 CREATE TABLE S (SNO CHAR(9) PRIMARY KEY, SNAME CHAR(20) UNIQUE, SSEX CHAR(2), SAGE SMALLINT,SDEPT CHAR(20) );

CREATE TABLE C (CNO CHAR(4) PRIMARY KEY, CNAAME CHAR(40), CCREDIT SMALLINT CT CHAR(40) );

CREATE TABLE SC (SNO CHAR(9) PRIMARY KEY, CNO CHAR(4), GRADE SMALLINT );

(2) 数据表的修改 (3) 数据表的删除 (4) 数据表的索引建立 (5) 视图的建立与删除 ? 建立一个计算机系学生基本信息视图 CSV(SNO,SNAME,SEX,AGE) CREATE VIEW CSV_S

AS SELECT SNO, SNAME,SSEX,SAGE FROM S WHERE SDEPT=’计算机’

? 查询 1983 年以后出生的计算机系学生基本信息。 SELECT * FROM S WHERE SDEPT=’CS’ AND 2013-SAGE<1983;

? 建立一个计算机系学生成绩视图 JSGV(SNO,CNO,GRADE) 。 CREATE VIEW JSGV_SC(SNO,CNO,GRADE) AS SELECT S.SNO,CNO,GRADE FROM S,SC WHERE SDEPT=’CS’ AND S,SNO=SC.SNO

?

查询计算机系学生选课多于 3 门的学生学号。 SELECT SNO FROM JSGV_SC GROUP BY SNO HAVING COUNT(*)>=3

?

查询计算机系学生 2 号课不及格的学生学号和成绩。 SELECT SNO,GRADE FROM JSGV_SC WHEERE CNO=’2’ AND GRADE<60

实验三 实验题目:数据表的数据操作 实验目的:掌握数据表数据操作的 SQL 语句。 实验内容: SQL 语句插入数据操作 SQL 语句修改数据操作 SQL 语句删除数据操作 SQL 语句查询数据操作 维护数据 SQL 语句: (1) 在学生表中插入一新生信息(‘200213808’,’HUJING’,’女’,22,’计算机’) INSERT INTO S(SNO,SNAME,SSEX,SAGE,SDEPT) VALUES(‘200213808’,’HUJING’,’女’,’22’,’计算机’);

(2) 删除数据库中学号为’004’的退学学生有关信息。 DELETE FROM S WHERE SNO=’004’;

(3) 学生 2 号课成绩全部提高 5%。 UPDAT JSGV_SC SET GRADE=1.05*GRADE WHERE CNO=’2’

(4) 统计有学生选修的课程门数。 SELECT SNO,COUNT(CNO) FROM SC GROUP BY SNO

(5) 统计 HU 老师所授每门课程的学生平均成绩。 SELECT AVG(GRADE) FROM SC

GROUP BY CNO

(6) 统计所有选修人数多于 20 的课程号和选课人数,并按人数降序排列,若人数相等, 则按课程号升序排列。 SELECT CNO,COUNT(SNO) FROM SC GROUP BY CNO HAVING COUNT(*)>20 ORDER BY COUNT(*) DESC,CNO

(7) 检索所有缓考即成绩为 NULL 的同学学号、姓名和缓考课程号。 SELECT SC.SNO,SNAME,CNO FROM S,SC WHERE S.SNO=SC.SNO AND GRADE=NULL

(8) 检索‘shuxue’课成绩高于该课平均成绩的同学学号。 SELECT SNO FROM SC WHERE GRADE>=(SELECT AVG(GRADE) FROM SC WHERE CNO IN (SELECT CNO FROM C WHERE CNAME=’SHUJUKU’));

查询数据 SQL 语句: (1) 检索计算机系女生的学号和姓名。 SELECT SNO,SNAME FROM CSV_S WHERE SSEX=’女’;

(2) 检索全体学生姓名、出生年份和所在系。 SELECT SNAME,2010-SAGE,SDEPT

FROM S

(3) 检索未选修任何课程的学生学号。 SELECT S.SNO FROM S,SC WHERE S.SNO!=SC.SNO;

(4) 检索 WANG 老师所授课程号、课程名。 SELECT CNO,CNAME FROM C WHERE TERCHER=’WANG’;

(5) 检索所有姓 LI 同学的基本信息。 SELECT* FROM S WHERE SNAME LIKE’李%;

(6) 检索选修‘DATABASE’课程的学生学号。 SELECT SNO FROM SC WHERE CNO IN (SELECT CNO FROM C WHERE CNAME=’ DATABASE’ );

(7) 检索年龄介于 LIPING 同学年龄和 28 岁之间的学生基本信息。 SELECT * FROM S WHERE SAGE BETWEEN (SELECT SAGE FROM S WHERE SNAME=’LIPING’) AND 28

(8) 检索至少选修了一门 TIAN 老师所授课程的学生姓名、学号。 SELECT SNAME,SDEPT FROM S WHERE SNO IN (SELECT SNO FROM SC WHERE CNO IN (SELECT CNO FROM C WHERE ='GAOXIAOJUAN'));

CT

实验四 实验题目:T-SQL 编程 实验目的:掌握 T-SQL 语句的使用。 实验内容: 1. 定义一个表变量,用来存储两名学生的学号,姓名,所在系。 DECLARE @TableVar TABLE (SNO int PRIMARY KEY, SN char(20)) INSERT INTO @TableVar VALUES(1,'ABC') INSERT INTO @TableVar VALUES(2,'def') SELECT * FROM @TableVar GO

2. 编写一个自定义的函数,该函数接受一个学生姓名,返回其学生表中基本信息及选课情 况。 3. DECLARE @SNAME CHAR(20),@SAD CHAR(30) 4. SELECT @SNAME= SNAME,@SAD=SAD 5. FROM STUDENTS 6. WHERE SID=’20048311021’ 7. SELECT @SNAME AS 姓名,@SAD AS 籍贯 8. GO 9. 编写程序计算 1-100 之间能被 9 整除得数的个数。 declare @i int select @i=1 print'1~100 能被 9 整除的数:' while @i<=100 begin if @i%9=0

begin print convert(char(3),@i) end set @i=@i+1 end

10.

试用 CASE 语句输出学生表中各年龄段的学生人数。 SELECT SAGE = CASE WHEN SAGE BETWEEN 10 AND 20 THEN '10-20' WHEN SAGE BETWEEN 20 AND 30 THEN '20-30' ELSE '>30' END , COUNT(*) 'ZHONGRENSHU' FROM S GROUP BY CASE WHEN SAGE BETWEEN 10 AND 20 THEN '10-20' WHEN SAGE BETWEEN 20 AND 30 THEN '20-30' ELSE '>30' END

实验五 实验题目:数据表的完整性 实验目的:掌握数据表的完整性 实验内容: 1. 数据表的完整性约束 CREAT TABLE STUDENT (SNO NUMERIC(6) CONSTRAINT C1 CHECK(SNO BETWEEN 90000 AND 99999), SNAME CHAR(20) CONSTRAINT C2 NOT NULL, SAGE NUMERIC(3) CONSTRAINT C3 CHECK(SAGE<30), SSEX CHAR(2) CONSTRAINT C4 CHECK(SSEX IN(‘男’,’女’)), CONSTRAINT STUDENT KEY PRIMARY KEY(SNO) );

2. 触发器 ☆ 建立一个 g-log 触发器,每当学生的成绩发生变化时,将变化的学号,成绩存 入 grade-log 表内 CREATE TABLE GRADE-LOG ( SNO CHAR(10) CONSTRAINT FK_SAL_TEACHER FOREIGN KEY (TNO) REFERENCES TE ACHER(TNO) ) CREATE TRIGGER G-LOG ON S AFTER INSERT,UPDATE

AS BEGIN INSERT INTO GRADE-LOG (SNO) SELECT CURRENT_GRADE FROM INSERTED END

☆ 建立一个不允许修改学生姓名的触发器 CREATE TRIGGER TR_SC_UPDATE ON S FOR UPDATE AS IF (COLUMNS_UPDATED()&3)>0 BEGIN PRINT '违背数据的一致性,无法更新' ROLLBACK TRAN END END

实验六 实验题目:数据库的安全性 实验目的:掌握 SQL SERVER 2005 的安全控制机制 1. 定义用户 2. 定义用户 3. 掌握 SQL SERVER 2005 架构和用户分离的概念 4. 数据库的授权、授权语句 5. 将查询 SC 表和修改 GRADE 属性的权限授予用户 user1。 GRANT UPDATE(GRADE),SELECT ON TABLE SC TO USER1

6. 将对表 S 的插入权限授予用户 user2,并允许他将此权限授予其他用户。

GRANT INSERT ON TABLE S TO YSER2 WITH GRANT OPTION

7. 收回所有用户对表 S 的插入权限。 REVOKE INSERT ON TABLE S FROM PUBLIC


推荐相关:
网站首页 | 网站地图
All rights reserved Powered by 大学生考试网 9299.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com