创建视图

以下示例创建一个基于 stores_demo 数据库中的表的视图:
CREATE VIEW name_only AS
   SELECT customer_num, fname, lname FROM customer

此视图只显示该表的三个列。由于视图不包含 WHERE 子句,所以它不对可出现的行加以限制。

以下示例基于两个表的连接:
CREATE VIEW full_addr AS
SELECT address1, address2, city, state.sname,
      zipcode, customer_num
      FROM customer, state
      WHERE customer.state = state.code
州名表降低了数据库的冗余度;它允许只将完整的州名存储一次,这对于 Minnesota 之类的较长州名可能非常有用。这个 full_addr 视图允许用户检索地址,就像每一行都存储了完整的州名一样。下列两个查询是等价的:
SELECT * FROM full_addr WHERE customer_num = 105

SELECT address1, address2, city, state.sname,
      zipcode, customer_num
      FROM customer, state
      WHERE customer.state = state.code AND customer_num = 105

然而,定义基于连接的视图时务必小心谨慎。这样的视图不是可修改的;即,不能对其使用 UPDATE、DELETE 或 INSERT 语句。有关如何使用视图进行修改的说明,请参阅使用视图进行修改

以下示例对可以在视图中查看的行加以限制:
CREATE VIEW no_cal_cust AS
      SELECT * FROM customer WHERE NOT state = 'CA'
此视图显示 customer 表的所有列,但只显示特定的行。以下示例是一个视图,它限制用户只能查看与他们相关的行:
CREATE VIEW my_calls AS
      SELECT * FROM cust_calls WHERE user_id = USER

cust_calls 表的所有列都可用,但仅限于包含可执行查询的用户的标识的那些行中。