视图
创建和操作表的视图可能会很有用。要定义视图,必须在数据库模式中按如下方式定义表“视图”:
class Views
{
string name; // name of the view
string body; // table name and fields present in the view
tree<name> pk;
};
视图是通过执行如下所示的语句以标准 SQL 方式创建的:
CREATE VIEW name AS select-expression;
例如,以下语句展示了如何使用 xSQL 中的视图:
XSQL>create view SV as select sid from S;
XSQL>insert into S (sid,sname) values (1,1);
XSQL>select * from SV;
sid
------------------------------------------------------------------------------
1
XSQL>drop view SV;
关于 SmartESQL 中的视图,需要牢记的事项:
- 视图是通过嵌套的 SELECT 语句实现的;因此,上述查询将被转换为
select * from (select sid from S);
SmartESQL 优化器并非总是能高效地转换嵌套查询。因此,有时使用视图的查询可能不如手动编写且未使用视图的查询高效。
有关创建的视图的信息存储在“Views”表中。如果视图定义需要持久化,请将“Views”表定义为“持久化”。(显然,这仅适用于持久化数据库。)
视图是只读的 - 不支持可更新视图。这意味着无法执行类似以下操作:
insert into SV (sid) values (1);