视观表 (View) 可以被当作是虚拟表格。它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料。
建立一个视观表的语法如下:
CREATE VIEW "VIEW_NAME" AS "SQL 语句";
"SQL 语句" 可以是任何一个我们在这个教材中有提到的 SQL。
来看一个例子。假设我们有以下的表格:
Customer 表格
栏位名称 |
资料种类 |
First_Name |
char(50) |
Last_Name |
char(50) |
Address |
char(50) |
City |
char(50) |
Country |
char(25) |
Birth_Date |
datetime |
若要在这个表格上建立一个包括 First_Name, Last_Name, 和 Country 这三个栏位的视观表,我们就打入,
CREATE VIEW V_Customer
AS SELECT First_Name, Last_Name, Country
FROM Customer;
现在,我们就有一个叫做 V_Customer 的视观表:
V_Customer 视观表
栏位名称 |
资料种类 |
First_Name |
char(50) |
Last_Name |
char(50) |
Country |
char(25) |
我们也可以用视观表来连接两个表格。在这个情况下,使用者就可以直接由一个视观表中找出她要的资讯,而不需要由两个不同的表格中去做一次连接的动作。假设有以下的两个表格:
Store_Information表格
Los Angeles |
1500 |
05-Jan-1999 |
San Diego |
250 |
07-Jan-1999 |
Los Angeles |
300 |
08-Jan-1999 |
Boston |
700 |
08-Jan-1999 |
Geography 表格
East |
Boston |
East |
New York |
West |
Los Angeles |
West |
San Diego |
我们就可以用以下的指令来建一个包括每个地区 (Region) 销售额 (Sales) 的视观表:
CREATE VIEW V_REGION_SALES
AS SELECT A1.Region_Name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.Store_Name = A2.Store_Name
GROUP BY A1.Region_Name;
这就给我们有一个名为 V_REGION_SALES 的视观表。这个视观表包含不同地区的销售哦。如果我们要从这个视观表中获取资料,我们就打入,
SELECT * FROM V_REGION_SALES;
结果:
REGION |
SALES |
East |
700 |
West |
2050 |
Linux实测如下: