数据库实验-华中科技大学-11页word资料.doc

上传人:1595****071 文档编号:34065419 上传时间:2022-08-12 格式:DOC 页数:11 大小:273.50KB
返回 下载 相关 举报
数据库实验-华中科技大学-11页word资料.doc_第1页
第1页 / 共11页
数据库实验-华中科技大学-11页word资料.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《数据库实验-华中科技大学-11页word资料.doc》由会员分享,可在线阅读,更多相关《数据库实验-华中科技大学-11页word资料.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流数据库实验-华中科技大学【精品文档】第 11 页数据库实验报告Xxxx2012-6-1一、实验目的掌握SQL Server 2000 的工具使用掌握DDL的使用方法 掌握DML的使用方法掌握SELECT命令 使用方法掌握DCL的使用方法 掌握数据库的备份和恢复二、实验原理图6 Server Manager 窗口1 SQL Server 2000的工具1) 服务管理器(Server Manager)图7 服务管理器在任务栏中的状态在进行任何数据库操作前,都必须启动服务器,Server Manager可以方便启动、停止、暂停本地或远程服务器。图6 是打开的S

2、erver Manager 窗口。适当配置窗口中的选项,点击“启动”按钮即可启动SQL Server服务器。SQL Server 2000 安装以后,每次开机时,Windows都会自动启动服务管理器。在任务栏上有一个图标表示服务管理器的状态。如图7所示。2) SQL Server 2000 查询分析器(Query Analyzer)图11 查询分析器查询分析器是一个重要工具,实验中的所有SQL语言命令均需在查询分析器中输入、编辑运行。从Program SQL Server - Query Analyzer 可以打开查询分析器,如图11所示。它是一个多文档程序,在其上可以同时打开多个查询程序(窗

3、口),在查询分析器的工具栏中的绿色4按钮为执行当前窗口中SQL语句按钮。点击它即可逐行执行。2.DDL使用方法 1) 数据库创建在查询分析器中执行下列语句即可在默认的设备上创建新的数据库sch。CREATE DATABASE database_name 2) 基本表的建立创建基本表的命令为:CREATE TABLE table_name,在该命令中定义主码和外码时,可以使用列约束(Column Constraint)或表约束(Table Constraint)子句。创建基本表时,应先选择包含表的数据库。3) 视图的建立视图是组成数据库体系结构三级模式两级映像结构中的外模式的基本单元,SQL-S

4、erver的视图定义命令为: CREATE VIEW view-name AS SELECT statement视图是用于定义终端用户数据来源的。在视图定义中可以使用复杂的SELECT命令。机视图。3.DML使用方法SQL的DML包括插入(INSERT)、删除(DELETE)、修改(UPDATE)等命令。DML命令的执行是可能造成数据库不一致的根源。因此,每一条语句在执行前,SQL-Server都要验证语句是否符合完整性要求,包括实体完整性、参照完整性、用户定义完整性。1)INSERT命令SQL语言的插入命令:INSERT INTO table-name (column-list) VALUE

5、S(values-list),可以完成数据输入功能。注意:在执行过程中,如果有一条语句出错误,再次执行时,在出错语句前面的语句就会被拒绝执行。因为,在查询分析器中的命令在执行时按顺序逐条执行,当执行到出错语句时停止执行,此时,在出错语句的前面各条语句的结果已经存入表中,故当重复执行时,它们违反了实体完整性。2) DELETE命令SQL的删除命令为:DELETE FROM table-name WHERE condition-expression;执行DELETE命令后,系统会删除满足命令中条件表达式的所有元组。这种删除只是逻辑的。因此,当再次插入一个与被删除的元组具有相同关键字的元组时,被认为

6、违反了实体完整性。3) UPDATE命令 SQL的修改命令为:UPDATE table-name SET column-name = expression WHERE condition-expression;执行UPDATE命令后,系统会按照SET子句修改满足命令中条件表达式的所有元组。如果使用修改命令更新关键字的值,而该关键字在其他表中作为外码存在时,操作可能违反参照完整性。系统将拒绝执行。4) SELECT命令SELECT 命令是SQL语言中使用最频繁的命令,其变化形式繁多,灵活运用SELECT 命令可以完成任意复杂的查询要求。SELECT 命令的基本语法为:SELECT query_e

7、xpression|column-list|* FROM table_name_list|view_name_listWHERE condition-expressionGROUP BY HAVING condition-expressionORDER BY order_expression| column ASC|DESC,n;由于SELECT 命令非常复杂,上面的语法描述还无法完全表达,请参考Transaction SQL 的帮助。具体查询方法参考教材。4.DCL 的使用方法1)SQL Server 登录认证 新登录的创建新的登录者可以是WINDOWS的用户或用户组,也可以是使用SQL S

8、erver认证模式的登录帐号,设定WINDOWS的用户为SQL Server登录者时使用sp_grantlogin。创建新的使用SQL Server认证模式的登录帐号时使用sp_addlogins。 登录的删除删除基于使用SQL Server认证模式的SQL Server的登录可以使用sp_droplogin。但是,如果与该登录匹配的数据库用户仍存在sysuser表中,则不能删除该登录账号。删除WINDOWS的用户或用户组时,使用sp_revokelogin,拒绝WINDOWS的用户或用户组连接到SQL Server时,使用sp_decnylogin。 登陆的查看sp_helplogins可以

9、用来显示SQL Server的所有登录者的信息。如图29是显示数据库ems 的所有登录者信息的代码。2) 用户管理SQL Server利用下列系统过程管理数据库用户:sp_adduser sp_grangdbaccess sp_dropuser Sp_dropuser sp_revokedbaccess sp_helpuser 。其中sp_adduser Sp_dropuser 是为了保持与以前版本相兼容,因此不主张使用,在SQL Server 2000中,建议使用sp_grangdbaccess sp_revokedbaccess 。 创建新数据库用户所有的数据库用户(除了guest)均必须

10、与某一登录账号相匹配,因此在使用系统过程创建新数据库用户时,不但要指出新数据库用户的名称,还必须指出一个已经存在的登录账号。系统过程sp_grantdbaccess用于为SQL Server 登录用户或NT用户或用户组建立相匹配的数据库用户帐号。 删除数据库用户系统过程sp_revokedbaccess用于将数据库用户从当前数据库中删除,删除后与其匹配的登录即无法再访问该数据库了。 查看数据库用户信息sp_helpuser可用来显示当前数据库的指定用户信息。3) 用户授权管理对于登录到SQL Server的合法数据库用户,必须获得对数据库操作的授权。在SQL Server中包括两种类型的权限,

11、即对象权限和语句权限。对象权限总是针对表、视图、存储过程而言,它决定了能对这些对象执行哪些操作(如UPDATE DELETE INSERT SELECT EXECUTE)。不同类型的对象支持不同类型的操作,表3为各种对象的可能操作列举。表3 :对象权限总结表对 象操 作表SELECT UPDATE DELETE INSERT REFERENCE 视图SELECT UPDATE DELETE INSERT 存储过程EXECUTE列UPDATE SELECT 表4 语句权限总结表语句含义CREATE DTATBASE创建数据库CREATE TABLE创建表CREATE VIEW创建视图CREATE

12、 RULE创建规则CREATE DEFAULT创建缺省CREATE PROCEDURE创建存储过程BACKUP DATABASE备份数据库BACKUP LOG创建事务日志语句权限指数据库用户执行某种语句的操作权,如创建数据库、表、存储过程等。这些语句虽然(如CREATE 命令)包含有操作对象,但这些对象在操作前并不存在于数据库中。表4为所有权语句清单。5.数据库的备份和恢复备份是指对SQL Server 数据库或事务日志进行拷贝,如果数据库因意外而损坏,备份文件可以用来恢复数据库。SQL Server 2000 中有四种备份类型,分别是:数据库备份、事务日志备份、差异备份、文件和文件组备份。在

13、使用是可以根据实际情况选择一种或几种的混合应用。1)备份设备在进行备份以前必须创建备份设备。备份设备是用来存储数据库、事务日志、文件和文件组备份的存储介质。可以是磁盘、磁带或管道。SQL Server 2000 提供了两种创建备份的途径,即可视化方式和命令方式。用命令备份数据库使用BACKUP 命令进行备份操作。l 备份完整数据库/* EXEC sp_addumpdevice DISK,backupdevice_name, d:backupdevems.bak目标路径*/BACKUP DATABASE database TO backupdevice_name2)恢复数据库使用命令恢复数据库数

14、据库恢复命令为:RESTORE DATABASE/LOG。二、实验内容实验1 基本表的创建、数据插入i. 建立教学管理中的三个基本表:Students(SNO,SNAME,AGE,SEX) 学生(学号,姓名,年龄,性别)Courses(CNO,CNAME,SCORE,PC) 课程(课程号,课程名,学分,先行课号)SC(SNO,CNO,GRADE) 选修(学号,课程号,成绩)(2)用INSERT 命令输入数据。表6 基本表Students的数据: 表7基本表Courses的数据C1 数学 4 MC2 英语 8 MC3 数据结构 4 FC4 数据库 3.5 FC5 网络 4 MS1 LU 20 M

15、S2 YIN 19 MS3 XU 18 FS4 QU 18 FS6 PAN 14 MS8 DONG 24 M表8 基本表SC的数据(空格为未选修,NULL为选修但还未有成绩): SNOCNOS1S2S3S4S6S8C1859089848887C273NULL86827585C3888090NULLC48985NULL9288C573NULL87实验2:数据查询(1) 列出选修课程号为C2的学生学号与姓名。ii. 检索选修课程名为“数学”的学生学号与姓名。iii. 检索没有选修C2课程的学生姓名与年龄。iv. 检索选修全部课程的学生姓名。实验3:数据修改、删除(1) 把C2课程的非空成绩提高10

16、。(2) 在SC表中删除课程名为“物理”的成绩所对应的元组。(3) 在S和SC表中删除学号为S8的所有数据。实验4:视图的操作(1) 建立男生学生的视图,属性包括学号,姓名,选修课程名和成绩。(2) 在男生视图中查询平均成绩大于80分的学生学号和姓名。实验5:库函数,授权控制(1) 计算每个学生选修课程的门数、平均成绩。(2) 建立一个合法的用户,将SC表的查询权限授予该用户。(3) 使用GRANT语句,把对基本表students、Courses、SC的使用权限授予其他用户。实验6:数据库的备份、恢复(1) 使用完全备份将你的实验数据库备份到软盘。(2) 删除你所建立的数据库。(3) 恢复你的

17、数据库。(4) 在恢复后的数据库上撤销你建立的基本表和视图。三、实验结果及代码实验1 基本表的创建、数据插入i. 由上分析数据库数据定义如下,下划线为主键,Students(SNO,SNAME,AGE,SEX) Courses(CNO,CNAME,SCORE,PC) SC(SNO,CNO,GRADE) 外键为sno,cno代码为:create database schuse sch;gocreate table students(sno char(9) primary key, sname char(20) not null, age char(3) , sex char(6);create

18、table courses(cno char(9) primary key, cname char(20) not null, score int , pc char(3);create table sc(sno char(9) foreign key references students(sno), cno char(9), grade int, foreign key(cno) references courses(cno);(2)用INSERT 命令输入数据。 根据表格输入数据代码为:use sch;goinsert into students values(S1,LU,20,M);i

19、nsert into students values(S2,YIN,19,M);insert into students values(S3,XU,18,F);insert into students values(S4,QU,18,F);insert into students values(S6,PAN,14,M);insert into students values(S8,DONG,24,M);insert into Courses values(C1 ,数学 , 4 , M);insert into Courses values(C2 ,英语 , 8 , M);insert into

20、 Courses values(C3 ,数据结构 , 4 , F);insert into Courses values(C4 ,数据库 , 3.5 , F);insert into Courses values(C5 ,网络 , 4 , M);insert into SC values(S1 ,C1 , 85);insert into SC values(S2 ,C1 , 90);insert into SC values(S3 ,C1 , 89);insert into SC values(S4 ,C1 , 84);insert into SC values(S6 ,C1 , 88);in

21、sert into SC values(S8 ,C1 , 87);insert into SC values(S1 ,C2 , 73);insert into SC values(S2 ,C2 , NULL);insert into SC values(S3 ,C2 , 86);insert into SC values(S4 ,C2 , 82);insert into SC values(S6 ,C2 , 75);insert into SC values(S8 ,C2 , 85);insert into SC values(S1 ,C3 , 88);insert into SC value

22、s(S2 ,C3 , 80);insert into SC values(S6 ,C3 , 90);insert into SC values(S8 ,C3 , NULL);insert into SC values(S1 ,C4 , 89);insert into SC values(S2 ,C4 , 85);insert into SC values(S4 ,C4 , NULL);insert into SC values(S6 ,C4 , 92);insert into SC values(S8 ,C4 , 88);insert into SC values(S1 ,C5 , 73);i

23、nsert into SC values(S2 ,C5 , NULL);insert into SC values(S8 ,C5 , 87);结果:其他均已成功输入数据实验2:数据查询(1) 列出选修课程号为C2的学生学号与姓名。 代码为: 结果为:use sch;goselect sc.sno,sname from students,scwhere o=C2 and sc.sno=students.sno(2) 检索选修课程名为“数学”的学生学号与姓名。代码为: 结果为:use sch;goselect sc.sno,sname from students,sc,courseswhere a

24、me=数学 and o=o and students.sno=sc.sno(3) 检索没有选修C2课程的学生姓名与年龄。代码为: 输出结果:use sch;goselect sname,agefrom studentswhere not exists(select * from sc where o=c3 and sno=students.sno);(4) 检索选修全部课程的学生姓名。代码为: 输出结果:use sch;goselect snamefrom studentswhere not exists(select * from courses where not exists( sele

25、ct * from sc where sno=students.sno and cno=o);实验3:数据修改、删除(1) 把C2课程的非空成绩提高10。代码为:update scset grade=grade*1.1where o=c2 and o is not null查询c2行代码结果如下成绩均提高10%(2) 在SC表中删除课程名为“物理”的成绩所对应的元组。代码为:delete from SCwhere cno in (select cno from courses where cname=物理)结果:影响行为0(3) 在S和SC表中删除学号为S8的所有数据。代码分别为:delete

26、 from scwhere sc.sno=s8delete from studentswhere students.sno=s8实验4:视图的操作(1) 建立男生学生的视图,属性包括学号,姓名,选修课程名和成绩。代码为:create view student_m(sno,sname,cname,grade)asselect students.sno,students.sname,cname,gradefrom sc,students,courseswhere students.sno=sc.sno and o=o and sex=M(2) 在男生视图中查询平均成绩大于80分的学生学号和姓名。代

27、码为:select distinct students.sno,students.snamefrom student_m,studentswhere student_m.sno=students.sno and grade80结果为:(s8信息已在前面删除)实验5:库函数,授权控制(1) 计算每个学生选修课程的门数、平均成绩。代码为:select students.sno,students.sname,count(cno) 选修门数,avg(grade) 平均成绩from students,scwhere students.sno=sc.sno group by students.sno,sn

28、ame输出结果:(2) 建立一个合法的用户,将SC表的查询权限授予该用户。use schgo exec sp_addlogin sch,schuse schgoexec sp_grantdbaccess sch,schGRANT SELECTON SCTO sch;(3) 使用GRANT语句,把对基本表students、Courses、SC的使用权限授予其他用户。use schgoGRANT all privileges-授予权限ON CoursesTO guest;GRANT all privileges-授予权限ON studentsTO guest;GRANT all privilege

29、s-授予权限ON scTO guest;实验6:数据库的备份、恢复(1) 使用完全备份将你的实验数据库备份到软盘。将数据库ems完全备份到设备backupdevice_ems上,在驱动器D上建立backupdev 子目录执行下面代码:use schgo EXEC sp_addumpdevice DISK,backupdevice_sch, d:backupdevsch.bakBACKUP DATABASE sch TO backupdevice_sch结果:已为数据库sch,文件sch (位于文件1 上)处理了184 页。已为数据库sch,文件sch_log (位于文件1 上)处理了2 页。B

30、ACKUP DATABASE 成功处理了186 页,花费0.389 秒(3.728 MB/秒)。成功执行将数据库sch的日志备份到设备backupdevice_sch上/* EXEC sp_addumpdevice DISK,backupdevice_sch, d:backupdevsch.bak*/BACKUP LOG sch TO backupdevice_sch(2) 删除你所建立的数据库。在对象资源管理器中找到数据库sch右键删除数据库sch。(3) 恢复你的数据库。用下面代码实现恢复数据库:restore database sch from backupdevice_sch(4) 在

31、恢复后的数据库上撤销你建立的基本表和视图。删除基本表和视图代码:use schdrop table scdrop table studentsdrop table coursesdrop view student_mSch中的表与视图均已删除四、实验体会 通过这次实验使我掌握了sql server 3008 的使用方法,如何进行创建数据库及在该数据库基础上完成相关的创建表视图等操作,以及进行数据库的查询删除等功能。同时对于数据库的备份还原操作也基本掌握了。 实验一开始也基本上是通过参考实验题目及sql使用方法上一步步做下来,但是一开始就出现了重复创建的数据库的问题,其实原因也比较简单,在查询分

32、析器中,新建了查询,但是当已经创建了database之后,之后的操作不能再该代码后面继续进行,而应该使用use database-name指令在该数据库下进行其他的创建查询等操作。至于对于创建表等操作,必须清楚所创建的数据中那些是主键外键,通过这次实验其实也是对于我们课程内容的一种巩固。在之后的查询操作及删除操作中偶尔也会出现一些小的问题,但在错误提示栏中也基本写明了错误的原因,例如需要group by来进行分组操作等的;同时对于查询操作中会出现一个常见的问题就是输出结果中产生的数据项常常是大部分重复的,因此在select操作中要写distinct,默认的操作是不删除重复的元组。在进行实验五的过程中遇到了较为麻烦的问题,及创建用户之后在登录时总是提示已连接但是产生错误,通过分析代码以及问同学发现可能是某处设置的问题,才发现要先登录在进行创建,即需要两步操作,同时实验过程中要时刻注意是否创建成功。这次实验中出现的问题都比较简单解决。这次实验的目的也主要是一个熟悉sql服务器的过程,同时通过这次实验进一步掌握数据库的各种操作以及对于课堂的内容进行进一步的巩固与理解。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁