当前位置:文档之家› 数据库实验指导书

数据库实验指导书

实验指导书

班级:

姓名:

实验1 SQL SERVER上机环境、表的基本操作和PB 运行环境

一、实验目的:

1.熟悉SQLSERVER上机环境、了解SQLSERVER2000各个组件的作用、学习使用SQL SERVER联机丛书。熟悉SQL Server企业管理器操作

环境。熟悉PB编程环境。

2.掌握创建数据库和表的操作。

3.掌握数据输入、修改和删除操作。

4.学会用SQL语句对表创建和删除索引

5.熟悉使用UPDATE/INSERT/DELETE语句进行表操作。

二.实验内容:

1.新建数据库XUE,分别用企业管理器创建如下几个表,要求student表和course表使用企业管理器创建,sc表使用SQL命令创建,并将SQL命令以 .SQL文件的形式保存在磁盘。

表1.1 student表(学生信息表)

表1.2 course表(课程信息表)

表1.3 sc表(学生选课成绩表)

2.修改列属性:

(1)用企业管理器将Student 表中的sex 字段设为不能为空(not null )。 (2)用SQL 语句将Student 表中的属性sdept varchar(4)改成char(4)类型。 3.添加列:

(1)用企业管理器在Course 表中添加一列year ,类型为varchar (4)。 (2)用SQL 语句在student 表的sage 字段添加约束,sage 的属性值在18-30岁之间。

4.删除列:用SQL 语句将Course 表中的year 字段删除。

5.对数据库XUE 的基本表录入基本数据,示例如下(自己可根据需要调整录入):

表1.4 Student 表(学生信息表) 表1.6 SC 表(选课信息表)

表1.5 Course 表(课程信息表)

6.分别用SQL 语句和企业管理器建立以下索引(如果不能成功建立,请分析原因):

在企业管理器建立索引方法:(1)利用索引向导,选择菜单“工具”|

“向导”|“数据库”|“创建索引向导”(2)利用索引管理器:选择一个表,然后再快捷菜单或“操作”菜单上选择“所有任务”|“管理索引”菜单。

(1) 在student表的sname列上建立普通降序索引。

(2) 在course表的cname列上建立唯一索引。

(3) 在sc表的sno列上建立聚集索引。

(4) 在sc表的sclass(升序),sno(升序), cno (降序)三列上建立一

个普通索引。

7. 删除索引:将course表的cname列的唯一索引删掉。

8.备份和恢复数据库XUE。

9.熟悉PB编程环境,完成PB实用教程中实验1 PowerBuilder集成环境。(选做,数学系同学必做)

实验2 SQL 数据查询、视图

一、实验目的

1.熟悉SQL数据查询语言。

2.熟练使用SQL语句进行单表查询、多表连接查询、嵌套查询、集合

查询。

3.掌握创建、修改、查询视图的方法。

4.熟悉使用UPDATE/INSERT/DELETE语句进行表操作。

二、实验内容

1.数据查询

对XUE数据库实现以下查询:

(1)查询所有学生的详细信息

(2)查询1班的学生学及姓名(某些列)

(3)查询‘刘晨’的出生年(列表达式)

(4)查询姓‘刘’的学生的详细情况

(5)查询选修了1号课的学生姓名、性别、成绩

(6)查询没有先行课的课程的课号和课名(NULL的使用)

(7)查询2班的所有女生的情况(AND OR)

(8)查询学分为2到4之间的课程(Between and)

(9)查询选修1或2号课的学生的详细情况

(10)查询2班至少选修一门其先行课为1号课的学生的详细情况(11)查询2号科成绩最高的学生

(12)查询1班2号课成绩最低的学生

(13)查询选修2号课且成绩不是最低的同学(ANY)

(14)*查询至少选了1班2号同学所选课的所有同学(EXISTS\相关子查询)

(15)*查询不选1号课的学生(EXISTS)

(16)查询1班平均分在85分以上的同学详细情况及各科成绩(GROUP)

(17)查询选了1号课且选了2号课的学生的学号

(18)查询选了1号课但不选2号课的学生的学号

(19)查询选2号课的学生的名字及相应2号课成绩,按成绩排序(ORDER BY 连接)

2.数据更新

(1)对于student表,插入一条新记录,它的具体信息为,班级号:1、学号:4、姓名:张三、性别:男、年龄:20、所在系:IS。

(2)对每个系,求学生的平均年龄,并把结果存入一个新建的表dept_age 中。

(3)将班级号为1,学号为4的学生的年龄改为22岁。

(4)将MA系所有学生的成绩置0。

(5)将所有学生的年龄增加1岁。

(6)对于student表,删掉所有年龄小于21岁,并且院系为IS的学生的记录。

(7)删除MA系所有同学的选课记录。

3.视图

(1) 使用企业管理器创建视图:

①在XUE库中以“student”表为基础,建立MA系学生的视图V_MAStudent

②建立一个所有IS系学生的班级号、学号以及其平均成绩的视图COMPUTE_AVG_GRADE;

(2) 使用SQL语句创建视图:

①建立一个每个学生的班级号、学号、姓名、选修的课号、课名及成绩的视图S_C_GRADE;

②建立IS系选修了1号课程且成绩在90分以上的学生的视图V_IS_Score

③将各系学生人数,平均年龄定义为视图V_NUM_AVG。

(3) 查询以上所建的视图结果

(4) 查询选修了1号课程的学生

(5) 在MA系学生的视图中找出年龄小于20岁的学生

(6) 将数学系学生视图V_MAStudent中班级号为1,学号1的学生姓名改为“王武”

(7)向数学系学生视图V_MAStudent中插入一个新的学生记录,其中班级号为1,学号为6,姓名为赵新,年龄为20岁

(8) 删除数学系学生视图V_MAStudent班级号为1,学号为6的记录

(9) 用企业管理器删除视图“V_MAStudent”

(10) 用SQL语句删除视图S_C_GRADE

实验3 PB常用功能控件的使用及PB与SQL

SERVER数据库的连接

(选做,数学系同学必做)

一、实验目的

掌握PB环境及语句的使用,学习PB与SQL SEREVR数据库的连接方法与编程技巧。

二、实验内容

题目见PB实用教程中,实验2 PowerScript语言与事件脚本、实验3 窗口与常用控件编程(一)、实验4 数据库的创建与连接、实验5窗口与常用控件编程(二),实验6窗口与常用控件编程(三),编程序,然后上机调试运行。

实验4 嵌入式SQL(C语言方式)

(注:实验4,5二选一)

一、实验目的

1.熟悉嵌入式SQL编程

2.巩固SQL的知识

二、实验内容

嵌入SQL的C应用程序具体到VC++6.0, SQL Server2000 下调试可分为五步:1、环境初始化;2、预编译;3、编译;4、连接;5、运行。下面就其中重要的的操作方法给以详细说明。

1.环境初始化

(1) SQL Server2000为其嵌入式SQL提供了一此特殊的接口;默认的

安装方式没有安装这此接口;因此首先检查你的SQL Server是否安装了此接口,若没有,需要把devtools拷贝到SQLServer的系统日录下;

如果SQL Server安装在C盘,则SQL Server的系统目录是C:\Program Files\Microsoft SQL Server。

(2) VC++6.0环境配置。具体配置分为如下三步:

①Tools->options->directories->Include Files:添加

x:\Program Files\Microsoft SQL Server\80\Tools\DevTools\Include。

(X为你所安装的SQL Server所在盘符,该目录及devtools所在include 目录,实际情况根据你安装的系统而定)。将SQL server自带的用于数据库开发的头文件包含到工程环境中。如图4-1所示。

②Tools->options->directories->Library Files:添加

x:\Program Files\Microsoft SQL Server\80\Tools\DevTools\Include。

(X为你所安装的SQL Server所在盘符,该目录及devtools所在include 目录,实际情况根据你安装的系统而定),将开发用到的包包含到工程中。

如图4-2所示。

③Tools->options->directories->Executable files:添加x:\Program Files\Microsoft SQL Server\80\Tools\Binn 。C语言编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQL Server的预处理程序是nsqlprep.exe。此文件由sql server提供,在安装SQL Server可能不会被安装,所以要将此文件从SQL Server安装盘拷贝到指定磁盘目录(可在任意目录中)。注意:拷贝在C:盘根目录下可行,其它目录常出问题,未查原因。如果拷贝到C盘根目录,在Executable files 添加:C:\。如果4-3所示。

图4-1 图4-2

图4-3

2、预编译

C语言编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQL Server的预处理程序是nsqlprep.exe。

Microsoft SQL Server 2000提供的预编译程序nsqlprep.exe,用于对嵌入式SQL程序进行预编译处理,生成C语言源程序。实际上就是将嵌入式SQL程序中的嵌入式SQL语句替换为对运行时库文件Sqlakw32. dll的函数调用,接着运行时库文件调用动态连接库Ntwdblib. dll通过网络来存取Microsoft SQL Server 2000数据库服务器。

预编译程序nsqlprep的常用语法为:

nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password

其中ESQL_File是要预编译的嵌入式SQL程序;/SQLACCESS通知nsqlprep自动地为嵌入式SQL程序中的静态SQL语句创建相应的存储过程;/DB server_name.database_name指明要连接的服务器以及数据库名称;/PASS login.password给出登录名及相应的口令.

若在VC++6.0中编译,设置如下:

(1)首先新建一个空的Win32 Console Application,如图4-4所

示。

图4-4

(2)在工程中新建源文件,扩展名为.sqc,在该源文件中编写嵌入

式SQL程序源代码;

(3)对工程设置如下:选择“Project”|“Settings”菜单项;从

弹出的对话框中,选中要预编译的.sqc源文件,单击Custom

Build tab。在“Description”中输入对.sqc源文件的预处理方

法:running ESQL/C PRECOMPILER。在Commands框中,

键入nsqlprep $(inputName) /SQLACCESS /DB

servername.database/PASS loginname.password。在在Outputs

框中,键入$(InputName),如图4-5所示。

图4-5

(4)在VC++ 6.0中编译嵌入式SQL文件,生成同名的C文件,

如图4-6示。

图4-6

注意:在Visual C++ 6.0进行预编译和执行最终生成的可执行文件时需要用到动态链接库SQLaiw32.dll和SQLakw32.dll;如果没有这个文件预编译时将产生错误,此问题的解决方法:将Sql Server安装盘中的sqlaiw32.dll和SQLakw32.dll拷贝到源文件所在的目录或拷贝到操作系统目录下的system32子目录中。

3、编译,连接与运行

将预编译生成的c文件加入Proiect,如图4-7,4-8,编译连接即

可生成访问SQL Server的可执行程序。

图4-7 图4-8

注意:编译预编译产生的C程序需要库文件sqlakw32.lib和Caw32.lib,如果没有编译时会报错。解决方法:添加库文件:project->Settings->Link->Object/Library Modules,添加库文件:SQLakw32.lib, Caw32.lib。这两个文件之间用空格分开。如图4-9所示。

图4-9

4、编程练习

对于实验1建立的XUE数据库,查询某个系全体学生的信息(要查询的系主变量deptname指定),然后根据用户的要求修改其中的某些记录的年龄字段。

实验4 嵌入式SQL及编程使用(PB方式)

一、实验目的

掌握嵌入SQL及PB常用功能控件,学会使用嵌入SQL对数据库进行单表精确查询、模糊查询的方法

二、实验内容

建立学生表:S(SNO,SNAME,SSEX,SAGE,SADDR),编程序,实现如下界面功能。

实验5 数据库安全性和完整性

一、实验目的

1、加深对数据库安全性的理解。

2、掌握SQL server中有关用户登录认证及管理的方法。

3、加深对数据库存取控制机制的理解,通过自主存取控制进行权限管理,熟悉SQL Server中的角色管理

4、掌握主键约束、外键约束及及check约束的用法。

5、掌握默认值约束的应用。

二、实验内容

(一)数据库安全性

1、用户标识与鉴别

(1)在企业管理器中,把所属的SQL服务器设置为SQL Server和Windows混合验证方式。具体操作如下:在企业管理器窗口中展开服务器组,用鼠标右击需要设置的SQL服务器,在弹出的菜单中选择“属性”项,则出现属性对话框,如图5-1所示。在属性对话框中,选择“安全性”选项卡,在“身份验证”一栏进行设置。

图5-1 SQL Server属性对话框

(2)在企业管理器中为自己建立一个数据库用户“李勇”。具体操作如下:在企业管理器展开服务器组,展开服务器,用鼠标单击“安全性”文件夹,用鼠标单击“登录”,弹出“新建登录”对话框,如图5-2所示,在里

面进行设置。

图5-2 新建登录对话框

(3)允许用户“李勇”访问XUE数据库,角色为public。具体操作为在“新建登录”对话框中选择“数据库访问”选项卡进行设置。

知识点:数据库角色是数据库级别的主体,也是数据库用户的集合。数据库用户可以作为数据库角色的成员,继承数据库角色的权限。SQL Server提供了两种数据库角色,固定数据库角色和用户自定义的数据库角色。固定数据库角色指这些角色所具有的管理、访问数据库权限已经被预定义。使用固定数据库角色可以大大简化数据库角色权限管理工作。Microsoft SQL Server系统提供了的固定数据库角色及其权限如表5-1所示。

表5-1 固定数据库角色

户就可以在数据库中执行所有的操作。如果Tomson用户是db_denydatareader固定数据库角色的成员,那么该用户不能在数据库中执行所有的检索操作。除了前面介绍的固定数据库角色之外,Microsoft SQL Server系统成功安装之后,还有一个特殊的角色即public角色。public 角色有两大特点,第一,初始状态时没有权限;第二,所有的数据库用户都是它的成员。固定数据库角色都有预先定义好的权限,但是不能为这些角色增加或删除权限。虽然初始状态下public角色没有任何权限,但是可以为该角色授予权限。由于所有的数据库用户都是该角色的成员,并且这是自动的、默认的和不可变的,因此数据库中的所有用户都会自动继承public角色的权限。从某种程度上可以这样说,当为public角色授予权限时,实际上就是为所有的数据库用户在授予权限。

2、自主存取控制

(1)打开查询分析器,使用“李勇”用户连接到SQL Server。对XUE 数据库中的表student进行查询操作,观察实验结果,并说明为什么。

(2)将XUE数据库的操作权限赋予用户“李勇”,使得李勇可以对student表进行查询和插入。分别用企业管理器和SQL命令进行授权。(注

意:对用户授权,必须市数据库对象拥有者以上用户授予)。企业管理器具体操作如下:在企业管理中中,单击XUE数据库,单击“用户”,在屏幕右侧的用户窗口选择“李勇”,用鼠标右击,在弹出的菜单中选择“属性”项,出现用户属性对话框,如图5-3所示。单击对话框中的权限按钮,出现数据库用户权限对话框,如图5-4所示,在其中进行设置。

图5-3 数据库用户属性对话框

图5-4 数据库用户权限对话框

(3)打开查询分析器,使用“李勇”用户连接到SQL Server。对XUE 数据库中的表student进行查询和插入操作,观察实验结果,并说明为什么。

(4)创建数据库角色OP_of_students,它代表一个可以对student表进行操作的操作员,对角色的权限进行设置,使得该角色可以对student 表进行查询,插入,删除和更新操作,并将用户“李勇”添加到这个角色。具体操作如下:在企业管理其中展开XUE数据库,选择角色,右击角色在弹出菜单中选择新建数据库角色选项,弹出新建角色对话框,如图5-5所示,在其中填入角色名,并将用户“李勇”添加进去。重复上述步骤,再次进入XUE数据库德角色目录,选择OP_of_students,从右击的菜单中选择属

性,进入对话框,如图5-6所示,单击权限进行设置。

图5-5 新建角色对话框

图5-6 赋予角色属性

(5)打开查询分析器,使用“李勇”用户连接到SQL Server。对XUE 数据库中的表student进行增删改查操作,观察实验结果,并说明为什么。

(6)创建3号课程的视图CHOICES,授权给“李勇”,让他在该视图上具有select权限。

(二)数据库完整性

1.向表student中插入sclass,sno重复和为空的元组,观察结果。

2.打开XUE数据库,实现如下参照完整性,并用操作验证:

删除student表中记录的同时删除sc表中与该记录sclass,sno字段值相同的记录;

修改student表某记录的sclass,sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改;

修改course表cno字段值时,该字段在sc表中的对应值也应修改;

删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录;

向sc表添加记录时,如果该记录的sclass,sno字段的值在student 中不存在,则拒绝插入;

3. 定义check约束,要求student表中学生姓名长度在2-8之间,并用操作验证;

4.定义student表中学生性别列中只能输入“男”或“女”,并用操作验证;

5. 定义student表中学生年龄值默认值为20,并用操作验证;

相关主题
文本预览
相关文档 最新文档