DB2物化查询表(MQT)是DB2数据库中一类特殊的表
物化表和视图的区别
物化表是一个查询结果集,视图是一个SQL语句。
以下是一个简单例子(说明物化表)
1.创建表,插入测试数据
----创建表 CREATE TABLE UserInfo ( ID INT NOT NULL, NAME VARCHAR(20), Hight INT, sex CHAR(2) ) --********************************************************************* ------------------------values插入数据--------------------------------- --********************************************************************* --------------------------单条数据插入 INSERT INTO UserInfo(ID,NAME,Hight,sex) VALUES(1,'杭允贤','168','女'); --------------------------插入多条数据 INSERT INTO UserInfo(ID,NAME,Hight,sex) VALUES(2,'王振','175','男'),(3,'朱祁钰','173','男')
2.创建物化表
SELECT * FROM new_UserInfo create table new_UserInfo as (select * from UserInfo) data initially deferred refresh IMMEDIATE; refresh table new_UserInfo;
注意:在创建时可能会出现以下错误(导致出错的原因是:对于refresh immediate类型的MQT在select时必须包含所FROM的每个表的至少一个唯一键。假如不包含唯一键,则会报错:SQLSTATE:428EC (为具体化查询表,指定的全查询无效)。)
解决办法:
ALTER TABLE UserInfo ADD UNIQUE(ID)
表UserInfo截图
表new_UserInfo截图
现在在表UserInfo中插入一条数据,查询出表new_UserInfo的结构如下:
INSERT INTO UserInfo(ID,NAME,Hight,sex) VALUES(4,'杭刚','177','男');
这是自动更新物化表,同时也可以将物化表改为手动更新的