一、实验目的
- 熟悉oracle环境;
- 熟练掌握和使用PL-SQL建立数据库基本表。
- 使用PL/SQL developer操作数据库。
- 熟练掌握SQL 建立关系,及增删改数据。
二、实验环境
Oracle环境,PL-SQL
三、实验步骤、出现的问题及解决方案
4.建立数据库表
建立以下各关系:
(1)图书分类(图书分类号,类名):
create table 图书分类
(
图书分类号 VARCHAR2(10),
类名 VARCHAR2(10),
primary key(图书分类号)
);
(2)书目(ISBN, 书名,作者,出版单位,单价,图书分类号)
create table 书目
(
ISBN VARCHAR2(20),
书名 VARCHAR2(20),
作者 VARCHAR2(10),
出版单位 VARCHAR2(20),
单价 VARCHAR2(10),
图书分类号 VARCHAR2(10),
primary key (ISBN),
foreign key (图书分类号) references 图书分类 (图书分类号)
);
(3)图书(图书编号,ISBN,是否借出,备注)
create table 图书
(
图书编号 VARCHAR2(10),
ISBN VARCHAR2(20),
是否借出 VARCHAR2(2),
备注 VARCHAR2(100),
primary key(图书编号),
foreign key(ISBN) references 书目(ISBN)
);
(4)读者 (借书证号,姓名,单位,性别,地址,联系电话,身份证编号)
create table 读者
(
借书证号 VARCHAR2(10),
姓名 VARCHAR2(10),
单位 VARCHAR2(100),
性别 VARCHAR2(2),
地址 VARCHAR2(100),
联系电话 VARCHAR2(20),
身份证编号 VARCHAR2(30),
primary key(借书证号)
);
(5)借阅 (借阅流水号,借书证号,图书编号,借书日期,归还日期,罚款分类号,备注)
create table 借阅
(
借阅流水号 VARCHAR2(100),
借书证号 VARCHAR2(10),
图书编号 VARCHAR2(10),
借书日期 DATE,
归还日期 DATE,
罚款分类号 VARCHAR2(10),
备注 VARCHAR2(100),
primary key(借阅流水号),
foreign key (借书证号) references 读者(借书证号),
foreign key (图书编号) references 图书(图书编号),
foreign key (罚款分类号) references 罚款分类(罚款分类号)
);
(6)罚款分类(罚款分类号,罚款名称,罚金)
create table 罚款分类
(
罚款分类号 VARCHAR2(10),
罚款名称 VARCHAR2(20),
罚金 VARCHAR2(1000),
primary key(罚款分类号)
);
(7)预约 (预约流水号,借书证号,ISBN,预约时间)
create table 预约
(
预约流水号 VARCHAR2(20),
借书证号 VARCHAR2(20),
ISBN VARCHAR2(30),
预约时间 DATE,
primary key(预约流水号),
foreign key (借书证号) references 读者(借书证号),
foreign key(ISBN) references 书目(ISBN)
);
5.各关系输入数据
(1)图书分类(图书分类号,类名)
(2)书目(ISBN, 书名,作者,出版单位,单价,图书分类号)
(3)图书(图书编号,ISBN,是否借出,备注)
(4)读者 (借书证号,姓名,单位,性别,地址,联系电话,身份证编号)
(5)借阅 (借阅流水号,借书证号,图书编号,借书日期,归还日期,罚款分类号,备注)
(6)罚款分类(罚款分类号,罚款名称,罚金)
(7)预约 (预约流水号,借书证号,ISBN,预约时间)
6.使用SQL语句练习表的创建、删除、修改操作。
(1)创建表:5中代码
(2)删除表:删除借阅表
drop table 借阅;
(3)修改表:新增“备注”列:
alter table 图书分类
add 备注 varchar2(10);
7.使用SQL语句练习表中数据的增加、删除、修改操作。
(1)增加数据:图书分类表中新增(400,艺术)行:
insert into 图书分类(图书分类号,类名) values(400,"艺术");
(2)删除数据:删除图书分类表中图书分类号为100的数据:
delete from 图书分类 where 图书分类号=400;
(4)修改数据:将图书分类表中图书分类号为100的类名改为“艺术”:update 图书分类 set 类名='艺术' where 图书分类号=100;
8.试根据下面的完整性约束要求,用SQL对上面已经建立好的数据库表进行完整性约束定义。
(1)读者关系中属性 联系电话 取值为11位数字
身份证编号 取值为18位,并且满足身份证编号规则:
alter table 读者 add constraint C1 check (regexp_like(联系电话,'^[[:digit:]]{11}'));
alter table 读者 add constraint C2 check (regexp_like(身份证编号,'^[[:digit:]]{17}[[:alnum:]]'));
(2)图书关系中属性 是否借出 取值为:‘是’或‘否’
alter table 图书 add constraint C3 check (是否借出 IN ('是','否'));
(3)借阅关系中属性 借书日期 取值不为空
alter table 借阅
modify 借书日期 not null;