1、合 肥 师 范 学 院 实 验 报 告 册 2013 / 2014 学年 第 2 学期系 别 计算机科学与技术系实验课程 数据库原理专 业 计算机软件班 级 软件一班姓 名 夏雷学 号 1210431095指导教师 潘洁珠实验名称 课时 实验报告成绩实验(一)数据库基本操作 2实验(二)SQL 语句 6实验(三)数据库完整性与安全性实验 4实验(四)数据库编程 4备注:实验一 数据库基本操作一、实验目的1. 熟悉 MS SQL SERVER 运行界面,掌握服务器的基本操作。2. 掌握界面操作方法完成用户数据库建立、备份和还原。3. 建立两个实验用的数据库,使用企业管理器和查询分析器对数据库和表
2、进行基本操作。二、实验预习内容在认真阅读教材及实验指导书的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。1. 熟悉 SQL SERVER 2000 的运行环境,练习服务器基本操作:打开、停止、关闭。2. 使用 SQL SERVER 2000 中的企业管理器完成以下任务。数据库名称:STC表:STU(sno char(9), sname varchar(50), ssex char(2) , sage int, sdept char(2) ) ;COUTSES( cno char(3), cname varchar(50), cpno char(3), credit int )
3、;SC(sno char(9), cno char(3), grade int ) ;说明:以上为表结构,以 sno char(9)为例,说明 sno 属性设置为字符类型,宽度为 9,int 指整型数据。 1) 建立数据库 STC,分别建立以上三张表,并完成数据录入。 (表结构及数据参见教材)2) 分析并建立各表的主码,用下划线在上面表结构中标出主码。3) 建立各表之间的关联,请简述操作步骤。以下是各表的数据及各表的主码:1.STU 表:2.COUTSES 表; 3SC 表: 建立各表的关联:4) 参考实验指导书的【第 5 章 数据库的备份和还原】 ,使用企业管理器对数据库 STC 进行备份,
4、并尝试在个人电脑与机房电脑上进行还原,请简述备份、还原操作的步骤。1. 备份:2.还原:3. 在 SQL SERVER 2000 的查询分析器中使用 SQL 语言完成以下任务。参考实验指导书数据库系统实验指导教程 【实验 1.1 数据定义】 ,建立数据库 SCHOOL,分别建立 students、teachers 、courses、choices 四张表,表结构见实验指导书 P236 【附录 A】 。1) 用 SQL 语言创建数据库、建表。建表时为各表建立关键字、设置外码,数据暂不录入,请写出对应的 SQL 命令。create database SCHOOLcreat TABLE studen
5、ts(sid char(10) primary key,sname char(30) not null,email char(30),grade int, );create TABLE teachers(tid char(10) primary key,tname char(30) not null,email char(30),salary int, );create TABLE courses(cid char(10) primary key,cname char(30) not null,hour int,);create TABLE choices( no int primary ke
6、y,sid char(10) ,tid char(10),cid char(10),score int,FOREIGN KEY (sid) REFERENCES students(sid),FOREIGN KEY (tid) REFERENCES teachers(tid),FOREIGN KEY (cid) REFERENCES courses(cid),);2) 为 students 表、courses 建立按主键増序排列的索引,请写出相应的 SQL命令。create index ssid on students(sid asc)create index ccid on courses(c
7、id asc)3) 删除 course 上的索引,请写出相应的 SQL 命令。drop index courses.ccid4) 在 SCHOOL 数据库中的 students 表中增加一个“出生日期”字段,类型为日期时间型,请写出对应的 SQL 命令。alter TABLE students ADD 出生日期 DATETIME5) 删除 students 中的“出生日期”字段,请写出对应的 SQL 命令。alter TABLE students DROP COLUMN 出生日期6) 删除 SCHOOL 数据库中的 students 表,请写出对应的 SQL 命令。Alter TABLE ch
8、oisesdrop FK_CHOICES_STUDENTSDROP TABLE students4. 使用企业管理器创建数据库 SCHOOL,实现内容与实验预习内容 3 完全相同。1)创建数据库、建表。建表时为各表建立关键字、设置外码,数据暂不录入建立表,以及主码,外码2)为 students 表、courses 建立按主键増序排列的索引:3)删除 course 上的索引:4) 在 SCHOOL 数据库中的 students 表中增加一个“出生日期”字段,类型为日期时间型:5) 删除 students 中的“出生日期”字段:6) 删除 SCHOOL 数据库中的 students 表5. 使用企
9、业管理器,将 SCHOOL 数据库分离出 MS SQL SERVER,请简述步骤。6. 使用企业管理器,使用【数据库/所有任务/附加数据库】将 SCHOOL 数据库添加进 SQL SERVER,并查看数据。7. 使用查询分析器,删除数据库 STC,请写出对应的 SQL 命令。drop database STC8. 结束本次实验三、实验课后训练1. 使用企业管理器练习数据的导入导出。1) 将 SCHOOL 数据库 students 表中的数据导出到 STC 数据库对应的 stu 表中;2) 向 STC 数据库 courses 表导入 SCHOOL 数据库 courses 表中的数据;3) 自行练
10、习实验指导书【实验 5.3 SQL SERVER 数据库的导入与导出】部分;1:从 school 数据库中的 students 表中的数据导出到文本文件 Learner 中:2:将文本文件 Learner 中的数据导入到 school 数据库中的 students 表中2. 自行练习实验指导书【实验 1.1 数据定义】部分。四、实验报告1. 简述本次实验所用到的 SQL 命令及其功能。create database 创建数据库creat TABLE ( 列级完整性约束条件 , 列级完整性约束条件, )创建基本表create index on (主属性 asc (desc)) 为表建立按主键増序
11、(降序)排列的索引Alter TABLE drop ( B 与 A 的外码约束)DROP TABLE删除数据库中的 A 表2. 在 MS SQL SERVER 中数据库的“分离|添加”与“备份| 还原”是相同的功能吗?是不同的功能, “分离/添加”会使数据库的数量改变,而 “备份| 还原”不会改变。3. 实验总结(实验过程中出现的问题、解决方法、结果如何或其它)通过本次试验,知道了基本的 sql 命令及其功能,同时也初步涉及到了 SQL 语言。在实验过程中也遇到了一些问题,比如在一开始没有打开服务器直接进入企业管理器,半天链接不上。创建表后,录入数据后找不到如何保存数据,原来系统会自己存储,录
12、入数据后直接关闭就可以了。导入数据时,最后总是不记得选择要导入的表,直接就导入了。 实验二SQL 语句一、实验目的1. 熟悉 SQL 的数据查询语言,能使用 SQL 进行单表查询、连接查询、嵌套查询、集合查询和统计查询,能理解空值的处理;2. 熟悉数据库的数据更新操作,能使用 SQL 语句对数据库进行数据的插入、更新、删除操作;3. 熟悉 SQL 支持的有关视图的操作,能创建、查询及取消视图;4. 了解 NULL 在数据库中的特殊含义,掌握使用 SQL 进行与空值相关的操作;二、实验预习内容在认真阅读教材及实验指导书 【 实验 1.2 数据查询 】 、 【 实验 1.3 数据更新 】 、【 实
13、验 1.4 视图 】 和 【 实验 1.6 空值和空集的处理 】 的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。1. 使用 SCHOOL 数据库,在 SQL SERVER 2000 的查询分析器中使用 SQL语言完成以下操作。请在空白处填写相应的 SQL 命令。1) 查询年级为 2001 的所有学生的名称,按编号顺序排列;SELECT snamefrom STUDENTSWHERE grade=2001ORDER BY sid DESC2) 查询所有课程名称中含有 data 的课程编号;SELECT CIDFROM COURSESWHERE CNAME LIKE %data%
14、3) 统计所有老师的平均工资SELECT AVG(SALARY)FROM TEACHERS4) 查询至少选了 3 门课的学生编号;SELECT sidFROM CHOICESGROUP BY sidHAVING COUNT(sid)25) 查询学号为 80009026 的学生的姓名、所选课名及成绩;SELECT STUDENTS.SNAME,COURSES.CNAME,CHOICES.SCOREFROM STUDENTS,COURSES,CHOICESWHERE STUDENTS.sid=800009026 AND STUDENTS.sid=CHOICES.sid AND COURSES.ci
15、d=CHOICES.cid6) 查询没有学生选的课程编号;SELECT cidFROM COURSESWHERE CID NOT IN(SELECT CID FROM CHOICES)7) 查询既选了 C+又选了 Java 课程的学生编号;SELECT X.sidFROM CHOICES AS X,CHOICES AS YWHERE(X.cid=(SELECT cid from courses where cname=C+)AND Y.cid=(SELECT cid from courses where cname=JAVA)AND X.sid=Y.sid8) 查询选了 C+但没选 Java 课程的学生编号;SELECT X.sidFROM CHOICES AS X,CHOICES AS YWHERE(X.cid=(SELECT cid from courses where cname=C+)AND Y.cid IN (SELECT cid from courses where cnameNULL 的条件,后来才知道不用加,null 不参与计数。