View不占存储空间,只在数据字典中存了定义它的sql.
CREATE VIEW a AS
SELECT XXXX
FROM XXX
WHERE XXX
WITH CHECK OPTION CONSTRAINT XXX;
Check option:对这个视图的insert/update不能产生该视图查询不出的纪录,比如一个department_id = 10的视图,只能对该视图插入department_id = 10的纪录,不能插入department_id =30.
当你在查询中引用到视图时,oracle会:
1。将查询和视图定义的查询语句进行合并和优化。
2.将语句放进共享sql区。当没有共享sql区有类似的语句时,oracle才会解析该语句。
3.执行语句。
Join view:视图基于多个表或视图。
一个可更新的join view,就是没有WITH READ ONLY限制的join view,此外,还有一些限制,比如对join view的insert/update/delete一次只能更改一个基表的数据。
一个join view中的所有可更新的列必须对应一个key-preserved table中的列。
连接查询中的key-preserved表,是指该表中的数据在该连接查询的结果中,最多只出现一次。比如,
Create view staff_dept_10_30 as
Select employee_id, last_name, job_id, e.department_id
From employees e, departments d
Where e.department_id = d.department_id
And e.department_id in (10, 30);
其中employees表就是key preserved table, 但departments就不是。
物化视图:
1.包含真正的数据,占用存储空间。
2.主表发生change的时候,他们也会更新。
3.提高性能。
4.对sql 应用和用户来说是透明的。
物化试图的刷新方法:fast refresh, complete refresh
Complete refresh是在物化试图最开始定义as BUILD IMMEDIATE的时候发生的。
Fast refresh只刷新刚发生的数据变化。
Query rewrite:
对主表数据量过大,且有aggregate或join时,数据库会将查询优化,把对主表的访问写成对物化视图的访问,以提高性能。
Dimension 维
一个维表定义了列和列之间的逻辑上的层次关系,例如
CREATE DIMENSION customers_dim
LEVEL customer IS (customers.cust_id)
LEVEL city IS (customers.cust_city)
LEVEL state IS (customers.cust_state_province)
LEVEL country IS (countries.country_id)
LEVEL subregion IS (countries.country_subregion)
LEVEL region IS (countries.country_region)
HIERARCHY geog_rollup (
Customer CHILD OF
City CHILD OF
State CHILD OF
Country CHILD OF
Subregion CHILD OF
Region
JOIN KEY (customers.country_id) REFERENCES country )
ATTRIBUTE customer DETERMINES
(cust_first_name, ….)
ATTRIBUTE country DETERMINES (countries.country_name);
更多的可以参考数据仓库。
同义词:其实就是一个别名。对同义词的授权就是对其对象的授权。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11903161/viewspace-676187/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11903161/viewspace-676187/