《数据库原理及应用》实践指导书.docx
《《数据库原理及应用》实践指导书.docx》由会员分享,可在线阅读,更多相关《《数据库原理及应用》实践指导书.docx(68页珍藏版)》请在冰豆网上搜索。
《数据库原理及应用》实践指导书
《数据库原理与应用》
实
践
指
导
书
教育科学学院教育技术系编
1课程性质
《数据库原理与应用》课程是计算机专业的专业限选课程之一。
数据库技术是当今信息处理的基本手段之一,通过本课程的学习,使学生掌握数据库系统的基本概念、基本原理,并能用现有数据库管理系统进行数据库设计及应用系统开发。
2实践目标
(1)深入理数据库原理,并设计和构造数据库模型。
(2)熟练运用关系数据库语言来处理数据库中的数据。
(3)熟练运用powerbuilder的数据库工具设计一个简单的数据库管理系统。
(4)培养严谨的科学态度,良好的习惯和综合运用所学知识解决实际问题的能力。
3实践方法指导
一、根据《数据库原理与应用》课程教学大纲,本课程总学时数为68学时,其中实践教学占了34学时,是一门实践性很强的课程。
二、根据《数据库原理与应用》课程实践大纲要求,本课程的实践项目类型包含验证型、综合型、设计拓展型三种类型,分为五个大的项目组,它们分别是:
(1)验证型项目三个,分别是:
数据库及表的创建与管理;
SQL数据查询及操纵;
数据库安全性和完整性及数据库备份、还原。
(2)综合型项目一个,即:
SQLServer服务器数据操纵及访问技术
(3)设计型项目,也即拓展型项目一个,即:
PowerBuilder数据库应用开发
三、根据本课程实践项目总学时和项目组成及项目特点,将五个大的项目,再细分为10个分项目,分别为实践1,实践2….实践10,每个分项目,根据其内容多少和实践要求,分配不同的实践时间,然后,根据其所在的章节及教学顺序,分别穿插到教学日志中。
表1是包含实践内容的教学课时分配表。
序号
以2学时为单位的教学内容
1
数据管理的进展、数据模型
2
数据库管理系统、数据库系统和数据库工作过程
3
实践1数据库的创建与管理
4
关系数据模型的基本概念与术语
5
关系代数与关系演算
6
关系运算的安全限制与关系代数表达式的优化
7
SQL语言组成与SQL的数据定义
8
实践2表的创建与管理
9
SQL的数据查询
10
实践3SQL数据查询
(一)
11
实践3SQL数据查询
(二)
12
SQL的数据操纵与数据控制
13
嵌入式SQL语言
14
实践4SQL数据操纵
(一)
15
实践4SQL数据操纵
(二)
16
构造数据类型、域定义及动态SQL
17
数据的物理存储与管理及数据存取管理
18
事务处理
19
并发控制及关系数据库管理系统SQLServer
20
关系模式及其评价,函数依赖及公理体系,关系模式的分解、式的规范化
21
非关系数据模型
22
关系数据库设计
23
数据的完整性约束与数据库的安全性
24
数据库故障与恢复
25
实践5数据库安全性和完整性
26
实践6数据库备份、还原
27
服务器数据库的建立与服务器数据操纵
28
基于浏览器/服务器模式的数据库系统及ASP、JSP的数据库访问技术
29
实践7SQLServer服务器数据操纵
30
实践8ASP、JSP数据库访问技术
31
实践9PB数据库应用开发⑴
32
实践10PB数据库应用开发⑵
33
实践10PB数据库应用开发⑵
34
实践10PB数据库应用开发⑵
表1包含实践内容的教学课时分配表
4实践指导内容
实践1数据库的创建与管理
一、实践目的:
巩固数据库的基础知识,掌握使用SQLServer2000企业管理器和T_SQL语句两种方法创建数据库、查看和修改数据库的属性、缩小与删除数据库。
二、实践内容:
1、安装SQLServer2000;
第一步:
进入SQL2000数据库安装目录运行“auton.exe”文件
第二步:
进入sqlserver2000安装主菜单,选择“安装sqlserver2000组件”。
第三步:
选择从“安装数据库服务器”。
第四步:
选择从“本装计算机”安装,点击“下一步”。
第五步:
直接点击下一步进行安装。
第六步:
输入姓名及公司名称。
(可随意输入)再点接下一步。
第七步:
点击“是”进行下一步安装。
第八步:
选择“下一步”进行安装。
第九步:
选择“下一步”进行安装。
(如果是装实例的话,在实例名处输入blkj)第十步:
选择“典型”安装。
在“目的文件夹”中点击“浏览”按钮,选择安装数
据库的路径(可不选,使用默认的路径就是了)。
再点击下一步。
第十一步:
在服务设置里面选中“使用本地系统帐户”,然后点击“下一步”!
第十二步:
选用“混合模式”,然后在“输入密码处”输入“sa”,“确认密码”输入“sa”,不要选“空密码”,然后点下一步
第十三步:
在每客户空白栏中输入值,一般为前台工作站数量的三倍。
比如:
前台工作站数量为10个。
在此可输入30个设备。
(如果是SQL2000个人版本的,这一步是没有的)
第十四步:
数据库正在安装中,也稍等片刻。
第十五步:
Sqlserver2000数据库安装完毕。
点击结束。
第十六步:
安装完SQL2000数据库后。
从“程序”菜单下的“启动”菜单中点击“服务管理器”。
第十七步:
点击绿色三角形(开始/继续)启动SQL2000数据库。
“服务”中选择“SQLSERVER”
到此为止,SQL2000数据库平台安装完毕!
2、进入MicrosoftSQL2000企业管理器,创建数据库。
第一步:
在企业管理器树型结构上的控制台根目录下的SQLSERVER组位置,点鼠标右键,在弹出窗口中,选择“新建SQLSERVER注册”操作项,在“注册SQL向导”窗口中,选“下一步”按钮。
在“可用服务器”录入框中,选择“LOCAL”或其它显示的一个服务器名,然后添加到右边的“添加的服务器”中,连续选择“下一步”按钮,直到出现如图1.1左上角所示结果。
第二步:
展开“+”号,再展开包含“数据库”内容行的“+”号,在“数据库”目录项上点右键,再选“新建数据库”,输入数据库名称“student”,确定后,在“数据库”目录项下,会显示增加的数据库名。
数据库创建成功。
3、进入MicrosoftSQL2000查询分析器,用T_SQL语句创建数据库。
第一步:
用鼠标点击企业管理器树型结构的”数据库”目录项,再点菜单上的“工具”栏,在弹出窗口中选择“SQL查询分析器”,进入“查询分析器”界面。
此界面上菜单栏第2行圆柱体图标旁边显示的是当前连接的数据库名称(如student),若要连接不同的数据库,在此栏目中修改即可。
第二步:
在录入界面中输入英文状态下的如下T_SQL语句:
createdatabasestudent_c
点击菜单栏上的绿色三角形(执行查询(F5)),运行该T_SQL语句。
鼠标点击右上角的╳(关闭窗口),关闭“SQL查询分析器”界面,在企业管理器中,鼠标右击“数据库”目录项,再选“刷新(F)”,可以看到,在“数据库”目录项下,增加显示了数据库名student_c。
用T_SQL语句同样可以成功创建数据库。
说明:
在后面的实践中,T_SQL语句都需在查询分析器中运行,才能得到语句运行的结果,没有特殊情况,对T_SQL语句只写出语句,不再说明需在哪里运行。
图1.1成功注册到本地实例
三、思考题:
1、若计算机中已经安装了一个SQLSERVER实例,是否可以再继续安装?
2、服务设置有哪几种方式,一般选用哪一种方式?
3、身份验证模式有几种,各有什么特点?
4、缺省数据库的大小是多少?
数据库文件增长方式有哪几种?
实践2表的创建与管理
一、实践目的
1、巩固数据库的基础知识。
2、掌握使用SQLServer2000企业管理器和T_SQL语句两种方法创建表。
3、掌握使用SQLServer2000企业管理器和T_SQL语句两种方法删除表。
4、掌握使用SQLServer2000企业管理器和T_SQL语句两种方法修改表。
二、实践内容:
1、表的创建
⑴利用企业管理器创建表
第一步:
打开企业管理器树型结构上的“数据库”目录项。
第二步:
选中并展开创建好的数据库student,单击数据库中的表对象。
第三步:
右击窗口右侧,选择新建表,弹出新建表窗口。
第四步:
在弹出的窗口中,对表的内容进行定义:
如图2.1。
A、输入列名,列名在表中必须唯一,列的命名规则必须遵守SQLServer2000数据库对象的命名规则;
B、选择正确的数据类型、数据长度和精度;
C、规定该列的值是否可以为空;
D、设置表格的主键和索引,创建主键时选中要建立主键的列,然后右击鼠标,从快捷菜单中选择【设置主键】命令即可。
建立为主键的列的旁边会出现一个小钥匙形的标志。
也可以右击弹出的快捷菜单中的【属性】命令,弹出属性对话框,然后选择【索引/键】标签。
第五步:
关闭上面的窗口,将表名修改为student,保存,点击企业管理器树型结构上的“数据库”目录项下的“student”下的“表”项目,在右边的表项目中,增加了刚才新建的表名:
student
⑵使用T_SQL语句创建表
语法如下:
CREATETABLE[database_name.[owner].]table_name
({|column_name|}[,…n])
[ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}]
:
:
={column_namedata_type}[DEFAULT
constant_expression]|[IDENTITY[(seed,increment)]][ROWGUIDCOL][][…n]
说明:
A、[database_name.[owner].]table_name:
定义表的名字,表名的长度不得超过128个字节,如果是临时表,则表名不能超过116个字符。
B、:
列的定义。
C、column_name:
列的名字。
列的命名必须遵守有关数据库对象的命名规则。
D、data_type:
列的数据类型。
E、DEFAULTconstant_expression:
定义该列的默认值。
F、IDENTITY:
定义该列是一个标识列。
当一个新的数据行插入表中的时候,SQLServer2000为标识列提供一个唯一的、递增的数值。
在一张表格中,只能定义一个标识列。
在定义标识列时,必须同时定义起始值和增量。
G、Seed:
定义标识列的起始值。
所谓起始值就是插入表的第一行的数据的标识列的值。
Increment:
定义标识列的增量。
所谓增量就是插入表的最近一行相对与前一行标识列的数据值的增量。
H、ROWGUIDCOL:
定义该列是一个行全局唯一的标识列。
在一张表中只有一个唯一标识符列可以被定义为ROWGUIDCOL。
column_constraint:
定义与列相关联的约束。
I、table_constraint:
定义对表的约束。
J、ON{filegroup|DEFAULT}:
定义将表存储在某一个指定的文件组中,DEFAULT表示将表存储在默认文件组中。
[TEXTIMAGE_ON{filegroup|DEFAULT}]:
如果表中有ntext、text或image类型的数据,则将这些数据存储在某一个指定的文件组里。
图2.1在数据库student中新建表
例2.1:
在查询分析器中,选择连接的数据库为student_c,运行如下T_SQL语句:
CREATETABLE[dbo].[student](
[sno][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[sname][char](10)COLLATEChinese_PRC_CI_ASNULL,
[sage][int]NULL,
[ssex][char]
(2)COLLATEChinese_PRC_CI_ASNULL,
[sbplace][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[sdept][char](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
ALTERTABLE[dbo].[student]WITHNOCHECKADD
CONSTRAINT[PK_student]PRIMARYKEYCLUSTERED
([sno])ON[PRIMARY]
GO
在数据库student_c中,我们发现,同样创建了一个表名为student的表。
注意:
用两种不同的方法创建了相同的表,但这两个相同表是分别属于不同的
数据库。
在同一个数据库中,是不允许创建同名的表的。
2、表的修改
⑴利用企业管理器修改表的步骤如下:
第一步:
从树型结构上,展开要修改定义的表所在的数据库。
第二步:
选中该数据库节点下的表节点,则企业管理器显示出该数据库下全部的表格。
第三步:
选择要修改定义的表,如右键点击所要修改的表student,在弹出对话窗口中,选择“设计表”项目。
在弹出的窗体中可以对表student进行增加列、删除列和修改列属性等操作。
⑵利用T_SQL语句修改表:
可以在更大的范围内修改表格的定义,修改的内容包括:
修改、增加、删除列等。
语法如下:
ALTERTABLEtable
{[ALTERCOLUMNcolumn_name{new_data_type[NULL|NOTNULL]|{ADD|DROP}ROWGUIDCOL}]|ADD{[]|column_nameAScomputed_column_expression}[,…n]|ADD{}[,…n]|DROP{[CONSTRAINT]constraint_name|COLUMNcolumn}[,…n]
|{CHECK|NOCHECK}CONSTRAINT{ALL|constraint_name[,…n]
说明:
A、ALTERCOLUMN:
修改已经存在的列的属性。
B、{ADD|DROP}ROWGUIDCOL:
将指定列定义成ROWGUIDCOL,或者删除该列的ROWGUIDCOL属性。
C、ADD{[]|column_nameAScomputed_column_expression}[,…n]:
增加新的列。
D、ADD{}[,…n]:
定义新的表约束。
E、DROP{[CONSTRAINT]constraint_name|COLUMNcolumn}[,…n]:
删除约束或删除列。
F、{CHECK|NOCHECK}CONSTRAINT{ALL|constraint_name[,…n]}:
是所有约束或者指定的约束有效或失效。
G、{ENABLE|DISABLE}TRIGGER{ALL|trigger_name[,…n]}:
使所有或部分触发器有效或无效。
例2.2:
使用T_SQL语句对学生表进行各种修改
A、向表中添加新的字段:
在学生表中添加一个“班级”字段,数据类型为字符型。
ALTERTABLEstudentadd班级char(20)
B、删除表中的旧列:
将学生表中的“班级”字段删除。
ALTERTABLEstudentDROPcolumn班级
3、表的删除
⑴在企业管理器中进行表的删除,步骤如下:
第一步:
在树型结构上,展开要删除的表所在的数据库student_c。
第二步:
选择该数据库节点下的表节点,则企业管理器显示出该数据库下全部的表格,选择表格,可以同时按下Ctrl键或Shift键选择多哥要执行操作的表格。
第三步:
鼠标右击,从弹出的快捷菜单中选择“删除”命令,从弹出的对话框中选择要删除的表格,然后单击【显示相关性】按钮,查看与该表格相关的数据库对象的信息。
第四步:
单击【全部除去】按钮删除所有选中的表。
注意:
删除表格必须小心,因为表格一旦删除便无法恢复。
而表格中原先包含的数
据也将随着表格的删除而消失。
要想挽回被无意中删除的数据的唯一方法是
从原先的数据库中备份恢复。
⑵通过T_SQL语句DROP删除表的定义及其中所有数据、索引、触发器、约束和权限规范。
语法为:
DROPTABLEtable_name
例2.2:
删除当前数据库student_c中的一个名字为student的表。
DROPTABLEstudent
注意:
删除表格的权力只属于表格拥有者,并且不能转移,不能使用DROPTABLE语句删除系统表。
三、实践练习
1、用企业管理器,在Student数据库中创建课程信息表Course,选课成绩表Sc,教工表teacher和操作员表Operator,表结构分别依次如下:
课程信息表Course
主码
列名
数据类型
宽度
小数位
空否
备注
Pk
Cno
Char
3
N
课程代码
Cname
Char
20
Y
课程名称
Cpno
Char
3
Y
先行课号
Credit
Decimal
3
1
Y
学分
选课成绩表Sc
主码
列名
数据类型
宽度
小数位
空否
备注
Pk
Sno
Char
10
N
学号
Cno
Char
3
N
课程代码
Grade
Decimal
5
1
Y
成绩
教工表teacher
列名
数据类型
空否
约束
IDENTITY
教工号
Int
否
主键
无
姓名
Varchar(20)
是
无
无
家庭住址
Char(30)
是
无
无
电话
Int
是
无
无
性别
Char
(2)
否
默认为¹男¹
无
系别
Varchar(16)
否
无
操作员表Operator
主码
列名
数据类型
宽度
小数位
空否
备注
Pk
Operator_id
Char
4
N
操作员编号
Operator_name
Char
12
Y
操作员姓名
Password
Char
10
Y
密码
Permission
Char
20
Y
权限
2、对1中的各表,分别编写T_SQL语句,在查询分析器中,连接Student_c数据库中,运行并查看执行结果。
3、查看SQLServer2000中系统自带数据库pubs的表信息,熟悉各表之间的相互关系。
实践3SQL数据查询
一、实践目的
1、理解SQL查询的概念。
2、掌握SQLServer2000查询分析器的使用方法。
3、掌握SELECT语句在单表查询中的应用。
4、掌握SELECT语句在多表查询中的应用。
二、实践内容:
1、SELECT语句的语法格式如下:
SELECT[ALL|DISTINCT][TOPn[PERCENT][WITHTIES]]
:
:
={*|{table_name|view_name|table_alias}.*|{column_name}
[[AS]column_alias]}[,…n]
说明:
A、ALL:
默认设置,指定在结果集中可以显示重复行。
B、DISTINCT:
指定在结果集中只能显示唯一行,空值被认为相等。
C、TOPn:
指定只从查询结果集中输出前n行。
N是介于0~4294967295之间的整数。
D、PERCENT:
从结果集中输出前百分之几行,当指定时带PERCENT,n的值必须介于0~100之间。
E、WITHTIES:
指定从结果集中返回附加的行,这些行包含与出现在TOPn(PERCENT)行最后ORDERBY列中的值相等的值。
如果指定了ORDERBY子句,则只能指定TOP…WITHTIES。
F、:
为结果选择的列。
选择列表是以逗号分隔的一系列表达式。
G、指定在FROM子句内返回所有表和视图内的所有列,列按FROM子句所指定的由表或视图返回,并按他们在表或视图中的顺序返回。
H、column_name:
要返回的列名,必要时限定column_name以避免二义性引用,当FROM子句中的两个表内包含重复名的列时会出现该情况。
I、column_alias:
是查询结果集内替换列名的可选名。
2、简单的SELECT查询:
SELECT语句在任何SQL语言中都是使用频率最高的语句,是
SQL的灵魂。
⑴最简单的SELECT查询语法如下:
SELECTcolumn_name[,…n][FROMtablename]
例3.1、从course表中分别检索出课程的所有信息,以及仅查询课程号、课程
名和学分。
SELECT*FROMcourse
SELECTcno,cname,creditFROMcourse
⑵使用TOP关键字
例3.2、分别从course中检索出前2条及前面67%的教师的信息。
SELECTtop2*FROMcourse
SELECTtop67PERCENT*FROMcourse
⑶使用DISTINCT关键字
⑷使用计算列
例3.3、将teacher表中各教师的姓名、教工号及工资按95%发放的信息,第2条语句将工资按95%发放后列名改为¹预发工资¹。
select教工号,姓名,工资*0.95fromteacher
select教工号,姓名,工资*0.95AS预发工资fromteacher。
⑸操作查询的列名
SELECTcno¹课程序号¹,cname¹课程名称¹,credit+1¹修正学分¹FROMcourse
⑹使用WHERE子句
例3.4、查询course表,返回修正后的学分后仍然大于4的课程的代号、名称以及原先的学分。
SELECTcnoAS序号,cnameAS课程名称,creditAS学分FROMcourseWHEREcourse+1>4
例3.5、查询course表中所有学分大于2并且序号小于5的课程信息。
SELECTcnoAS¹课程序号¹,cnameAS¹课程名称¹,creditAS¹学分¹
FROMcourseWHEREcredit>2ANDcno<5
例3.6、查询学分界于2和8之间的课程的信息。
SELECTcnoAS¹课程序号¹,cnameAS¹课程名称¹,creditAS¹学分¹
FROMcourseWHEREcreditBETWEEN2AND8(