第一篇:数据库原理实验报告
南 京 晓 庄 学 院
《数据库原理与应用》
课程实验报告
实验二 数据库的创建、管理、备份及还原实验
所在院(系): 数学与信息技术学院 班级:
学号:
姓名:
1.实验目的
(1)掌握分别使用SQL Server Management Studio图形界面和Transact-SQL语句创建和修改数据库的基本方法;
(2)学习使用SQL Server查询分析窗口接收Transact-SQL语句和进行结果分析。
(3)了解SQL Server的数据库备份和恢复机制,掌握SQL Server中数据库备份与还原的方法。
2.实验要求
(1)使用SQL Server Management Studio创建“教学管理”数据库。
(2)使用SQL Server Management Studio修改和删除“教学管理”数据库。(3)使用Transact-SQL语句创建“教学管理”数据库。
(4)使用Transact-SQL语句修改和删除“教学管理”数据库。(5)使用SQL Server Management Studio创建“备份设备”;使用SQL Server Management Studio对数据库“教学管理”进行备份和还原。(6)SQL Server 2005数据库文件的分离与附加。(7)按要求完成实验报告
3.实验步骤、结果和总结实验步骤/结果
(1)总结使用SQL Server Management Studio创建、修改和册除“TM”(教学管理)数据库的过程。
一、使用SQL Server Management Studio创建数据库的步骤如下:
a.在磁盘上新建一个目录,如在C:盘中新建“MyDB“目录
b.在wimdows系统“开始“菜单中,依次选取”程序->Microsoft SQL Server 2005->SQL Management Studio” ,打开SQL Server Management Studio并连接到SQL Server 2005服务。
c.在“对象资源管理器“中单击SQL Server服务器前面的“+”号或直接双击数据库名称,展开该服务器对象资源树形结构,然后右键点击“数据库”文件夹,在弹出的快捷菜单上选择“新建数据库”选项
d.在打开的“新建数据库”对话窗口中输入数据库名称“教学管理”,在该窗口中“数据库文件”设置部分可以修改数据文件和日志文件的文件名、初始大小、保存路径等。
e.单击“确定”按钮,创建“教学管理”数据库。
二、使用SQL Server Management Studio修改和删除“教学管理”数据库
1、使用SQL Server Management Studio图形界面直接修改“教学管理”数据库名为“TM”
2、使用SQL Server Management Studio图形界面查看和修改数据库属性 a.在快捷菜单中选择“属性”项进入
使用
3.使用SQL Server Management Studio图形界面删除数据库 在第一幅图中的快捷菜单中选择“删除”项
(2)总结在实验中为创建、修改和删除“教学管理”数据库所编写的各条T-SQL语句及其完成了什么功能。
1、创建:
CREATE DATABASE 教学管理 ON PRIMARY(Name=JXGL, FileName='C:MyDBJXGL_Data.mdf', Size=3MB, MaxSize=100MB, filegrowth=1MB)LOG ON(Name=JXGL_Log, FileName='C:MyDBJXGL_Log.ldf', Size=1MB, MaxSize=UNLIMITED, FileGrowth=10%);点击执行
2、使用Transact-SQL语句修改和删除“教学管理”数据库
增加数据文件。例如,在数据库“教学管理”中增加数据文件JXGL_EXT,需要在数据库查询编辑器中输入代码:
在增加数据文件之前,要先获得修改权限,即alter database数据库句法,然后再添加数据文件。具体参数也有5项,与创建数据文件相同,在添加数据文件项中,name项是必不可少的。
编写T—SQL语句,删除“教学管理”数据库中的数据文件或日志文件,注意不能删除非空文件。如删除刚添加到数据库中的数据文件“jxgl_ext1” 实例代码如下: ALTER DATABASE 教学管理
REMOVEFILE jxgl_ex1——删除数据库文件时应指定其逻辑名称
SQL语句删除数据库删除了数据库“教学管理” drop database 教学管理
检查所输入SQL语句有无语法错,确认正确后, 按F5键或单击“执行”按钮,这样就删除了数据库“教学管理”。
(3)总结使用SQL Server Management Studio备份与还原数据库的几种方法。
1、创建“备份设备”
2、对数据库“TM”进行备份
1)打开 SQL Server Management Studio,右击需要备份的数据库,从弹出的快捷菜单中依次选择【任务】--【备份】命令,打开【备份数据库】对话框。如下图所示:
(2)在【备份数据库】对话框的【常规】页面中根据需要选择需要备份的【数据库】,在本示例选择备份数据库.接下来还可以选择【备份类型】、备份集的名称等相关参数。默认情况下,备份操作会所数据库中的数据备份到 SQL SERVER 数据库的默认工作目录
(3)切换【备份数据库】对话框中的【选项】页面。在此页面中,可以根据需要进行相应的设置。例如,可以根据需要将现有数据备分到现有的备份集中,也可使用数据库中的当前数据覆盖现有的备份集。除此之外。还可以设置备份操作的可靠性选项。
单击【确定】按钮,即可执行备份操作。一旦备份操作结束。SQL SERVER 数据库系统将弹出名为 Microsoft SQL Server Management Studio 的对话框,提示备份已成功完成。
3、使用“TM”数据库完整备份还原数据库到备份完成时点的数据库状态 通过 SQL Server Management Studio 还原数据库
使用 SQL Server Management Studio 进行数据还原操作的步骤如下所示:
(1)右击【数据库】节点,从弹出的快捷菜单中选择【还原数据库】命令,打开【还原数据库】对话框,如下图所示:
在[还原数据库]对话框中的[常规]页面中,选择[目标]下拉列框中的[源数据库]选项。
[选择用于还原的备份集]列表框中将显示用于还原TM数据库的可用备份集,备份集,且[目标数据库]将会被同时设置为TM
在“还原数据库”的窗口中选择“选项”页,在“还原选项”选项区域中选择“覆盖现有数据库”复选框,单击确定。还原操作完成后,打开“TM”数据库,可以看到TM数据库已进行还原
4.实验思考:
①SQL Server 2005物理数据库包含了哪能几种类型的文件以及它们的作用? SQL Server2005数据库具有三种类型的文件:
主数据文件
主数据文件是数据库的起点,指向数据库中的其他文件。每个数据库都有一个主数据文件。主数据文件的推荐文件扩展名是.mdf。它将数据存储在表和索引中,包含数据库的启动信息,还包括一些系统表,这些表记载数据库对象及其他文件的位置信息。
次要数据文件
除主数据文件之外的所有其他数据文件都是次要数据文件。某些数据库可能不含有任何次要数据文件。次要数据文件的推荐文件扩展名是.ndf。
日志文件
SQL Server具有事物功能,日志文件包含着用于恢复数据库的所有日志信息。每个数据库必须至少有一个日志文件,当然也可以有多个,建立数据库时,SQL Server会自动建立数据库的日志文件。日志文件的推荐文件扩展名是.ldf。②数据库备份与转储包含那些原理?
备份(backup)实际就是数据的副本,备份的目的是为了防止不可预料的数据丢 失和应用错误。
转储(restore)是指当数据文件或控制文件出现损坏时,将已备份的副本文件还原到原数据库的过程
数据库转存实现热备份恢复功能。通过修改初始化文件里的路径,实现转存。启 动到MOUNT状态下,将所有数据文件和日志文件通过ALTER DATABASE RENAME FILE '原始路径/名称' TO '当前路径/名称';然后将数据库打开,重建TEMP tablespace即可。数据转储是数据库恢复中采用的基本技术。
所谓转储即dba定期地将数据库复制到磁带或另一个磁盘上保存起来的过程。当数据库遭到破坏后可以将后备副本重新装入,将数据库恢复到转储时的状态。静态转储:在系统中无运行事务时进行的转储操作。静态转储简单,但必须等待 正运行的用户事务结束才能进行。同样,新的事务必须等待转储结束才能执行。显然,这会降低数据库的可用性。动态转储:指转储期间允许对数据库进行存取或修改。动态转储可克服静态 转储的缺点,它不用等待正在运行的用户事务结束,也不会影响新事务的运行。但是,转储结束时后援副本上的数据并不能保证正确有效。因为转储期间运行的 事务可能修改了某些数据,使得后援副本上的数据不是数据库的一致版本。为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件(log file)。这样,后援副本加上日志文件就能得到数据库某一时刻的正确状态。转储还可以分为海量转储和增量转储两种方式。海量转储是指每次转储全部数据库。
增量转储则指每次只转储上一次转储后更新过的数据。
从恢复角度看,使用海量转储得到的后备副本进行恢复一般说来更简单些。但如 果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。
③如果数据或日志文件非空不能删除,查找SQL Server中缩小文件大小的方法。
在SQL Server中,所有对数据库执行的更新操作都会记录在数据库的事务日志文件中,除非将数据库设为可自动收缩的或手动的对数据库进行了收缩,否则事务日志文件将一直增长,直到达到事先设定的日志文件增长上限或用尽所有可用的磁盘空间。如果当前的数据库文件或日志文件过大,可以使用以下两个命令对其进行收缩: DBCC SHRINKDATABASE:收缩指定数据库的所有数据和日志文件的大小 DBCC SHRINKFILE:收缩数据库的某个指定数据或日志文件的大小
这两个命令可以释放数据库中的空闲空间,并将数据库或指定的数据库文件收缩到指定的大小,但收缩后的数据文件或日志文件的大小不会小于文件中现存的有效数据所占空间的大小。在使用以上命令收缩日志文件的时候需要注意,已写入数据库但未被截断的事务日志记录是 不会被收缩的,因为虽然这部分日志记录的信息已经写入数据库文件,但在使用事务日志备份进行数据库还 原的时候,还将用到其中的信息。
对于使用简单恢复模型的数据库,事务日志会在每次处理检查点(CheckPoint)时自动被截 断。
对于使用完全恢复模型或大容量日志记录恢复模型的数据库,事务日志只有在执行日志备份(BACKUP LOG)时才会被截断,这时事务日志中记录的信息被写入事务日志备份文件,而它们所占用的这部分空间被标记为可用(即被截断)。
截断事务日志并不会使日志文件变小,但可以将其中的部分空间释放供以后写入新的日志记录使用。若要减少日志文件的物理大小,则要使用上面提到的
在执行BACKUP LOG语句的时候,还可以使用WITH NO_LOG(或WITH TRUNCATE_ONLY,含 义相同)参数,这时并不真正备份事务日志,而只是截断事务日志中的非活动部分
(这和普通的BACKUP LOG语句作用相同)。这适合于剩余磁盘空间不够进行事务日志备份或不打算保 留事务日志中的非活动部分用于数据库恢复的情况。避免事务日志文件增长过快以致用尽所有磁盘空间的现象发生
一种办法是将数据库设为使用简单恢复模型,这样可以使SQL Server周期性的自动截断事务日志的
非活动部分,并回收其占用的空间供以后写入事务日志记录使用。但这将使数据库无法利用事务日志备份还原到即时点,降低了数据库的可靠性,因此一般不应用于生产型数据库。对于生产型数据库,推荐的做法是使用完全恢复模型,并定期进行数据库的完全备份和事务日志备份。例 如每周执行一次完全备份,每天执行一次事务日志备份,这可以通过SQL Server企业管理器中的数据库 维护计划向导很方便的实现(一般可以设为在每天夜里业务不繁忙的某个时刻自动执行备份)。
通过定期执行数据库的事务日志备份,可以避免日志文件的迅速增大,而使其保持一个比较稳定的大小。
虽然数据库备份文件也会占用很多磁盘空间,但随时可以将这些文件移到其他磁盘上或在不需要它们的时候将其删除,而且可以在出现故障或误操作的时候方便的进行数据库的还原。
由于数据文件的大小是随数据库中数据量的增长而增长的,数据库中已删除的数据所占的空间可以供新插 入的数据使用;而在定期执行了事务日志的备份后,我们可以将日志文件的大小控制在一个比较合理的范 围。因此,一般不需要对数据库进行收缩,也不推荐将数据库设为自动收缩模式。
减小事务日志文件大小的
首先在该数据库中执行CHECKPOINT命令,然后将该数据库分离(Detach),再将与其对应的数据库日志 文件(.ldf文件)改名或删除或移动到其他目录下,然后执行sp_attach_single_file_db存储过程或在企业管 理器中重新将其附加(Attach)。由于找不到原来的日志文件,SQL Server将自动为该数据库建立一个大 小只有504K的日志文件。但这种方法必须暂时将数据库脱机,因此一般不适宜在生产环境中使用。
1、建议首先备份数据库(但不是必需的):
BACKUP DATABASE database_name TO backup_device
2、备份事务日志:
BACKUP LOG database_name TO backup_device 如果不需要当前事务日志中的记录进行数据库还原或没有足够的空间进行事务日志备份的 的话,也可仅执行以下命令截断事务日志: BACKUP LOG database_name WITH NO_LOG
3、收缩事务日志文件:
DBCC SHRINKFILE(log_file_name)其中log_file_name是事务日志文件的逻辑名称,可以在企业管理器中数据库属性的“事务 日志”页中看到(如Northwind数据库的默认事务日志文件逻辑名称为Northwind_log)。
4、如果日志文件仍然较大的话,可以尝试重复执行一次 BACKUP LOG WITH NO_LOG和DBCC SHRINKFILE命令。
5、如果这时仍没有明显的效果,请执行DBCC OPENTRAN(database_name)检查当前数据库中是否存在长时间未提交的活动事务。有必要的话,可以断开这些连接并重新尝试截断事务日志和收缩日志文件。
6、事务日志文件收缩完成后,建议立即执行一次数据库的完全备份并根据实际需要制定适当的数据库备份计划。④思考后续实验过程中,你计划采用哪种方法备份自己的数据库实验操作结果?并说明为什么采用该方法。
答:数据库备份有四种类型
完全备份 事务日志备份 差异备份
文件备份 采用完全备份
完全备份就是指对某一个时间点上的所有数据(包含用户表、系统表、索引、视图和存储过程等所有数据库对象)或应用进行的一个完全拷贝。
实际应用中就是用一盘磁带对整个系统进行完全备份,包括其中的系统和所有数据。
这种备份方式最大的好处就是只要用一盘磁带,就可以恢复丢失的数据。因此大大加快了系统或数据的恢复时间。
第二篇:数据库原理实验报告
南 京 晓 庄 学 院
《数据库原理与应用》
课程实验报告
实验一 SQL Server 2005常用服务与实用工具实验
所在院(系): 数学与信息技术学院 班级:
学号:
姓名:
1.实验目的
(1)了解Microsoft 关系数据库管理系统SQL Server的发展历史及其特性。(2)了解SQL Server 2005的主要组件、常用服务和系统配置。
(3)掌握Microsoft SQL Server Management Studio 图形环境的基本操作方法。了解使用“SQL Server 2005 联机从书”获取帮助信息的方法;了解“查询编辑器”的使用方法;了解模板的使用方法。
2.实验要求
(1)收集整理Microsoft关系数据库管理系统SQL Server的相关资料,总结其发展历史及SQL Server 2005主要版本类别和主要功能特性。
(2)使用SQL Server配置管理器查看和管理SQL Server 2005服务。
(3)使用Microsoft SQL Server Management Studio连接数据库;使用SQL Server帮助系统获得所感兴趣的相关产品主题/技术文档。
(4)使用Microsoft SQL Server Management Studio“查询编辑器”编辑并执行Transact-SQL查询语句。
(5)查看Microsoft SQL Server 2005模板,了解模板的使用方法。(6)按要求完成实验报告。
3.实验步骤、结果和总结实验步骤/结果
(1)简要总结SQL Server系统发展历史及SQL Server 2005主要版本类别与主要功能特性。
(2)总结SQL Server Management Studio的主要操作方法。
(3)总结查询编辑器的功能和主要操作方法,并举例说明。
(4)总结“模板”的使用方法,并举例说明。
4.实验思考:
查询相关资料,简要描述SQL Server 2005的主要服务。
第三篇:数据库原理上机实验报告
广西科技大学理学院《数据库原理》上机实验报告
实验序号与实验名称:实验九:用户管理和权限管理
姓名:薛亚妮学号:201000901045
专业班级:信计101实验日期:2012年 12月15日
一、实验目的:理解和体会数据库安全性的内容,加强对DBMS功能的认识。
二、实验内容:数据库的用户管理和操作权限管理。
三、程序源代码:
1、对象操作授权
sp_grantdbaccess 201000901035
grant select on 产品1045 to 201000901035
grant create view,create table to 201000901035
grant execute on sp_getgoods to 2010009010352、在授权过程中体会GRANT命令中WITH GRANT OPTION 短语的作用。
--用户201000901045--
grant select on产品1045 to [201000901035] WITH GRANT OPTION
--用户201000901035--
grant select on 产品1045 to [201000901035]
As [201000901035]
3、分情况收回授权,并体会REVOKE命令中GRANT OPTION FOR和CASCADE
--短语的作用
revoke select on 产品1045 from 201000901035
revoke create view,create table to 201000901035
revoke grant option for select on 产品1045 from 201000901035 CASCADE
四、实验结果分析与总结
安全性控制是数据库管理员(或系统管理员)的一个重要任务,他要充分利用数据库管理系统的安全功能,保证数据库和数据库中数据的安全。
授权登录用户为当前数据库用户 :
sp_grantdbaccess [@loginame =] login
[,[@name_in_db =] name_in_db]
使一个登录用户成为数据库用户只是授权的第一步,数据库管理员可以进一步为能够连接到自己所管理数据库的用户在该数据库上授予所需要的权限.收回权限:收回语句授权 :REVOKE { ALL | statement_list } FROM name_list
收回对象授权 :
REVOKE [GRANT OPTION FOR]
{ ALL [ PRIVILEGES ] | permission_list }
{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]
| ON stored_procedure| ON user_defined_function }
FROM name_list
[ CASCADE ]
[ AS { group | role } ]
禁止语句权限: DENY { ALL | statement_list } TO name_list
禁止对象权限: DENY { ALL [ PRIVILEGES ] | permission_list }
{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]
| ON stored_procedure| ON user_defined_function }
TO name_list
[CASCADE]
第四篇:数据库原理及技术实验报告2
《数据库原理及技术》实验报告
姓名: 莫鸿斌
学号:201601030137
班级:2016级计算机科学与技术
实验日期: 2018-3-16
一、实验项目
了解SQL Server2012常用组件
二、实验目的
1.掌握SQL Server Management Studio的运用; 2.掌握SQL Server 2012常用组件;
3.如何使用SQL Server Management Studio创建数据库及表。
三、实验内容
1.了解SQL Server2012常用组件;
2.使用SQL Server management studio创建数据库factory,要求将数据库文件factory_data.MDF存放在E:data下面,其文件初始大小5MB,自动按5MB增长,将事务日志文件factory_log.LDF存放在E:data目录下,其文件大小按1MB自动增长。3.在数据库factory下创建如下表: 职工表(职工号(int),姓名(char(10)),性别(char(2)),出生日期(datetime),党员否(bit),参加工作时间(datetime),部门号(int)),其中职工号作为主键。部门表(部门号(int),部门名(char(10)),其中部门号作为主键。工资表(职工号(int),发放年份(int),发放月份(int),工资(decimal(6,1))),其中职工号、年份、月份作为主键。
4.建立第三步创建的表之间的参照完整性规则。5.在上述表中输入数据,每个表至少10条记录。6.备份数据库,考走以备下次试验使用。
四、实验环境
安装有SQL Server2008的PC一台。
五、实验步骤及结果
1.了解SQL Server2012常用组件;
2.使用SQL Server management studio创建数据库factory;要求将数据库文件factory_data.MDF存放在E:data下面,其文件初始大小5MB,自动按5MB增长,将事务日志文件factory_log.LDF存放在E:data目录下,其文件大小按1MB自动增长。
3.在数据库factory下创建如下表: 职工表(职工号(int),姓名(char(10)),性别(char(2)),出生日期(datetime),党员否(bit),参加工作时间(datetime),部门号(int)),其中职工号作为主键。部门表(部门号(int),部门名(char(10)),其中部门号作为主键。工资表(职工号(int),发放年份(int),发放月份(int),工资(decimal(6,1))),其中职工号、年份、月份作为主键。
4.建立第三步创建的表之间的参照完整性规则。
5.在上述表中输入数据,每个表至少10条记录。
6.备份数据库,考走以备下次试验使用。
六、结论及思考
第五篇:数据库实验报告
实验一 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为2000的书籍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 为 2000 的书籍 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 中如何进行相关操作。