> ## Documentation Index
> Fetch the complete documentation index at: https://cockroachlabs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# DROP VIEW

export const InternalLink = ({version, path = "", children, ...props}) => {
  let detectedVersion = version || "stable";
  if (typeof window !== 'undefined' && !version) {
    const match = window.location.pathname.match(/\/docs\/([^/]+)/);
    if (match) {
      detectedVersion = match[1];
    }
  }
  const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
  return <a href={`/docs/${detectedVersion}/${normalizedPath}`} {...props}>
      {children}
    </a>;
};

The `DROP VIEW` <InternalLink path="sql-statements">statement</InternalLink> removes a <InternalLink path="views">view</InternalLink> from a database.

<Note>
  The \`\` statement performs a schema change. For more information about how online schema changes work in CockroachDB, see <InternalLink path="online-schema-changes">Online Schema Changes</InternalLink>.
</Note>

## Required privileges

The user must have the `DROP` <InternalLink path="security-reference/authorization#managing-privileges">privilege</InternalLink> on the specified view(s). If `CASCADE` is used to drop dependent views, the user must have the `DROP` privilege on each dependent view as well.

## Synopsis

<img src="https://mintcdn.com/cockroachlabs/9gyQKEP-CuQuCsI3/images/sql-diagrams/v25.3/drop_view.svg?fit=max&auto=format&n=9gyQKEP-CuQuCsI3&q=85&s=d5e93b27f1c4cce7f6da696d280ff6f3" alt="drop_view syntax diagram" style={{maxWidth: "100%", overflowX: "auto"}} width="693" height="199" data-path="images/sql-diagrams/v25.3/drop_view.svg" />

## Parameters

| Parameter        | Description                                                                                                                                    |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `MATERIALIZED`   | Drop a <InternalLink path="views#materialized-views">materialized view</InternalLink>.                                                         |
| `IF EXISTS`      | Drop the view if it exists; if it does not exist, do not return an error.                                                                      |
| `view_name_list` | A comma-separated list of view names. To find view names, use:<br /><br />`SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';` |
| `CASCADE`        | Drop other views that depend on the view being dropped.<br /><br />`CASCADE` does not list views it drops, so should be used cautiously.       |
| `RESTRICT`       | *(Default)* Do not drop the view if other views depend on it.                                                                                  |

## Examples

### Remove a view (no dependencies)

In this example, other views do not depend on the view being dropped.

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
```

```
  table_catalog | table_schema |  table_name   | table_type | is_insertable_into | version
----------------+--------------+---------------+------------+--------------------+----------
  bank          | public       | user_accounts | VIEW       | NO                 |       2
  bank          | public       | user_emails   | VIEW       | NO                 |       1
(2 rows)
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> DROP VIEW bank.user_emails;
```

```
DROP VIEW
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
```

```
  table_catalog | table_schema |  table_name   | table_type | is_insertable_into | version
----------------+--------------+---------------+------------+--------------------+----------
  bank          | public       | user_accounts | VIEW       | NO                 |       4
(1 row)
```

### Remove a view (with dependencies)

In this example, another view depends on the view being dropped. Therefore, it's only possible to drop the view while simultaneously dropping the dependent view using `CASCADE`.

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
```

```
  table_catalog | table_schema |  table_name   | table_type | is_insertable_into | version
----------------+--------------+---------------+------------+--------------------+----------
  bank          | public       | user_accounts | VIEW       | NO                 |       2
  bank          | public       | user_emails   | VIEW       | NO                 |       1
(2 rows)
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> DROP VIEW bank.user_accounts;
```

```
ERROR: cannot drop relation "user_accounts" because view "user_emails" depends on it
SQLSTATE: 2BP01
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> DROP VIEW bank.user_accounts CASCADE;
```

```
DROP VIEW
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
```

```
  table_catalog | table_schema | table_name | table_type | is_insertable_into | version
----------------+--------------+------------+------------+--------------------+----------
(0 rows)
```

## See also

* <InternalLink path="views">Views</InternalLink>
* <InternalLink path="create-view">`CREATE VIEW`</InternalLink>
* <InternalLink path="show-create">`SHOW CREATE`</InternalLink>
* <InternalLink path="alter-view">`ALTER VIEW`</InternalLink>
* <InternalLink path="online-schema-changes">Online Schema Changes</InternalLink>
