---
title: "DROP MATERIALIZED VIEW"
url: "https://docs.yugabyte.com/stable/api/ysql/the-sql-language/statements/ddl_drop_matview/"
---

# DROP MATERIALIZED VIEW

Use the DROP MATERIALIZED VIEW statement to drop a materialized view.

## Synopsis

Use the `DROP MATERIALIZED VIEW` statement to drop a materialized view.

## Syntax

- [![Grammar Icon](/icons/file-lines.svg)Grammar](#grammar-2)
- [![Diagram Icon](/icons/diagram.svg)Diagram](#diagram-2)

```output.ebnf
drop_matview ::= DROP MATERIALIZED VIEW [ IF EXISTS ] matview_name  
                 [ CASCADE | RESTRICT ]
```

#### drop\_matview

DROPMATERIALIZEDVIEWIFEXISTS[matview\_name](/stable/api/ysql/syntax_resources/grammar_diagrams#matview-name)CASCADERESTRICT

## Semantics

Drop a materialized view named *matview\_name*. If `matview_name` doesn't exist in the specified database, an error will be raised unless the `IF EXISTS` clause is used.

### RESTRICT / CASCADE

`RESTRICT` is the default and it will not drop the materialized view if any objects depend on it.

`CASCADE` will drop any objects that transitively depend on the materialized view.

## Examples

Basic example.

```plpgsql
yugabyte=# CREATE TABLE t1(a int4);
yugabyte=# CREATE MATERIALIZED VIEW m1 AS SELECT * FROM t1;
yugabyte=# CREATE MATERIALIZED VIEW m2 AS SELECT * FROM m1;
yugabyte=# DROP MATERIALIZED VIEW m1; -- fails because m2 depends on m1
```

```
ERROR:  cannot drop materialized view m1 because other objects depend on it
DETAIL:  materialized view m2 depends on materialized view m1
```

```plpgsql
yugabyte=# DROP MATERIALIZED VIEW m1 CASCADE; -- succeeds
```

## See also

- [CREATE MATERIALIZED VIEW](/stable/api/ysql/the-sql-language/statements/ddl_create_matview "CREATE MATERIALIZED VIEW")
- [REFRESH MATERIALIZED VIEW](/stable/api/ysql/the-sql-language/statements/ddl_refresh_matview "REFRESH MATERIALIZED VIEW")
