您的位置:首页 > 数据库 > Oracle

oracle视图作用及创建方法咯

2013-09-11 15:54 453 查看
视图一般都是需要sys权限才能查看的吧,而且自己建的视图还需要进行:
SQL>CONN /as sysdba;
SQL>grant create view to scott;

在查看日志文件的时候,想查看v$log和v$logfile时候发现不能用scott用户登录,显示视图或者表不存在!

视图可以用来方便理解,可以当作中间层简化逻辑,下边是我在晚上看到的一个例子,写的很好,很通俗易懂:

比如说图书馆有图书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 之间的。

#数据库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: