数据库实验报告_第1页
数据库实验报告_第2页
数据库实验报告_第3页
数据库实验报告_第4页
数据库实验报告_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 PowerDesigner 的 CDM 应用1:实验目的使用PowerDesinger进行数据库概念模型设计,掌握CDM中的实体、实体属性、实体与实体之间联系的操作方法。2:实验内容建立一个“实验一练习”命名的Conceptual Data Model(CDM)文件,其中应包括的实体、实体的属性及实体之间的联系。3:实验结果4实验心得初次接触数据库原理实验,相对来说还是比较陌生,但老师讲解还相对比较清楚,并且实验报告写的十分清楚,只是遇到多建立了一个实体而无法删除的问题,通过同学的帮助也解决了,相对来说第一次实验还是比较顺利的。 实验二 PowerDesigner 的 PDM 应用1.

2、 实验目的用PowerDesinger的工具将CDM生成PDM过程,熟悉PDM工作区,为生成数据库中的物理的表打下基础。完成这个实验后,应该能够了解从CDM到PDM的转换过程,熟悉PowerDesinger的PDM工作区,使用工具选项板进行PDM对象设计。2. 实验内容从CDM生成PDM,设计结束后,利用PowerDesigner的“生成数据库”功能,产生数据库中各数据对象的定义,再运行MySQL的命令行客户端软件,打开test数据库,运行crebas.sql,同时进行中英文的转换,最后运行show tables命令查看表。3. 实验结果4. 实验心得经过本次实验,学会了用PowerDesin

3、ger的工具将CDM生成PDM过程,并且利用crebas.sql进行中英文的转换,最后利用show tables命令查看表,受益匪浅。实验 三Navicat for MySQL的使用和SQL语言数据定义语言DDL1. 实验目的了解Navicat for MySQL的启动,熟悉如何在Navicat for MySQL下配置数据库联接。了解DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,学会在Navicat for MySQL中用DDL语言进行对表、索引、视图的增加、删除和改动2. 实验内容1.启动Navicat for MySQL。2.在MySQL新建连接中完成连接参数配置

4、,并完成连接测试和保存连接参数。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 userrootlocalhost”的错

5、误提示,经过查找发现是MySQL没有正确安装,重装之后就可以正常的访问数据库,在本次实验中也学会了Navicat for MySQL的基础的查询使用以及简单的SQL语句的运行。实验 四 SQL语言数据定义语言DDL1:实验目的本次实验了解SQL语言中DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,掌握在Navicat for MySQL中用DDL语言进行对表、索引、视图的增加、删除和改动。掌握使用SQL语句增加或删除约束,加深对完整性概念的理解,达到灵活应用的目的。掌握使用SQL语句定义和删除同义词。2:实验原理在 Navicat for MySQL 中使用 CREATE

6、 命令完成对表、索引、视图、同义词 的创建,使用 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) NU

7、LL ,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 Cou

8、rdeAa;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.

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_ChoosebbAS SELECT Bb4 AS View_bb1,View_bb2 FROM chooseBb;CREATE VIEW View_ChoosebbAS SELECT B

10、b5 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。相应的SQ

11、L语句如下:DROP INDEX Index_bb2 ON ChooseBb;4:实验中遇到的问题及心得体会1、用Drop Table语句删除表CourseAa的时候,在SQL浏览框中输入语句并运行,发现左边项目栏中还是有CourseAa表的存在,但是确打不开CourseAa表,弄了很长时间,也不知道是什么情况,最后尝试刷新页面之后,发现语句运行正确,CourseAa表成功删除。2、由于理论课时查询语言之学到了表的查询,到后面实验中涉及视图的建立及查询,也不清楚是怎么回事,而且由于对查询语句的不熟悉,实验过程中进行缓慢,视图的部分是课下看书慢慢写的,没有截图。通过这次实验,初步了解了SQL语言

12、中DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,掌握在Navicat for MySQL中用DDL语言进行对表、索引、视图的增加、删除和改动。掌握使用SQL语句增加或删除约束。因为实验过程中对这些语句的不熟悉耽误课很长时间,还需课下多下工夫多看、多写。实验五 SQL语言数据操纵语言DML1:实验目的 SQL 语言的数据操纵功能通过 DML(数据维护语言)实现。DML 包括数据查询 和数据更新两种数据操纵语句。其中,数据查询指对数据库中的数据查询、统计、 分组、排序等操作;数据更新指数据的插入、更新和删除等数据维护操作。 本次实验了解 DML 语言的 INSERT、UPD

13、ATE、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 n

14、umeric(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'

15、);INSERT INTO test_temp VALUES('王九',10,'515.00','学生新区19-7-1');4、用INSERT INTOSELECTFROM语句,将test_temp表中的数据,插入到test中,其语句及其截图如下:INSERT INTO test SELECT *FROM test_temp;5、用UPDATE语句将test表中年龄小于20的数据,将其成绩更新为原来的成绩加5分,其语句和截图如下:UPDATE test SET Score=Score+5WHERE Age<=20;6用UPDATE语句将te

16、st表中居住在南福苑所有的学生年龄减少1岁,其语句和截图如下:、UPDATE test SET Age=Age-1WHERE 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 LIk

17、e'重邮宿舍%'4实验心得这次实验从实验原理还是实验操作来说还是相对简单的,但越是对简单的是就越容易犯迷糊,这次件表命名给了我很多启示,以后对细节还是要十分注意的。实验六SQL语言数据查询语言DQL1:实验目的 本次实验了解 SQL 语言的 SELECT 语句对数据的查询,学会在 Navicat for MySQL 中用 SELECT 语句对表中的数据进行简单查询、连接查询、嵌套查询和组 合查询。2:实验原理在 Navicat for MySQL 中使用 SELECT 语句从表中查询数据、统计数据及对 数据进行分组和排序等操作。3:实验代码及结果1.用 Create Table

18、 建立 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 语句的 betweenand表示查询条件,查询年龄在 2023 岁的学生信息。9.用 SELECT 语句的 COUNT()聚集函数,统计 Student 表中学生总人数。10

19、.分别用 SELECT 语句的 max()、min()、sum()、avg()四个聚集函数,计算 Choose表中 C1 课程的最高分、最低分、总分、平均分。max( ):Min( ):Sum( );avg( ):11.用 SELECT 语句对空值(NULL)的判断条件,查询 Course 表中先修课称编号为空值的课程编号和课程名称。12.用 SELECT 语句的连接查询,查询学生的学号、姓名、选修的课程名及成绩。13.用 SELECT 的存在量词 EXISTS,查询与“张三”在同一个学院学习的学生信息。14.用 SELECT 语句的嵌套查询,查询选修 C1 课程的成绩低于“张三”的学生的学号

20、和成绩。15.用 SELECT 语句的组合查询(UNION),查询选修了 C1 课程或者选修了 C3 课程的学生学号。16.用 SELECT 语句的组合查询(UNION)与 DISTINCT 短语,查询选修了 C1 课程或者选修了 C3 课程的学生学号,并取消重复的数据。4. 实验心得本次实验室相对于前几次来说比较困难的一次,因为语句刚学过,下去也没有及时去练习,对于很多还是比较困难,在本次实验中通过练习,让我了解 SQL 语言的 SELECT 语句对数据的查询,学会在 Navicat forMySQL 中用 SELECT 语句对表中的数据进行简单查询、连接查询、嵌套查询和组合查询。课下时间也

21、会多多练习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扩

22、展支持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 应用开发环境的建

23、立。实验八MySQL的存储过程1:实验目的存储过程分为两类:1.系统提供的存储过程;2.用户自定义存储过程。 存储过程具有的优点:1.存储过程允许标准组件式编程;2.存储过程能够实 现较快的执行速度;3.存储过程能够减少网络流量;4.存储过程可被作为一种安 全机制来充分利用。存储过程是可复用的组件!想象一下如果你改变了主机的语 言,这对存储过程不会产生影响,因为它是数据库逻辑而不是应用程序。存储过 程是可以移植的! 本次实验了解 MySQL 存储过程的创建、修改和删除的方法和步骤,掌握在 Navicat for MySQL中对存储过程的进行创建、修改和删除,掌握在MySQL Command L

24、ine 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中创建存储过程及其

25、调用,并传递参数对其进行调用测试.实验九MySQL的触发器和SQL语言数据控制语言DCL1:实验目的触发器是特定事件出现的时候,自动执行的代码块,类似于存储过程。触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的,由DBMS自动执行。触发器具有这些功能:1、允许/限制对表的修改;2、自动生成派生列,比如自增字段;3、强制数据一致性;4、提供审计和日志记录;5、防止无效的事务处理;6、启用复杂的业务逻辑。本次实验了解MySQL触发器的创建、修改和删除的方法和步骤,掌握在Navicat for MySQL中对触发器的进行创建、修改和删除,掌握触发器触发测试

26、的方法。2:实验内容1、创建触发器audit_student,该触发器对修改student表的时间、用户名记录到日志表中。2.执行五、教学过程中(三)实验内容的第二部分改造简单触发器,增加触发类型判断功能,验证触发器的改造和改造后的触发器触发测试。3.自行编写student表的触发器aduit_student_update,在对student表进行更新操作前触发,触发时,向student_log表写入触发用户、触发时间和触发类型。并对该新建进行触发测试。4.自行编写student表的触发器aduit_student_delete,在对student表进行删除操作后触发,触发时,向student

27、_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;Creat

28、e trigger audit_studentBeforeinsert On studentFor each rowBeginInsert into student_log(Who,whattime) Values (current_user,current_timestamp);End;输入如下语句对触发器进行INSERT触发测试,如图所示:对student表做一个INSERT操作:Insert into student values ('1992150033','吴思远',40);输入如下语句查看表student_log,检查触发器工作结果,表student

29、_log中数据如图所示:select * from student_log;输入如下语句,修改日志表结构,增加一个属性存放触发语句类型。如图所示:alter table student_log add (action varchar(20);修改触发器,记录触发语句类型。选中student表,单击右键,选择设计表,点击触发器选项卡,在定义中对INSERT进行编辑,如图所示:select * from student_log4:实验心得本次实验让我了解 MySQL 触发器的创建、修改和删除的方法和步骤,掌握在Navicat for MySQL 中对触发器进行创建、修改和删除的步骤,掌握了触发器触

30、发测试的方法。实验十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

31、 "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.

32、创建用户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的命令行客户端,创建一个简单的表,

33、切换到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,n

34、ame) 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

35、)是MySQL数据库系统中的一个逻辑工作单元,是完成一组数据库操作的程序执行单元;锁(Lock)是MySQL数据库系统中并发控制的常用方法.本次实验了解MySQL事务的设置、提交和回退的方法和步骤,掌握MySQL Command Line Client中如何进行相关操作。了解MySQL的表锁定与锁定解除,掌握MySQL Command Line Client中如何进行相关操作。2:实验内容启动MySQL的命令行客户端,输入密码mysql(小写);执行五、教学过程中(三)实验内容的1部分,学习和验证MySQL的事务;在实验步骤2的基础上,在数据bankrecord的表record中,添加一个元组

36、id为3的张六,初始余额2万;自己写事务完成如下操作:李四向张六转账5千,然后取消该转账;王五向李四转账1万5,然后确认转账;执行五、教学过程中(三)实验内容的2部分,学习和验证MySQL的锁;在步骤4的基础上,在数据库bookrecord的表sellrecord中,添加一个元组id为2000的书籍Oracle数据库实用教程库,存为2本;在当前MySQL命令行客户端里面模拟李四购书,另外启动一个MySQL命令行客户端,模拟王五购书;要求使用写锁先锁定后,再修改,因为库存有两本,所以李四和王五都能买到,库存为0,并且两人的名字都出现在buyername3:实验结果create database

37、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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论