《数据库概论》实验指导书.docx
- 文档编号:23223782
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:22
- 大小:801.53KB
《数据库概论》实验指导书.docx
《《数据库概论》实验指导书.docx》由会员分享,可在线阅读,更多相关《《数据库概论》实验指导书.docx(22页珍藏版)》请在冰豆网上搜索。
《数据库概论》实验指导书
《数据库概论》实验指导书
(2004级)
一、实验目的:
数据库系统是一门应用性很强的课程,上机实验是数据库课程的重要环节。
本实验是结合《数据库概论》课程的学习而开设的实验。
本实验目的如下:
1.通过上机实验,加深对数据库系统理论知识的理解,增强对网络环境下大型数据库的感性认识和实际操作能力;
2.通过使用具体的DBMS,了解一种实际的数据库管理系统,并掌握其操作技术。
熟悉ORACLE数据库的Net8工具,掌握ORACLE数据库的网络连接配置;
3.学习使用SQL语言,加深对SQL语言的认识和理解,提高SQL语言的实际应用能力;
4.加强对事务处理、权限管理等概念的认识和理解。
二、适应专业:
信息管理与信息系统,信息与计算机科学
三、实验学时数:
8学时
四、实验内容及学时安排:
实验准备:
各班选出10个同学,协助老师搭建试验环境。
包括:
1)安装ORACLE客户端,配置与主机的数据库连接。
2)安装软件工具PLSQL/DEVELOPER
3)负责本班用户的建立。
实验一:
数据定义/数据操纵语言
实验目的:
熟悉Oracle上机环境以及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。
学时数:
4学时
实验内容:
SQL数据定义语句,SQL数据操纵语句。
实验要求:
1.熟悉Oracle上机环境;
2.建立数据库表,修改数据库表结构,建立、删除索引;
3.对数据库表进行插入、修改和删除数据的操作。
实验二:
数据查询语言,视图定义
实验目的:
体会SQL语言数据查询功能的丰富和复杂,视图使用。
学时数:
4学时
实验内容:
SQL数据查询语句;
实验要求:
对数据库表进行各种查询操作;
五、教材及参考文献
1.《数据库系统概论》(第三版)萨师煊等编著高等教育出版社2000.2
2.《ORACLE8.xForWindowsNT实用教程》翁正科等编著清华大学出版社1998.10
六、实验环境
实验要求如下环境
服务器端:
Windows2000NTServer;
ORACLE8.xDatabaseServerForWindowsWindows2000Server
客户端:
Windows9x;Oracle8.xClient
网络协议:
TCP/IP
七、成绩考核
上机实验考核采取实验报告和上机抽查检验相结合的方式。
每次实验结束后都必须写出实验报告。
八.实验报告
实验一:
数据定义/数据操纵语言
[实验日期]年月日学号:
姓名:
[实验目的]
熟悉Oracle上机环境以及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。
[实验内容]
Oracle上机环境以及Oracle客户端的配置参见附录。
1.SQL数据定义语句:
例1-1:
(建立数据库表)建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2)字段,Sname字段为Sname(C,8)且可为空。
例1-2:
(修改数据库表)在Student表中增加SSEX(C,2)字段。
例1-3:
(修改数据库表)将Student表中把Sname字段修改为Sname(C,10)且为非空。
例1-4:
(建立索引)为Score表按学号升序和课程号降序分别建立索引,索引名分别为SC_NDXSNO和SC_NDXCNO。
为Score表按分数降序建立索引,索引名为GRADE_NDX。
例1-5:
(删除索引)删除索引SC_NDX_SNO。
例1-6:
(建立数据库表)建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。
例1-7:
(修改数据库表)删除成绩表Score的参照完整性约束关系。
例1-8:
(修改数据库表)添加成绩表Score的参照完整性约束关系。
例1-7,8:
为选作题
2.SQL数据操纵语句:
例2-1:
(插入数据)按前面各表中的部分数据分别插入到教学数据库的四个数据库表中。
例2-2:
(多行插入)将表Student中在计算机系(‘CS’)的学生数据插入到表S1中。
例2-3:
(利用查询来实现表的定义与数据插入)求每一个学生的平均成绩,把结果存入数据库表Student_Gr中。
例2-4:
(修改数据)将S1表中所有学生的年龄加2。
例2-5:
(修改数据)将Course表中‘程序设计’课时数修改成与‘数据结构’的课时数相同。
例2-6:
(插入数据)向Score表中插入数据(‘98001’,‘001’,95),根据返回信息解释其原因。
例2-7:
(插入数据)向Score表中插入数据(‘97001’,‘010’,80),根据返回信息解释其原因。
例2-10:
(删除数据)删除学生表S1中学号以96打头的学生信息。
例2-11:
(删除数据)删除数据库表S1中所有学生的数据。
例2-12:
(删除表)删除数据库表S1和Student_Gr。
[实验要求]
①熟悉Oracle上机环境,掌握Oracle客户端的配置;
②建立数据库表,修改数据库表结构,建立、删除索引;
③对数据库表进行插入、修改和删除数据的操作。
[实验方法]
①按照附录中的操作步骤进行客户端的配置;
②将实验需求用SQL语句表示;
③执行SQL语句;
④查看执行结果,如果结果不正确,进行修改,直到正确为止
。
[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会。
实验二:
数据查询语言
[实验日期]年月日学号:
姓名:
[实验目的]
体会SQL语言数据查询功能的丰富和复杂。
[实验内容]
3.SQL数据查询语句:
例3-1:
(选择表中的若干列)求全体学生的学号、姓名、性别和年龄。
例3-2:
(不选择重复行)求选修了课程的学生学号。
例3-3:
(选择表中的所有列)求全体学生的详细信息。
例3-4:
(使用表达式)求全体学生的学号、姓名和出生年份。
例3-5:
(使用列的别名)求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。
例3-6:
(比较大小条件)求年龄大于19岁的学生的姓名和年龄。
例3-7:
(比较大小条件)求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄。
例3-8:
(确定范围条件)求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。
例3-9:
(确定范围条件)求年龄不在19岁与22岁之间的学生的学号和年龄。
例3-10:
(确定集合条件)求在下列各系的学生信息:
数学系、计算机系。
例3-11:
(确定集合条件)求不是数学系、计算机系的学生信息。
例3-12:
(匹配查询)求姓名是以“李”打头的学生。
例3-13:
(匹配查询)求姓名中含有“志”的学生。
例3-14:
(匹配查询)求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。
例3-15:
(匹配查询)求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、课程号和成绩。
例3-16:
(涉及空值查询)求缺少学习成绩的学生的学号和课程号。
例3-17:
(控制行的显示顺序)求选修003课程或004课程的学生的学号、课程号和分数。
例3-18:
(组函数)求学生总人数。
例3-19:
(组函数)求选修了课程的学生人数。
例3-20:
(组函数)求计算机系学生的平均年龄。
例3-21:
(组函数)求选修了课程001的最高、最低与平均成绩。
例3-22:
(分组查询)求各门课程的平均成绩与总成绩。
例3-23:
(分组查询)求各系、各班级的人数和平均年龄。
例3-24:
(分组查询)输入以下查询语句并执行,观察出现的其结果并分析其原因。
SELECTSNAME,SDEPT,COUNT(*)FROMSTUDENT
WHERESDEPT=’CS’GROUPBYSDEPT;
例3-25:
(分组查询)分析以下语句为什么会出现错误。
并给出正确的查询语句。
SELECTSAGEFROMSTUDENTGROUPBYSNO;
例3-26:
(分组查询)求学生人数不足3人的系及其相应的学生数。
例3-27:
(分组查询)求各系中除01班之外的各班的学生人数。
例3-28:
(涉及空值的查询)分别观察各组函数、行的显示顺序以及分组查询与空值的关系。
例3-29:
(自然连接查询)求学生号以及其选修课程的课程号和成绩,但查询结果中只能有一个SNO字段。
例3-30:
(连接查询)求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。
例3-31:
(连接查询与表的别名)求选修了课程的学生的学生姓名、课程号和成绩。
例3-32:
(自身连接查询)求年龄大于’李丽’的所有学生的姓名、系和年龄。
例3-33:
(外部连接查询)求选修了课程002或003的学生的学号、课程号、课程名和成绩。
例3-34:
(子查询)求与‘李丽’年龄相同的学生的姓名和系。
例3-35:
(子查询)求选修了课程名为’数据结构’的学生的学号和姓名。
例3-36:
(子查询ANY)求比数学系中某一学生年龄大的学生的姓名和系。
例3-37:
(子查询ALL)求比数学系中全体学生年龄大的学生的姓名和系。
[实验要求]
对数据库表进行各种查询操作。
[实验方法]
①将实验需求用SQL语句表示;
②执行SQL语句;
③查看执行结果,如果结果不正确,进行修改,直到正确为止
。
[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会。
附录:
《数据库概论》操作指导
一.客户端配置
为了使得Oracle和WindowsNT连接起来,必须建立数据库别名(一种连接名称),提供一个和Oracle数据库连接的通路。
操作如下:
1.选择Windows95&98开始->程序->OracleforWindows95->Oraclenet8easyconfig
得到如下图所示画面:
选择“Yes”按扭,得到下面的画面:
在这个画面上,左边的一组单选按扭是功能选择,含义如下:
AddNewService添加服务名
Modify修改存在的连接
Delete删除存在的连接
Test测试存在的连接
如果选择添加新服务名,需要在右上文本框中输入新服务名(NewServiceNami)。
如果是其他三种操作,则需要在右下列表框选择其存在的服务名(ExstingServices)。
2.添加新服务名。
在右上文本框中输入一个服务名(如ORA5),然后按“Next”按扭进入下一步。
3.选择通信协议。
Oracle数据库与网络是通过指定的协议进行连接的。
可选择的画面如下图所示,通常选择TCP/IP协议,单击“Next”按扭,进入下一步。
4.输入IP地址和端口号。
使用TCP/IP协议需要输入IP地址。
在HostName文本框中输入IP地址
(注意:
输入哪个服务器地址,需要询问实验指导老师或数据库管理员)。
系统提供一个缺省的端口号,如是1251,可以直接使用它。
单击“Next”按扭,进入下一步。
5.系统标识。
典型安装的数据库使用的系统标识符号是ORCL,因此可在出现如下图所示的画面之后直接单击“Next”按扭,进入下一步。
6.测试。
可跳过此步,直接单击“Next”按扭,进入下一步。
再单击“Finish”按扭,完成配置操作。
说明:
由于实验室机器加有保护卡,因此每次重新启动机器,使用ORACLE时,都必须按上述步骤配置服务名(ServiceName)。
二.用户管理
1.建立用户:
以数据库管理员身份登录Oracle系统(参见<四.登录Oracle>)
按UserName=DXP,PassWord=DXP,Service=ORA5,登录Oracle系统后,输入命令:
CREATEUSERUxxxxxxxxIDENTIFIEDBYKxxxxxxxx
DEFAULTTABLESPACEDXPDATASPACE
TEMPORARYTABLESPACEDXPTEMPSPACE;
注意:
①Uxxxxxxxx,用户名;Kxxxxxxxx,口令,是以字母打头的字母数字字符串。
②ORA5为服务名,即是你所创建的服务名。
2.用户授权。
输入命令:
GRANTCONNECT,RESOURCETOUxxxxxxxx;
退出Oracle(参见<四.退出Oracle>)。
再以新建的用户帐号(用户名和密码)重新登录Oracle。
3.修改用户密码。
进入Oracle系统后,可以随时修改自己帐户的密码。
ALTERUSERUxxxxxxxxIDENTIFIEDBY新口令;
三.登录Oracle
方法一:
(1)在MS-DOS提示符下,执行SQL*PLUS命令
C:
>SQLPLUS[RETURN]
SQL*PLUS将显示它的版本号、日期和版权信息,并提示你输入用户名。
(2)按提示要求输入用户名后按[RETURN],SQL*PLUS提示你输入口令。
(3)如果口令输入正确,SQL*PLUS将宣布你已经与ORACLE连接上了,然后提示:
连接到:
Oracle8Release8.0.5.0.0–Production
PL/SQLRelease8.0.5.0.0-Production
SQL>
说明现在你已经进入SQL*PLUS中,并等待你的指示。
如下图所示:
SQL提示符
输入口令:
K99094180
输入用户名:
U99094180
另外,在进入SQL*PLUS时,也可以在命令行上直接输入用户名和口令,中间以“/”分隔。
方法二:
(1)选择Windows95&98开始->程序->OracleforWindows95->SQLPLUS8.0
出现Oracle登录窗口。
(2)按提示要求输入:
Username:
Uxxxxxxxx
Password:
Kxxxxxxxx
Service:
ORA5
其中:
Uxxxxxxxx,Kxxxxxxxx,ORA5同前说明。
例如:
某一学生学号为99094180,则其用户名为U99094180,口令为K99094180,数据库别名设为ORA6。
(3)按[确定]按钮。
如果输入正确,SQL*PLUS将显示它的版本号、日期和版权信息以及已与ORACLE连接上的信息,然后显示:
连接到:
Oracle8Release8.0.5.0.0-Production
PL/SQLRelease8.0.5.0.0-Production
SQL>SQL提示符
说明现在你已经进入SQL*PLUS中,并等待你的指示。
注意:
在方法一或方法二中,如果口令输入不正确,系统提示出错信息,并要求你重新输入。
在向ORACLE三次注册失败后,屏幕上将出现终止服务信息,并退出SQL*PLUS。
四.退出Oracle
当想停止工作并离开SQL*PLUS,则可以在SQL*PLUS命令提示符下输入EXIT或QUIT命令。
SQL>EXIT[RETURN]或SQL>QUIT[RETURN]
五.提示信息
1.建议使用方法二登录ORACLE。
在此方式下,SQL*PLUS有一种缓冲区编辑器,可以用来在SQL>提示符下交互式地输入命令和修改命令。
(1)在SQL>提示符下,可直接进行拷贝和粘贴操作。
(2)在SQL>提示符下,可直接对命令缓冲区内容进行编辑。
SQL>ED[RETURN]
出现缓冲区编辑器窗口,自动显示刚刚执行的命令语句。
修改编辑,保存退出,返回SQL>命令提示符状态。
SQL>/[RETURN]
自动执行缓冲区编辑器中的命令语句。
2.一个事务从执行一条SQL更新语句(INSERT、UPDATE、DELETE)开始,当出现如下任一情况时,就结束该事务:
●执行COMMIT或ROLLBACK命令(这是一种显式划分事务的方式);
●发出DDL命令(如执行CREATETABLE命令等);
●LOGOFF;
●程序异常结束。
如果在SQL*PLUS中没有上述四种情况,当退出系统时,系统会自动提交最后一个事务。
3.查询本用户账号下的所有数据库表的名称:
SELECT*FROMTAB;
4.查看一个数据库表的表结构:
DESC表名;
5.ORACLE常用的数据类型:
数据类型
表示方式
说明
数字型
NUMBER(n)
NUMBER(n,d)
可包括数字0-9、正负号(+、-)和十进制小数点
n:
总有效位数(范围1-38)
s:
小数点后面的位数
字符型
CHAR(n)
VARCHAR(n)
VARCHAR2(n1)
可包含字母、数字和特殊字符(+、-、%、$)
n<=255;n1<=2000
日期型
DATE
日期和时间。
存储方式为:
世纪、年、月、日、时、分、秒。
缺省日期格式:
中文版为09-10月-99,英文版为09-OCT-99。
利用ORACLE提供的日期掩码格式,可按需要显示日期与时间。
例如显示系统日期或显示系统日期、时间:
SELECTTO_CHAR(SYSDATE,'YYYY-MM-DD')FROMDUAL;
或SELECTTO_CHAR(SYSDATE,'YYYY-MM-DDHH:
MM:
SS')FROMDUAL;
6.几个常用的ORACLE函数
(1)LTRIM()、RTRIM()、TRIM():
去除前导、后缀的空格或字符。
(2)UPPER()、LOWER():
字符大小写转换。
(3)SUBSTR(str,m,n):
截取子串。
其中,str:
字符串;m:
开始位置;n:
长度。
7.在Oracle中,可以使用SETAUTOCOMMIT命令来设置事务自动提交环境。
一旦设置了自动提交,则在每个SQL操作INSERT、UPDATE或DELETE语句之后,系统就自动进行了提交。
一般情况下,最好不要使用自动提交方式。
设置自动提交的语句格式:
SETAUTOCOMMITIMMEDIATE;
SETAUTOCOMMITON;
设置非自动提交的语句格式:
SETAUTOCOMMITOFF;
Oracle以非自动提交方式为缺省方式。
8.查询其他用户的数据(必须为授权的用户),应在表名前增加用户名作为限定词。
格式为:
用户名.表名
9.查询本用户所有表上的完整性约束名称。
SELECTConstraint_name,Constraint_type,Table_name,R_constraint_name
FROMUser_constraints;
ConstraintType
Character
PRIMARYKEY
P
UNIQUEKEY
U
FOREIGNKEY
R
CHECK,NOTNULL
C
10.查询本用户所有表上的非空约束和CHECK约束条件。
SELECTConstraint_name,Search_condition
FROMUser_constraints;
11.查询本用户所有表上定义的完整性约束的约束列名
SELECTConstraint_name,Table_name,Column_name
FROMUser_cons_columns;
六.教学管理数据库设计
各表的数据结构和数据如下:
1.学生情况表Student
CS:
计算机系
SNO(C,5)
学号
SNAME(C,10)
姓名
SDEPT(C,2)
系
SCLASS(C,2)
班级
SSEX(C,2)
性别
SAGE(N,2)
年龄
96001
马小燕
CS
01
女
21
MA:
数学系
IS:
信息系
96002
黎明
CS
01
男
18
96003
刘东明
MA
01
男
18
96004
赵志勇
IS
02
男
20
97001
马蓉
MA
02
女
19
97002
李成功
CS
01
男
20
97003
黎明
IS
03
女
19
97004
李丽
CS
02
女
19
96005
司马志明
CS
02
男
18
主关键字:
SNO非空字段:
SNAME,SDEPT,SCLASS
2.课程名称表Course3.教师授课表Teach
CNO(C,3)
课程号
CNAME(C,16)
课程名称
CTIME(N,3)
学时数
TNAME(C,8)
教师姓名
TSEX(C,2)
性别
CNO(C,3)
课程号
TDATE
授课日期
TDEPT(C,2)
系
001
数学分析
144
王成刚
男
004
1999.9.5
CS
002
普通物理
144
李正科
男
003
1999.9.5
CS
003
微机原理
80
严敏
女
001
1999.9.5
MA
004
数据结构
72
赵高
男
004
1999.9.5
IS
005
操作系统
80
李正科
男
003
2000.2.23
MA
006
数据库原理
80
刘玉兰
女
006
2000.2.23
CS
007
编译原理
60
王成刚
男
004
2000.2.23
IS
008
程序设计
40
马悦
女
008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库概论 数据库 概论 实验 指导书