一、创建表
创建图书馆管理系统所涉及的表
创建产品销售系统所涉及的表
图书表book(bid,bname,price,qty)
书库表lib(lid,lname,address)
读者表reader(rid,rname,dept)
借阅表loan(bid,rid,loanDate)
## 各表初始化
drop table book; drop table lib; drop table reader; drop table loan;
## 各表的创建
CREATE TABLE book( bid varchar2(10), bname long, price number(8,2), qty number(4) ); CREATE TABLE lib( lid varchar2(10), lname varchar(30), address varchar2(50) );
CREATE TABLE reader( rid varchar2(10), rname varchar2(30), dept varchar2(40) ); CREATE TABLE loan( bid varchar2(10), rid varchar2(10), loanDate varchar2(30) );
二、修改表
1、为各表创建约束
DBMS自动实现数据的完整性—借助于约束的作用:保证数据库中永久数据的正确性(主键唯一,不能引用不存在的对象,满足用户定义的条件)
创建主键约束(为图书表、读者表、借阅表创建主键)
主键:唯一标识,该字段的值必须与别的实体必须是不一样的
由dbms保证数据的正确性
##以下为各表主键
alter table book add constraint pk_book primary key(bid); alter table lib add constraint pk_lib primary key(lid); alter table reader add constraint pk_reader primary key(rid); alter table loan add constraint pk_loan primary key(bid,rid);
##创建外键约束(为借阅表创建外键)
alter table loan add constraint fk_loan foreign key(bid) references book(bid); alter table loan add constraint fk2_loan foreign key(rid) references reader(rid);
##创建用户自定义约束(指定图书表中价格必须为正值)
alter table book add constraint ck_price check (price>=0);
##附违反约束条件例子
insert into book (bid,bname,price,qty) values (‘1′,’数据结构’,-48.00,200);
## 2、对各表进行字段调整操作
## 添加新字段
## 在图书表中添加“是否热门”字段
alter table book add (是否热门 varchar2(20));
## 修改字段类型
## 修改图书表中书名字段为变长字符串
alter table book modify (bname varchar2(30));
## 删除不用的字段
## 删除图书表中“是否热门”字段
alter table book drop column 是否热门;
三、删除表
## 删除无关联表
## 删除包含外键引用的表
drop table loan;
四、创建查询表
## 先对book表插入数据
insert into book (bid,bname,price,qty) values (‘1′,’Oracle数据库’,38.00,200); insert into book (bid,bname,price,qty) values (‘2′,’数据结构’,28.00,188); insert into book (bid,bname,price,qty) values (‘3′,’JAVA程序设计’,48.00,400);
## 创建所有昂贵书籍表
##整理格式,虽然还是好长 可能是因为bname为long
set pagesize 30 set linesize 999 select * from book;
##查询语句
select * from book where price>=20 order by price;
五、对借阅情况表进行截断操作
/*这段好像没啥用
解释是
DDL是数据定义语言,如drop,alter,truncate等都是DDL
insert,update,delete,merge等都是DML
在oracle里DML是可以rollback的,而DDL是不可以的
delete * from loan
dml 日志多
ddl 日志少*/
truncate table loan;
/*在Oracle中如果删除了表中的某一条数据,还可以通过回滚操作(rollback)进行回滚,假如想清空一张
表的数据,但是又不想使其能进行回滚操作,就需要使用截断操作。*/
##话说 这段查询语句在我的表里 确实没啥用处 因为没啥数据 无输出 不理解意思
select * from book where bid in( select bidfrom book group by bid having count(bid)>1);
老师评语:
最贵书籍表的创建
CREATE TABLE expBook as SELECT * FROM book WHERE price >= &expPrice;
本站由以下主机服务商提供服务支持:
0条评论