Oracle和其他数据库系统中的视图仅仅是存储在内存中的SQL语句的表示,以便可以轻松地重新使用。例如,如果我们经常发出以下查询
SELECT customerid, customername FROM customers WHERE countryid='US';
要创建视图,请使用本示例中所示的CREATE VIEW命令
CREATE VIEW view_uscustomers
AS
SELECT customerid, customername FROM customers WHERE countryid='US';
此命令创建一个名为view_uscustomers的新视图。请注意,除了定义此视图的数据字典条目外,此命令不会导致任何实际存储在数据库中。这意味着每次查询此视图时,Oracle都必须出去执行视图并查询数据库数据。我们可以这样查询视图:
SELECT * FROM view_uscustomers WHERE customerid BETWEEN 100 AND 200;
Oracle将把查询转换为:
SELECT *
FROM (select customerid, customername from customers WHERE countryid='US')
WHERE customerid BETWEEN 100 AND 200
使用视图的好处
>正在使用的代码的通用性。因为一个视图是基于一个公共的SQL集合,这意味着当它被调用时,它不太可能需要解析。
>安全。视图长期以来被用于隐藏实际包含您正在查询的数据的表。此外,视图可用于限制给定用户有权访问的列。
> Predicate pushing