数据库系统实验(3)

2019-04-16 21:25

…… end

else if …… then

begin …… end else ……;

case 变量 of

caselist1 : 语句…… ; caselist2 : 语句…… ; ……

else 语句…… ; end;

②循环控制语句:for、while

for counter := initial to final do begin …… end;

while expression do begin …… end;

9

第二章 实验一 SQL语言

2.1实验目的

(1) 通过上机实践,熟悉Oracle的SQL * Plus环境及使用方法

(2) 掌握SQL语言,能熟练运用SQL语言进行数据定义和数据操纵 (3) 加深对关系数据模型的数据结构和约束的理解

2.2相关章节

第二章、第三章

2.3实验内容及要求

一. 了解并掌握SQL * Plus环境的使用 二. 用SQL的DDL语句图书管理系统创建基表

图书管理系统有三个基表,基表模式如下 (下划线处为主键,两个斜体处为两个外键): 图书(图书编号、分类号、书名、作者、出版单位、单价) 读者(借书证号、姓名、单位、职称)

借阅(借书证号、图书编号、借阅日期、备注) 注意:要求定义列完整性、实体完整性、引用完整性。

三. 为基表“读者”补充定义:职称只能取初级、中级、高级之一 四. 用SQL的DML语句向上述基表中增加、修改和删除数据

(1) 向三个基表中插入如下数据:

图书表中数据:

0001 TP31 计算机基础 WANG 高等教育 17.00 0002 TP32 数据库原理 16.50 0003 TN31 并行计算机 YANG 清华大学 12.80

……

读者表中数据:

T201 LIXIN 计算机系 中级

S981 WANG 通信系 高级

10

Z003 CHEN 工厂 初级 ……

借阅表中数据: T201 0001 2001-3-10 T201 0003 2001-4-1 S981 0002 2001-2-20 Z003 0001 2001-3-3

……

(2) 数据的修改和删除

①为编号为0002的图书填上作者和出版单位。 ②将所有图书单价上调5%(即:原值×1.05)。 ③将书名包含?计算机?的书的分类号改为?TP38?。

④删除借书证号以S开头的所有读者信息和借阅信息。

五. 用SQL的QL语句完成以下查询

(1) 列出图书馆中所有藏书的书名及出版单位。 (2) 查询工厂所有借阅了图书的读者姓名和职称。

(3) 查询藏书中比高等教育出版社所有图书单价更高的书籍。 (4) 查询各出版社图书的最高价、最低价和平均价格。 (5) 列出当前至少借阅了5本图书的读者及所在单位。

六. 用SQL的DDL语句创建视图、索引

(1)建立各单位当前借阅图书情况的简单统计视图,视图中包括单位名称,借书人数和借阅人次。

(2)对该视图进行查询。

(3)按出版社为图书表建立一个降序索引。

七. 为自己创建一张结构与scott用户的员工表emp相同的员工表。

2.4 实验环境

硬件:微机

软件:ORACLE 10G

2.5 实验指导

一. 相关概念

(1) 基表和视图

11

① 基表是实际存在的表,其数据显式存放在数据库中。 ② 视图是虚表,只存储其定义,不存数据。 ③ 对视图可以查询,但其它操作有一定的限制。 (2) 完整性约束

关系数据模型提供3类完整性约束规则:实体完整性规则、参照完整性规则和用户定义的完整性规则。其中实体完整性是对主键的约束,参照完整性是对外键的约束。标准SQL支持上述完整性约束,同时提供对列的约束,也允许用check子句来对属性值进行显式约束。

(3) SQL按功能可以分为四大部分:DDL、DML、QL和DCL

① DDL:定义、撤销、修改关系模式

常用语句有(适用于ORACLE的):

创建基表 create table 表名(

属性1 类型(长度) 约束, 属性2 类型(长度) 约束,

……

Primary key (属性列表),

Foreign key(属性名) references 主表名 on delete cascade︱set null, check(属性值的约束条件)); 复制某表结构及其记录的命令:

create table 新表名 as select * from 被复制表名; 只复制表结构:

create table新表名 as select * from 被复制表名where 1=2; 为基表补充定义约束:

修改基表的列 alter table 表名modify 原列名 新类型;

增加新列 alter table 表名add (新列名1…, 新列名2…, …); 删除基表的列alter table 表名drop column 列名1, 列名2…; 撤销基表模式 drop table 表名;

创建视图 create view 名(列名表) as select 对应列 from …..;

撤销视图 drop 视图名;

创建索引 CREATE [UNIQUE] INDEX 索引名 ON 基表名(<列名 > [ASC ? DESC ]

[{ ,<列名> [ASC ? DESC ] } ] ); 撤销索引 drop 索引名;

② DML:增加、删除、修改数据,详见教材第三章及课件。

插入:insert into … 删除:Delete from ….. 修改:Update ….

③ QL:用于查询数据,Select-from―where,详见教材第三章及课件。

12

二. 实验步骤及注意事项

1. 阅读§1.1完成§2.3的第一步。

2. 在进行§2.3的第二步之前,以DBA身份进入SQL*PLUS,创建对应于自己的用户,并授予其DBA权限。再以自己的用户身份连接到数据库。具体方法参见§1.1。 3. 选用合适的create table语句完成§2.3的第二步,可参见§2.4的第一部分。 注意:-定义外键时,on delete restrict是缺省项,Oracle中不需写出

-应参照要插入的数据来确定属性的类型与宽度

-可以在SQL>提示符下键入DESC 表名 命令来查看已创建的基表模式

4. 选用合适的alter table语句完成§2.3的第三步,可参见§2.4的第一部分。 5. 选用合适的DML语句完成§2.3的第四步,可参见§2.4的第一部分。 使用insert语句时要注意:

-该语句一次只能插入一个元组

-values中的属性个数、顺序、值要与被插入的基表定义一致或与该语句 中的属性列表一致

-对于未定义缺省值的属性,都要在values中给出值 -向表中添加数据时,要注意类型的匹配和定界符的使用

-向表中录入日期型数据时,注意ORACLE的SQL语句与标准SQL的差异。

-插入的外键值要符合引用完整性的要求,即只能是主键已有的值或null(当外键是该基表的主属性时,不能为null)

-可以在SQL>提示符下键入select …语句来查看已插入的数据 使用update语句时要注意:

-该语句一次可以修改多个属性和多个元组 -修改数据时,要注意类型的匹配

-对值为null的列的修改,不用set 列名=列名+目标值,而用set 列名=目标值 -注意通配符%和_的使用,应该用like做比较符

-可以在SQL>提示符下键入select …语句来查看已修改的数据 使用delete语句时要注意:

-该语句一次只能从一张表中删除若干元组 -删除操作受表定义中on delete选项的约束

Restrict(即,在Oracle中无on delete选项时) :要求先删除从表中的元组,才

能删除主表中的元组

cascade:删除主表的元组时,系统就自动删除从表的相应元组 set null:删除主表的元组时,系统就自动将从表的外键值置为null -可以在SQL>提示符下键入select …语句来查看删除后的表的值

6. 选用合适的QL语句完成§2.3的第五步,可参见第三章的例题与习题。 注意:-有group by子句时,要注意与select子句中目标项的对应关系, select子句中出现

的单列名,只能是group by子句中出现的单列名

-where子句中不支持聚集函数,可以借助having子句来实现查询需求 -应清楚各聚集函数的含义

13


数据库系统实验(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:用水量说明

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: