CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] name
AS query
[ WITH [ NO ] DATA ];
CREATE MATERIALIZED VIEW emp_stat_mv
AS
SELECT d.department_name, j.job_title, count(*)
FROM employees e
JOIN departments d ON d.department_id = e.department_id
JOIN jobs j ON j.job_id = e.job_id
GROUP BY d.department_name, j.job_title;
SELECT *
FROM emp_stat_mv
ORDER BY department_name;
department_name |job_title |count|
----------------+-------------------------------+-----+
Accounting |Public Accountant | 1|
Accounting |Accounting Manager | 1|
Administration |Administration Assistant | 1|
Executive |Administration Vice President | 2|
Executive |President | 1|
Finance |Accountant | 5|
Finance |Finance Manager | 1|
Human Resources |Human Resources Representative | 1|
IT |Programmer | 5|
Marketing |Marketing Manager | 1|
Marketing |Marketing Representative | 1|
Public Relations|Public Relations Representative| 1|
Purchasing |Purchasing Clerk | 5|
Purchasing |Purchasing Manager | 1|
Sales |Sales Representative | 29|
Sales |Sales Manager | 5|
Shipping |Stock Manager | 5|
Shipping |Stock Clerk | 20|
Shipping |Shipping Clerk | 20|
CREATE UNIQUE INDEX uk_emp_stat_mv ON emp_stat_mv(department_name, job_title);
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
[ WITH [ NO ] DATA ];
REFRESH MATERIALIZED VIEW CONCURRENTLY emp_stat_mv;
REFRESH MATERIALIZED VIEW emp_stat_mv
WITH NO DATA;
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
RENAME [ COLUMN ] column_name TO new_column_name;
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
RENAME TO new_name;
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
SET SCHEMA new_schema;
ALTER MATERIALIZED VIEW emp_stat_mv
RENAME TO emp_stat_mv2;
DROP MATERIALIZED VIEW [ IF EXISTS ] name [ CASCADE | RESTRICT ];
DROP MATERIALIZED VIEW emp_stat_mv2;
原文作者:SQL编程思想;如有侵权,请联系管理员删除。