视图可以用来方便理解,可以当作中间层简化逻辑,下边是我在晚上看到的一个例子,写的很好,很通俗易懂:
比如说图书馆有图书book(id,name,prise....)
读者reader(id.....)
借阅关系 borrow( bookid,readerid,date)
显然存在一张表很不方便操作,分开又不方便查看
那就建立个视图,view1:
select * from book,reader,borrow where book.id=bookid and reader.id=readerid
等值链接。
这样只要查询select * from view1 就可以看到谁借了什么书了,包括所有的详细内容。
以下是我自己做的一个最简单的oracle数据库视图
创建book(图书)表:
book_id 为主键 book_name 为书名 price 是价格 (几个在0 ¥ 到 1000¥ 之间)
create table book(book_id char(4) primary key, book_name varchar2(30),price number, check(price between 0 and 1000));
创建reader(读者)表:
reader_id 是主键 reader_name 是读者姓名 age 是读者年龄 (必须在0 岁 到 100 之间)
create table reader(reader_id char(4) primary key, reader_name varchar2(30), age number,check(age between 0 and 1000));
创建borrow(关系表)
reader_id 和 book_id 是联合主键。 describe 是描述。
create table borrow(reader_id char(4),book_id char(4), describe varchar2(255), primary key(book_id,reader_id), foreign key(reader_id) references reader (reader_id), foreign key(book_id) references book (book_id));
到现在为止, 数据库表 已经完成了。下边要开始创建视图了
create or replace view book_reader as select r.reader_name,r.age,b.book_name,b.price,bo.describe from book b, reader r, borrow bo where b.book_id = bo.book_id and r.reader_id = bo.reader_id;
已经完成了
你往这三个表了 insert(插入)一些数据就行了 然后测试一下
select * from book_reader ; 这是从视图里查询 查询结果是全部的数据
select * from book_reader where price between 100 and 130 ; 被别人借阅的书中 价格在100 到 130 之间的。