首页 > 精品范文库 > 1号文库
数据库实验报告
编辑:逝水流年 识别码:10-926036 1号文库 发布时间: 2024-02-26 22:21:07 来源:网络

第一篇:数据库实验报告

实验一 PowerDesigner 的 CDM 应用

1:实验目的

使用PowerDesinger进行数据库概念模型设计,掌握CDM中的实体、实体属性、实体与实体之间联系的操作方法。2:实验内容

建立一个“实验一练习”命名的Conceptual Data Model(CDM)文件,其中应包括的实体、实体的属性及实体之间的联系。3:实验结果

4.实验心得

初次接触数据库原理实验,相对来说还是比较陌生,但老师讲解还相对比较清楚,并且实验报告写的十分清楚,只是遇到多建立了一个实体而无法删除的问题,通过同学的帮助也解决了,相对来说第一次实验还是比较顺利的。

实验二 PowerDesigner 的 PDM 应用

1.实验目的

用PowerDesinger的工具将CDM生成PDM过程,熟悉PDM工作区,为生成数据库中的物理的表打下基础。完成这个实验后,应该能够了解从CDM到PDM的转换过程,熟悉PowerDesinger的PDM工作区,使用工具选项板进行PDM对象设计。

2.实验内容

从CDM生成PDM,设计结束后,利用PowerDesigner的“生成数据库”功能,产生数据库中各数据对象的定义,再运行MySQL的命令行客户端软件,打开test数据库,运行crebas.sql,同时进行中英文的转换,最后运行show tables命令查看表。

3.实验结果

4.实验心得

经过本次实验,学会了用PowerDesinger的工具将CDM生成PDM过程,并且利用crebas.sql进行中英文的转换,最后利用show tables命令查看表,受益匪浅。

实验 三Navicat for MySQL的使用和SQL语言数据定义语言DDL 1.实验目的

了解Navicat for MySQL的启动,熟悉如何在Navicat for MySQL下配置数据库联接。了解DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,学会在Navicat for MySQL中用DDL语言进行对表、索引、视图的增加、删除和改动 2.实验内容

1.启动Navicat for MySQL。

2.在MySQL–新建连接中完成连接参数配置,并完成连接测试和保存连接参数。3.查看mysql数据库的help_category表的定义、表中数据与索引、完整性约束等。4.查看mysql数据库的其它数据库对象,如视图、索引、存储过程、函数、触发器。5.在Navicat for MySQL中打开查询,新建查询,运行简单的SQL语句,如select * from help_keyword where help_keyword_id<=3;观察下结果。3.实验结果

4.实验心得

使用navicat for MySQL连接数据库的时候,不能正常连接到数据库,出现“access denied for user’root@’localhost”的错误提示,经过查找发现是MySQL没有正确安装,重装之后就可以正常的访问数据库,在本次实验中也学会了Navicat for MySQL的基础的查询使用以及简单的SQL语句的运行。

实验 四 SQL语言数据定义语言DDL 1:实验目的

本次实验了解SQL语言中DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,掌握在Navicat for MySQL中用DDL语言进行对表、索引、视图的增加、删除和改动。掌握使用SQL语句增加或删除约束,加深对完整性概念的理解,达到灵活应用的目的。掌握使用SQL语句定义和删除同义词。2:实验原理

在 Navicat for MySQL 中使用 CREATE 命令完成对表、索引、视图、同义词 的创建,使用 DROP 命令完成对表、索引、视图、同义词的删除,使用 ALTER 命 令对表结构进行修改及完整性约束的增加、删除。

3:实验代码及结果 相应SQL语句为:

CREATE TABLE NewTable(studentid varchar(10)NOT NULL , name varchar(20)NOT NULL , sex varchar(2)NOT NULL , age integer NOT NULL , Fee decimal(10,2)NULL , address varchar(50)NULL , memo varchar(300)NULL , PRIMARY KEY(studentid));

截图如下:

3.用Create Table语句建表CourseAa,相应的SQL语句为: CREATE TABLE CourseAa(Aa1 Varchar(20), Aa2 INTEGER, Aa3 decimal(10)); 截图如下:

5.用Create Table语句建表ChooseBb 相应的SQL语句如下: CREATE TABLE ChooseBb(Bb1 VARCHAR(30), Bb2 INTEGER, Bb3 DECIMAL(6));

6.用Drop Table语句删除表CourseAa,相应的SQL语句如下: Drop table CourdeAa;

7.用Alter Table语句更新表ChooseBb,添加一个属性名Bb4,类型Varchar,长度20,完整性约束设为非空值,缺省值设为字符“系统测试值”,相应的SQL语句如下: ALTER TABLE choosebb ADD Bb4 VARCHAR(30)NOT NULL;

8.用Alter Table语句更新表ChooseBb,添加一个属性名Bb5,类型Varchar, 长度10,完整性约束设为主码。完成后,表ChooseBb的设计如下所示。相应的SQL语句如下:

ALTER TABLE choosebb ADD Bb5 VARCHAR(30)PRIMARY KEY;

9.用Create View语句建立一个视图View_Choosebb,生成的视图属性名(View_bb1,View_bb2,view_bb3), 其中View_bb1对应于基表ChooseBb的Bb1、View_bb2对应于基表ChooseBb的Bb4、view_bb3对应于基表ChooseBb的Bb5。完成后,视图View_Choosebb的设计如下所示。

相应的SQL语句如下:

CREATE VIEW View_Choosebb AS SELECT Bb4 AS View_bb1,View_bb2 FROM chooseBb;CREATE VIEW View_Choosebb AS SELECT Bb5 AS View_bb3 FROM chooseBb;10.用Drop View语句删除视图View_Choosebb。相应的SQL语句如下: DROP VIEW View_choosebb;11.用Create Index语句对表ChooseBb的Bb2属性建立一个升序索引,索引名Index_bb2。用Create Index语句对表ChooseBb的Bb4属性建立一个降序索引,索引名Index_bb4。相应的SQL语句如下:

CREATE INDEX Index_bb2 ON ChooseBb(Bb4 DESC);12.用Drop Index语句删除索引Index_bb2。相应的SQL语句如下:

DROP INDEX Index_bb2 ON ChooseBb;

4:实验中遇到的问题及心得体会

1、用Drop Table语句删除表CourseAa的时候,在SQL浏览框中输入语句并运行,发现左边项目栏中还是有CourseAa表的存在,但是确打不开CourseAa表,弄了很长时间,也不知道是什么情况,最后尝试刷新页面之后,发现语句运行正确,CourseAa表成功删除。

2、由于理论课时查询语言之学到了表的查询,到后面实验中涉及视图的建立及查询,也不清楚是怎么回事,而且由于对查询语句的不熟悉,实验过程中进行缓慢,视图的部分是课下看书慢慢写的,没有截图。

通过这次实验,初步了解了SQL语言中DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,掌握在Navicat for MySQL中用DDL语言进行对表、索引、视图的增加、删除和改动。掌握使用SQL语句增加或删除约束。因为实验过程中对这些语句的不熟悉耽误课很长时间,还需课下多下工夫多看、多写。

实验五

SQL语言数据操纵语言DML

1:实验目的

SQL 语言的数据操纵功能通过 DML(数据维护语言)实现。DML 包括数据查询 和数据更新两种数据操纵语句。其中,数据查询指对数据库中的数据查询、统计、分组、排序等操作;数据更新指数据的插入、更新和删除等数据维护操作。

本次实验了解 DML 语言的 INSERT、UPDATE、DELETE 等数据维护语言,掌握 在 Navicat for MySQL 中用 DML 语言的 INSERT、UPDATE、DELETE 对表进行数据 插入、更新和删除。

2实验内容

在 Navicat for MySQL 中使用 INSERT 语句向表中插入数据。使用 UPDATE 语句更新(修改)表中已有数据。使用 DELETE 语句删除表中数据。

3:实验代码及结果

1、用Create Table语句建立test表,其语句和截图如下所示; CREATE TABLE `NewTable`(`Name` varchar(20)NOT NULL , `Age` integer NULL , `Score` numeric(10,2)NOT NULL , `Address` varchar(60)NULL);

2、继续用Create Table语句建立test_temp表,其语句同1。

3、用INSERT语句对表test_temp,插入如实验报告中的三条记录,其插入语句和截图如下: INSERT INTO test_temp

VALUES('郑七',21,'490.50','重邮宿舍11-2-1');INSERT INTO test_temp

VALUES('张八',20,'560.00','南福苑3-3-3');INSERT INTO test_temp

VALUES('王九',10,'515.00','学生新区19-7-1');

4、用INSERT INTO…SELECT…FROM语句,将test_temp表中的数据,插入到test中,其语句及其截图如下: INSERT INTO test

SELECT * FROM test_temp;

5、用UPDATE语句将test表中年龄小于20的数据,将其成绩更新为原来的成绩加5分,其语句和截图如下:

UPDATE test SET Score=Score+5 WHERE Age<=20;

6用UPDATE语句将test表中居住在南福苑所有的学生年龄减少1岁,其语句和截图如下:、UPDATE test SET Age=Age-1 WHERE Address Like '南福苑%';

7、用DELETE语句将test表中年龄大于等于21 并且成绩大于等于500的学生数据删除,其语句和截图如下: DELETE FROM test

WHERE Score<=500 AND Age>=21;

8、用DELETE语句将test表中成绩小于550并且居住在重邮宿舍的学生数据删除,其语句和截图如下:

DELETE FROM test WHERE Score<=550 AND Address LIke'重邮宿舍%';

4实验心得

这次实验从实验原理还是实验操作来说还是相对简单的,但越是对简单的是就越容易犯迷糊,这次件表命名给了我很多启示,以后对细节还是要十分注意的。

实验六 SQL语言数据查询语言DQL

1:实验目的

本次实验了解 SQL 语言的 SELECT 语句对数据的查询,学会在 Navicat for MySQL 中用 SELECT 语句对表中的数据进行简单查询、连接查询、嵌套查询和组 合查询。2:实验原理

在 Navicat for MySQL 中使用 SELECT 语句从表中查询数据、统计数据及对 数据进行分组和排序等操作。3:实验代码及结果

1.用 Create Table 建立 Student 表:

2.用 Create Table 建立 Course 表:

3.用 Create Table 建立 Choose 表:

4.用 INSERT 语句向 Student 表中插入 3 个元组:

5.用 INSERT 语句向 Course 表中插入 3 个元组:

6.用 INSERT 语句向 Choose 表中插入 7 个元组:

7.用 SELECT 语句,查询计算机学院学生的学号和姓名。

8.用 SELECT 语句的 between„and„表示查询条件,查询年龄在 20~23 岁的学 生信息。

9.用 SELECT 语句的 COUNT()聚集函数,统计 Student 表中学生总人数。

10.分别用 SELECT 语句的 max()、min()、sum()、avg()四个聚集函数,计算 Choose 表中 C1 课程的最高分、最低分、总分、平均分。max():

Min():

Sum();

avg():

11.用 SELECT 语句对空值(NULL)的判断条件,查询 Course 表中先修课称编号为 空值的课程编号和课程名称。

12.用 SELECT 语句的连接查询,查询学生的学号、姓名、选修的课程名及成绩。

13.用 SELECT 的存在量词 EXISTS,查询与“张三”在同一个学院学习的学生信 息。

14.用 SELECT 语句的嵌套查询,查询选修 C1 课程的成绩低于“张三”的学生的 学号和成绩。

15.用 SELECT 语句的组合查询(UNION),查询选修了 C1 课程或者选修了 C3 课程 的学生学号。

16.用 SELECT 语句的组合查询(UNION)与 DISTINCT 短语,查询选修了 C1 课程或 者选修了 C3 课程的学生学号,并取消重复的数据。

4.实验心得

本次实验室相对于前几次来说比较困难的一次,因为语句刚学过,下去也没有及时去练习,对于很多还是比较困难,在本次实验中通过练习,让我了解 SQL 语言的 SELECT 语句对数据的查询,学会在 Navicat forMySQL 中用 SELECT 语句对表中的数据进行简单查询、连接查询、嵌套查询和组合查询。课下时间也会多多练习SQl语句。

实验七

MYSQL应用开发环境的建立

1:实验目的

通过在Windows平台下,搭建Apache Httpd Web服务器,PHP脚本支持,访问MySQL数据库等,学习了解MySQL应用开发环境的建立过程。本次实验通过安装Apache HTTD Server 2.2、PHP 5.3.28,配置httpd.conf和PHP.ini文件,完成MySQL的PHP应用开发环境的建立。2:实验内容

1、按照实验指导安装Apache http Server。成功后,截图如下:

2、配置Apache服务器支持PHP文件解析,截图如下:

3、实验测试成功,截图如下:

3:遇到的问题及解决 配置PHP扩展支持MySQL数据库。用记事本打开php5.3.28之下的php.ini文件,把;extension=php_mysql.dll去掉。只是去掉了extension=php_mysql.dll,而,而没有其前面的分号去掉就保存了文件。

4:实验心得

通过在 Windows平台下,搭建 Apache Httpd Web 服务器,PHP 脚本支持,访问 MySQL 数据库等,我学习了解 了MySQL 应用开发环境的建立过程。学会了安装 Apache HTTD Server 2.2、PHP 5.3.28,配置 httpd.conf和 PHP.ini 文件,完成 MySQL 的 PHP 应用开发环境的建立。

实验八 MySQL的存储过程

1:实验目的

存储过程分为两类:1.系统提供的存储过程;2.用户自定义存储过程。

存储过程具有的优点:1.存储过程允许标准组件式编程;2.存储过程能够实 现较快的执行速度;3.存储过程能够减少网络流量;4.存储过程可被作为一种安 全机制来充分利用。存储过程是可复用的组件!想象一下如果你改变了主机的语 言,这对存储过程不会产生影响,因为它是数据库逻辑而不是应用程序。存储过 程是可以移植的!

本次实验了解 MySQL 存储过程的创建、修改和删除的方法和步骤,掌握在 Navicat for MySQL中对存储过程的进行创建、修改和删除,掌握在MySQL Command Line Client 中调用带参数和不带参数的存储过程。

2:实验内容

1、MySQL Command Line Client中创建存储过程,按照实验指导书创建第一、第二个存储过程及其调用。

2、调用第三、第四个传出参数的存储过程:

3、创建存储过程third_p(),显示表cqupt中的数据,并对其进行调用测试。

4、创建存储过程simpleproc2(),对传入参数进行乘以10的处理,变量定义@x,并对其进行调用测试。5.用Drop Procedure语句删除存储过程first_p。

3:实验结果

4:心得体会

通过此次实验,学会了在MySQL Command Line Client中创建存储过程及其调用,并传递参数对其进行调用测试.实验九MySQL的触发器和SQL语言数据控制语言DCL 1:实验目的

触发器是特定事件出现的时候,自动执行的代码块,类似于存储过程。触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的,由DBMS自动执行。触发器具有这些功能:

1、允许/限制对表的修改;

2、自动生成派生列,比如自增字段;

3、强制数据一致性;

4、提供审计和日志记录;

5、防止无效的事务处理;

6、启用复杂的业务逻辑。

本次实验了解MySQL触发器的创建、修改和删除的方法和步骤,掌握在Navicat for MySQL中对触发器的进行创建、修改和删除,掌握触发器触发测试的方法。2:实验内容

1、创建触发器audit_student,该触发器对修改student表的时间、用户名记录到日志表中。

2.执行

五、教学过程中

(三)实验内容的第二部分改造简单触发器,增加触发类型判断功能,验证触发器的改造和改造后的触发器触发测试。3.自行编写student表的触发器aduit_student_update,在对student表进行更新操作前触发,触发时,向student_log表写入触发用户、触发时间和触发类型。并对该新建进行触发测试。

4.自行编写student表的触发器aduit_student_delete,在对student表进行删除操作后触发,触发时,向student_log表写入触发用户、触发时间和触发类型。并对该新建进行触发测试。

3:实验结果

①输入如下语句,建立实验表student,如图所示: create table student(SNO varchar(10),SNAME varchar(30),Sage Int);

②输入如下语句,建立日志表student_log,并查看日志表是否为空,如图所示:

create table student_log(who varchar(30),whattimeTIMESTAMP);

select * from student_log;

③输入如下语句,在student表上语句触发器,如图所示: use test;

Create trigger audit_student Beforeinsert On student For each row Begin Insert into student_log(Who,whattime)Values(current_user,current_timestamp);End;

建立④输入如下语句对触发器进行INSERT触发测试,如图所示: 对student表做一个INSERT操作:

Insert into student values('1992150033','吴思远',40);

输入如下语句查看表student_log,检查触发器工作结果,表student_log中数据如图所示:

select * from student_log;

①输入如下语句,修改日志表结构,增加一个属性存放触发语句类型。如图所示: alter table student_log add(action varchar(20));

②修改触发器,记录触发语句类型。选中student表,单击右键,选择设计表,点击触发器选项卡,在定义中对INSERT进行编辑,如图所示:

select * from student_log

4:实验心得

本次实验让我了解 MySQL 触发器的创建、修改和删除的方法和步骤,掌握在

Navicat for MySQL 中对触发器进行创建、修改和删除的步骤,掌握了触发器触发测试的方法。

实验十SQL的数据控制通过DCL(数据控制语言)实现

1:实验目的

DCL 通过对数据库用户的授 权和权限回收命令来实现有关数据的存取控制,以保证数据库的安全性

本次实验了解 DCL 语言的 GRANT 和 REVOKE 语句对数据库存取权限的控制,学会在Navicat for MySQL中用GRANT、REVOKE语句对数据库存取权限进行设定。

2:实验内容

1.登录mysql,创建用户jason,密码为abc123,并授权该用户完整访问数据库test。即执行如下DCL语句:GRANT ALL ON test.* TO jason@“%”IDENTIFIED BY “abc123”;2.启动另外一个Navicat for MySQL,在MySQL –新建连接中完成jason连接参数配置

3.对user表进行授予权限操作,并用select insert 进行测试 4.对user表进行收回权限操作,用select insert语句进行测试 3:实验结果

GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”;GRANT SELECT on mysql.host to jason;

2、将数据库 mysql 中表 host 的查询权限从用户 jason 回收

3.创建用户jason,密码为abc123,并授权该用户完整访问数据库test。GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”;

4.启动另外一个Navicat for MySQL,在MySQL –新建连接中完成jason连接参数配置。为了能查询到相应的数据,我们必须进行授权操作。语句如下: Grant select on mysql.user to jason;

授权后,现在切换到Navicat for MySQL,执行之前窗口中的查询语句:

5、接下来,切换到MySQL的命令行客户端,创建一个简单的表,切换到Navicat for MySQL,新建一个查询:

insert into mysql.dcltest(id,name)values(1,'张三丰');

6、切换到MySQL的命令行客户端,执行如下授权语句,进行INSERT权限的授予: Grant insert on mysql.user to jason;

输入如下查询语句:

Select * from mysql.dcltest;

权限授予后,root(数据库超级用户)可以进行权限的回收。

7、切换到Navicat for MySQL,新建一个查询,执行如下插入语句: insert into mysql.dcltest(id,name)values(2,'扫地僧');执行如下权限回收语句:

Revoke insert on mysql.dcltest from jason;

新建一个查询,执行如下查询语句: select * from mysql.dcltest;

Revoke select on mysql.dcltest from jason;

4:实验心得

通过本次实验,我了解DCL语言的GRANT和REVOKE语句对数据库存取权限的控制,学会在Navicat for MySQL中用GRANT、REVOKE语句对数据库存取权限进行设定。

实验十一MySQL的事务与锁

1:实验目的

事务(Transaction)是MySQL数据库系统中的一个逻辑工作单元,是完成一组数据库操作的程序执行单元;锁(Lock)是MySQL数据库系统中并发控制的常用方法.本次实验了解MySQL事务的设置、提交和回退的方法和步骤,掌握MySQL Command Line Client中如何进行相关操作。了解MySQL的表锁定与锁定解除,掌握MySQL Command Line Client中如何进行相关操作。2:实验内容

启动MySQL的命令行客户端,输入密码mysql(小写);执行

五、教学过程中

(三)实验内容的1部分,学习和验证MySQL的事务;在实验步骤2的基础上,在数据bankrecord的表record中,添加一个元组id为3的张六,初始余额2万;自己写事务完成如下操作:李四向张六转账5千,然后取消该转账;王五向李四转账1万5,然后确认转账;执行

五、教学过程中

(三)实验内容的2部分,学习和验证MySQL的锁;在步骤4的基础上,在数据库bookrecord的表sellrecord中,添加一个元组id为202_的书籍Oracle数据库实用教程库,存为2本;在当前MySQL命令行客户端里面模拟李四购书,另外启动一个MySQL命令行客户端,模拟王五购书;要求使用写锁先锁定后,再修改,因为库存有两本,所以李四和王五都能买到,库存为0,并且两人的名字都出现在buyername 3:实验结果

create database bankrecord character set utf8 collate utf8_general_ci;use bankrecord;

create table record(id int,name varchar(20),jine decimal(8,2));

set names gbk;

insert into record values(1, '李四',20000);insert into record values(2, '王五',20000);start transaction;

update record set jine=jine-10000 where name='李四';select * from record;rollback;

select * from record;

1、查看数据库自动提交模式是否打开:

2,按照实验指导先建立数据库、表和向表中插入初始账户记录:

3、完成开始事务,从李四账户转出 1 万元,向王五账户中转入 1 万元,提交确认转账:

4、安实验指导执行语句先建立数据库、表和向表中插入初始书籍记录:

5、在数据库 bankrecord 的表 record 中,添加一个元组id 为 3 的张六,初始余额 2 万,李四向张六转账 5 千,然后取消该转账;王五向李四转账 1 万 5,然后确认转账(语句在图中显示):

6、在数据库 bookrecord 的表 sellrecord 中,添加一个元组id 为 202_ 的书籍 Oracle 数据库实用教程库,存为 2 本(相关语句在图中显示):

7、在当前 MySQL 命令行客户端里面模拟李四购书,另外启动一个 MySQL 命令行客户 端,模拟王五购书(语句在图中显示)。

4:实验心得

本次实验了解 MySQL 事务的设置、提交和回退的方法和步骤,掌握 MySQL Command Line Client 中如何进行相关操作。了解 MySQL 的表锁定与锁定解除,掌握 MySQL Command Line Client 中如何进行相关操作。

实验十二MySQL的常用函数MySQL 1:实验目的

本次实验了解 MySQL 常用字符串、日期和时间函数等的使用,掌握 MySQL Command Line Client 中如何进行相关操作。常用函数包括常用字符串、日期和时间函数等各类函数。2:实验内容

启动 MySQL 的命令行客户端,输入密码 mysql(小写);执行

五、教学过程中

(三)实验内容的 1 部分,学习和验证 MySQL 的字符串函数;在实验步骤 2 的基础上,学习如下两个函数并完成题目:定位和位置函数 LOCATE(substr,str),返回字符串 str 中子字符串 substr 的第一次出现位置,如果 str 中不包含 substr,返回 0。

请使用LOCATE函数计算needle在haystackneedlehaystack第一次出现的位置;子字符串函数 SUBSTRING(str,pos,len),从字符串 str 返回一个长度同 len 字符相同的子字符串,起始于位置 pos;请使用 SUBSTRING 函数计算 backspace,从第 2 个字符起,长度为 5 的子字符串;字符串函数的解答脚本和结果请保存,老师会检查;执行

五、教学过程中

(三)实验内容的 2 部分,学习和验证 MySQL 的日期和时间函数;在步骤 4 的基础上,学习如下一个函数并完成题目:周函数 WEEK(date),返回 date 时间包含的星期数;请使用 WEEK 函数计算当前日期包含的星期数。3:实验结果

4:实验心得

通过本次实验掌握了MySQL 常用函数包括常用字符串、日期和时间函数等各类函数,并且学会了MySQL Command Line Client 中如何进行相关操作。

第二篇:数据库实验报告

实验报告

1.实验内容与实验性质

实验内容:数据库实例设计

实验性质:专业基础综合设计性实验

2.实验目的与要求

实验目的:深化“数据库设计”一章的课堂教学,借助数据库实例设计过程,掌握数据库设计中需求分析的实现方法、数据库概念结构设计、数据库逻辑结构设计及优化过程、数据库物理设计与数据库运行和维护过程。

实验要求:按数据库原理与技术课程实验指导(数据库设计部分).doc完成实验任务,演示成果和递交设计报告与实验报告。

1.数据库概念结构设计,画ER图

2.数据库逻辑结构设计,关系模式设计与优化。

3.SQL Server关系数据库的建立,包括数据安全性与完整性设计及模拟数据的输入。

4.自行设计和定义应用视图并输出结果。

5.数据库试运行与数据查询界面设计。

3.实验设备

装有Microsoft SQL Server、Office2000的计算机1人/台

4.实验时数6学时

5.注意事项

按课堂要求进行个人上机操作练习为主,同组可互相交流。

6.实验过程与结果(包括E-R模型与描述、逻辑结构设计与物理设计描述与有关的界面、用户视图定义及其结果、查询界面等内容)

7.实验总结与体会

附件:各次实验规定提交的结果文件。

请同学们将需要提交的实验报告、实验结果文件按“数据库原理与技术+班级+姓名”的形

式打包成一个压缩文件于第10周星期五前交到z-yhongstu@163.com信箱。

第三篇:数据库实验报告

南华大学

计算机科学与技术学院

实验报告

(202_ ~202_ 学

第二学期)

课程名称 实验名称

数据库原理与技术

姓名 张涛 学号 20124350230

专业 软件工程

班级 02班

地点

教师 刘征海 实验1 认识DBMS 一.实验题目

认识DBMS 二.实验要求

1.利用管理工具创建数据库、表和表间关系。

实验目的和注意事项 基本操作,进一步理解数 据库、表、表间关系的概念。

注意事项:创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。三.实验代码(内容)

(1)利用SQL Server Management Studio 创建数据库,名称为【学生选课

YYXXXX】。其中YY为专业代号,计算机为JS,软件工程为RJ,网络为WL,数媒为

SM;XXXX为各位同学的学号中的最后四位 实验目的:熟悉SQL Server Management Studio

(2)在【学生选课YYXXXX】中建立数据表,表的定义如下所示。

学生YYXXXX(学号,姓名,性别,出生日期,院系名称,备注);

课程YYXXXX(课程号,课程名,先行课,学分); 选修YYXXXX(学号,课程号,分数)。

要求定义每张表的主码,为属性选择合适的数据类型,决定是否允许为空,为【性别】和【学分】属性定义默认值。

(3)定义表之间的关系。

(4)分别为表录入几行数据记录,同时练习数据的修改和删除操作

2.利用SQL 语句创建数据库、表和表间关系 实验目的和注意事项

实验目的:熟悉创建数据库和数据表的SQL 语句。

注意事项:输入SQL 语句时应注意,语句中均使用西文操作符号。

实验内容

在SQL Server Management Studio 中新建查询,实现以下操作。(1)用SQL 语句创建数据库,名称为“StudentCourseYYXXXX”。其中YYXXXX 为各位同学的学号中的最后四位。

(2)用SQL 语句创建StudentCourseYYXXXX 中的3 张表,同时指定主码、外 码、默认值等。

(3)直接在表数据窗口中录入表数据记录。

实验 2 交互式 SQL(1)

一、数据库单表查询 实验目的和注意事项

实验目的:掌握单表查询SELECT、FROM、WHERE 的用法,特别要掌握比较运 算符、逻辑运算符的使用。注意事项:子句WHERE<条件>表示元组筛选条件;子句HAVING<条件>表示元

组选择条件;子句HAVING<条件>必须和GROUP BY 子句配合使用;注意输入SQL语句时均应使用西文操作符号。实验内容

(1)创建查询窗口,设置查询环境。(2)单表查询 实验步骤

(1)选择要查询的数据库,右击【新建查询】,或者选择系统菜单中的【文

件】|【新建】|【使用当前连接查询】命令,或者单击标准工具栏中的【新建查

询】按钮,即可新建一个查询窗口。如果查询数据库不是StudentCourseYYXXXX,则可在可用数据库下拉列表中进行选择,或用USE 语句调用。

(2)在查询窗口中输入SELECT 查询语句,对StudentCourseYYXXXX 数据库 进行查询操作。

① 查询计算机系全体学生的信息

② 查询姓“李”的学生的学号和姓名。

③ 查询课程表中先行课为空的课程名。

④ 查询考试成绩有不及格的学生的学号。

⑤ 求选修了C1 课程或C2 课程的学生的学号及成绩。

⑥ 查询全体计算机系学生的姓名及其年龄。

⑦ 查询计算机系在1986-1987 年之间出生的学生的姓名。

⑧ 查询姓“李”的前两个学生的学号和姓名。

⑨ 查询选修了两门以上课程的学生学号与课程数。

⑩ 查询选修课程数大于等于2 的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。

二、数据库多表连接查询 实验目的和注意事项

实验目的:理解多表查询的概念;掌握多表查询的SELECT、FROM、WHERE、JOIN子句的用法,特别要求比较内连接、外连接的结果。

注意事项:内连接、左外连接和右外连接的含义及表达方法;注意输入SQL 语 句时均应使用西文操作符号。实验内容

(1)创建查询窗口,设置查询环境。(2)多表复杂查询。实验步骤

新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行多表连接查询操作。(1)查询选修了【数据库原理】的计算机系的学生学号和姓名。

(2)查询每一门课的间接先行课(即先行课的先行课)。

(3)查询学生的学号、姓名、选修课程的名称和成绩。

(4)查询选修了课程的学生姓名。

(5)查询所有学生的信息和所选修的课程。

(6)查询已被选修的课程的情况和所有课程的名字。

(7)列出学生所有可能的选修情况。

(8)查找计算机系的学生选修课程数大于2 的学生的姓名、平均成绩和选课 门数,并按平均成绩降序排列。

实验 3 交互式 SQL(2)数据库嵌套查询和组合查询 实验目的和注意事项

实验目的:掌握查询中嵌套查询和组合查询的操作方法,进一步加深对 SELECT 语句的理解。

注意事项:子句的使用;注意语句的层次嵌套关系和括号的配对使用问题;

注意输入SQL 语句时均应使用西文操作符号。实验内容(1)创建查询窗口,设置查询环境。(2)分组查询。(3)统计查询。(4)嵌套查询。实验步骤

新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行嵌套查询和组合查询操作。

(1)统计选修了【数据库原理】课程的学生人数。

(2)查询没有选修【数据库原理】课程的学生信息。

(3)查询其他系中比计算机系学生年龄都小的学生。

(4)查询被0602001 学生或0602002 学生所选修的课程的课程号(用UNION 组合查询与IN 条件查询两种方法实现)。

(5)查询0602001 学生和0602002 学生同时选修的课程的课程号(用

INTERSECT 组合查询与EXISTS 嵌套子查询两种方法实现)。

(6)查询被0602001 学生选修,但没有被0602002 学生所选修的课程的课程

号(用EXCEPT 组合查询与NOT EXISTS 嵌套子查询两种方法实现)。

实验 4 交互式 SQL(3)数据的更新 实验目的和注意事项

实验目的:熟悉插入、修改和删除SQL 语句的用法。注意事项:对于INSERT 语句,要求理解默认值约束、空值约束在插入时所 起的作用。实验内容

(1)使用INSERT 语句在数据库的表中插入几行记录。(2)使用UPDATA 语句修改某个数据。(3)使用DELETE 语句删除某行记录。实验步骤

(1)新建查询窗口,选择StudentCourseYYXXXX 为当前数据库。

(2)在已建立StudentCourseYYXXXX 数据库和StudentsYYXXXX、CoursesYYXXXX、SCYYXXXX 3 个表的基础上,向StudentCourseYYXXXX数据库中 的表更新数据。

① 向表StudentsYYXXXX 中插入(0601001,赵林, 男,1985-09-08,计算机)的记录。

② 向SCYYXXXX 表中添加一个学生的选课记录,学号为0601001,所选的课

程号为C2。SC表中有Sno、Cno、Grade 这3 个列。这里只知道学号和课程号,不知道成绩值。

③ 向表StudentsYYXXXX 中插入(0601002,张修雨,default)记录,该记录 的数据中default 表示默认值‘男’,其他数据表示空值。

④ 用CREATE 语句建立表StudentBAK1YYXXXX,包含(与Students 的Sno、Sname、Sdept 相同)3 个字段,然后用INSERT SELECT 语句实现向

StudentBAK1YYXXXX 添加StudentsYYXXXX 表中的计算机系学生的学号、姓名、所在系的信息。

⑤ 用 SELECT...INTO 语句实现把StudentsYYXXXX 表中1986 年后(包含

1986 年)出生的学生的学号、姓名存储到一个新表StudentBAK2YYXXXX。

⑥ 将姓名为【赵林】的同学的所在系改为【机电系】,爱好改为【足球】。

⑦ 将选修了课程名为【数据库原理】的学生成绩加5 分。⑧ 将StudentCourseYYXXXX

数据库的StudentBAK1YYXXXX 表中所有姓赵的 同学删除。

⑨ 删除计算机系选修成绩不及格的学生选修记录。⑩ 将除。StudentCourseYYXXXX

数据库的StudentBAK2YYXXXX 表中的所有行删

四.实验总结

实验一要注意创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。输入SQL 语句时应注意,语句中均使用西文操作符号;实验二应注意注意group和having以及where的搭配使用的情况;实验三注意注意输入SQL 语句时均应使用西文操作符号,子句的使用,注意语句的层次嵌套关系和括号的配对使用问题;实验四注意输入SQL 语句时均应使用西文操作符号,对于INSERT 语句,要求理解默认值约束、空值约束在插入时所起的作用。注意插入,修改,新建表,删除语句的写法,并且掌握把原表中的数据转存到新表中的语句写法。

第四篇:数据库实验报告

实验4SQL高级应用

【实验目的】

1、掌握在SQL SERVER 202_下进行数据还原的方法。

2、掌握SQL语句的查询统计功能和数据更改功能。

【实验内容】

1.还原factory数据库。

2.在factory数据库上,完成如下各题。

(1)删除factory数据库上各个表之间建立的关系。(2)*显示各职工的工资记录和相应的工资小计。

(3)*按性别和部门名的所有组合方式列出相应的平均工资。

(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。

在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。

(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。(6)显示最高工资的职工所在的部门名。

(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。(8)*采用游标方式实现(6)小题的功能。(9)*采用游标方式实现(7)小题的功能。

(10)*先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。

【实验报告要求】

1.第(1)写出操作步骤。

2.其他各题写出实现要求的命令/程序,并列出执行结果。

【操作步骤】

1.还原factory数据库。

2.在factory基础上,有

(1)删除factory数据库上各个表之间建立的关系。

(2)*显示各职工的工资记录和相应的工资小计。

Select 职工号,姓名,工资from salary Order by 职工号

Compute sum(工资)by 职工号

(3)*按性别和部门名的所有组合方式列出相应的平均工资。

select worker.职工号,worker.性别,depart.部门名,avg(工资)as'平均工资' from worker inner join depart on worker.部门号=depart.部门号 inner join salary on worker.职工号=salary.职工号

group by worker.职工号,worker.性别,depart.部门名

order by worker.职工号

(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。

insert into worker values('20','陈立','女','1955-03-08','1','1975-10-10',4)

在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。

Insert into depart Values('5','设备处')对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。

use factory Select b.部门号,c.姓名

from salary a,departb,worker c delete from worker where 职工号=20 delete from depart where 部门号=5(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。

Use factory Select b.部门名,c.职工号,c.姓名,b.部门名,a.日期,a.工资 from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and a.职工号=c.职工号and b.部门号=c.部门号(6)显示最高工资的职工所在的部门名。

Use factory Select b.部门名from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and c.部门号=b.部门号and a.职工号=c.职工号

(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。

Use factory Select a.职工号,a.姓名,avg(b.工资)as平均工资from worker a,salary b where a.职工号=b.职工号 group by a.职工号,a.姓名

having avg(工资)<(select avg(工资)from salary)

第五篇:数据库实验报告

数据库实验报告

一、题目要求

某银行准备开发一个银行业务管理系统,通过调查,得到以下的主要需求:

银行有多个支行。各个支行位于某个城市,每个支行有唯一的名字。银行要监控每个支行的资产。银行的客户通过其身份证号来标识。银行存储每个客户的姓名及其居住的街道和城市。客户可以有帐户,并且可以贷款。客户可能和某个银行员工发生联系,该员工是此客户的贷款负责人或银行帐户负责人。银行员工也通过身份证号来标识。员工分为部门经理和普通员工,每个部门经理都负责领导其所在部门的员工,并且每个员工只允许在一个部门内工作。每个支行的管理机构存储每个员工的姓名、电话号码、家庭地址及其经理的身份证号。银行还需知道每个员工开始工作的日期,由此日期可以推知员工的雇佣期。银行提供两类帐户——储蓄帐户和支票帐户。帐户可以由2个或2个以上客户所共有,一个客户也可有两个或两个以上的帐户。每个帐户被赋以唯一的帐户号。银行记录每个帐户的余额、开户的支行以及每个帐户所有者访问该帐户的最近日期。另外,每个储蓄帐户有其利率,且每个支票帐户有其透支额。每笔贷款由某个分支机构发放,能被一个或多个客户所共有。每笔贷款用唯一的贷款号标识。银行需要知道每笔贷款所贷金额以及逐次支付的情况(银行将贷款分几次付给客户)。虽然贷款号不能唯一标识银行所有为贷款所付的款项,但可以唯一标识为某贷款所付的款项。对每次的付款需要记录日期和金额。

二、需求分析

这一部分主要是根据实验需求对银行系统需求中的实体、实体属性以及实体之间的关联进行确认,以便画出正确的概念模型。

2.1 实体确认

根据需求分析确认实体:银行员工、银行支行、客户、账户(其中:储蓄账户、支票账户是继承实体账户而来)、贷款、支付(弱实体)。

2.2 实体属性确认

银行员工:身份证号(pi)、姓名、电话号码、家庭地址、开始工作日期 银行支行:支行名、资产、城市

客户:身份证号、姓名、街道、所在城市 账户:账户号、余额、最近访问日期 支票账户:透支额 储蓄账户:利率 2.3 实体关系确认

账户和支行:N:1定义关系为Relationship_accout_bank 客户和贷款:M:N定义关系为Relationship_client_loan 客户和员工:M:1 定义关系为 Relation_client_staff 贷款和支行:1:N 定义关系为 Relationship_loan_bank 客户和账户:M:N 定义关系为 client__accout 贷款发放信息和贷款:N:1 定义关系为 Relationship_loan_pay 支行和员工:1:N 定义关系为Relationship_staff_bank

员工和员工:1:N 定义关系为 Relationship_lead

三、概念模型(CDM)

根据sybase power designer画出概念模型(CDM),如下图所示:

四、物理模型(PDM)

根据概念模型转化成物理模型(PDM),如下图所示:

数据库实验报告
TOP