---
title: "Management"
sidebarTitle: "Overview"
description: "Create, list, and drop the objects in a catalog, from Python, TypeScript, or SQL."
icon: folder-tree
keywords: ["ddl", "create", "drop", "list", "catalog", "management"]
---
Use the SDKs or SQL to manage [catalog objects](/basics/catalog), including
tables, namespaces and views. The tables below provide a quick reference to
the available methods; each object's guide covers its setup and behavior.
Some long-running operations also provide a submission method that returns a
[job](/basics/jobs). See the operation's guide for how to track completion.
## Management APIs {#surface}
SQL is available through the Enterprise Flight SQL endpoint.
See [SQL](/basics/sql#sql-is-remote).
### Namespaces {#namespaces}
| | Python | TypeScript | SQL |
| --- | --- | --- | --- |
| create | `create_namespace` | `createNamespace` | -- |
| list | `list_namespaces` | `listNamespaces` | -- |
| describe | `describe_namespace` | `describeNamespace` | -- |
| exists | `namespace_exists` | -- | -- |
| drop | `drop_namespace` | `dropNamespace` | -- |
See [Namespaces](/management/namespace).
### Tables {#tables}
| | Python | TypeScript | SQL |
| --- | --- | --- | --- |
| create | `create_table` | `createTable` | `CREATE TABLE` |
| create empty | `create_table(schema=)` | `createEmptyTable` | `CREATE TABLE` |
| open | `open_table` | `openTable` | -- |
| list | `table_names`, `list_tables` | `tableNames`, `listTables` | -- |
| exists | `table_exists` | -- | -- |
| rename | `rename_table` | `renameTable` | -- |
| clone | `clone_table` | `cloneTable` | -- |
| drop | `drop_table`, `drop_table_async` | `dropTable`, `dropTableAsync` | `DROP TABLE` |
| drop all | `drop_all_tables` | `dropAllTables` | -- |
See [Tables](/management/table) for creating one and shaping its schema.
### Materialized views {#materialized-views}
| | Python | TypeScript | SQL |
| --- | --- | --- | --- |
| create | `create_materialized_view` | `createMaterializedView` | `CREATE MATERIALIZED VIEW` |
| open | `open_materialized_view` | `openMaterializedView` | -- |
| list | `list_materialized_views` | `listMaterializedViews` | `SHOW MATERIALIZED VIEWS` |
| refresh | `refresh` | `refresh` | `REFRESH MATERIALIZED VIEW` |
| drop | `drop_table` | `dropTable` | `DROP TABLE` |
Local `list_materialized_views` reads table schemas to find views. On
Enterprise, it requests the server's view listing.
See [Materialized views](/management/materialized-view) for creating one, and
[Refresh a materialized view](/feature-engineering/materialized-views) for keeping
it current.
### Views {#views}
| | Python | TypeScript | SQL |
| --- | --- | --- | --- |
| create | `create_view` | `createView` | `CREATE VIEW` |
| list | `list_views` | `listViews` | -- |
| drop | `drop_view`, `drop_view_async` | `dropView`, `dropViewAsync` | `DROP VIEW` |
Enterprise Views exist only on an Enterprise cluster that
enables them; the SDK methods send the view's SQL query to the deployment. See
[Views](/management/view).
{/*
Draft for the Functions release.
### Functions {#functions}
| | Python | TypeScript | SQL |
| --- | --- | --- | --- |
| create | `create_function`, `create_function_async` | -- | `CREATE FUNCTION` |
| get | `get_function` | -- | -- |
| list | `list_functions` | -- | `SHOW FUNCTIONS` |
| drop | `drop_function` | -- | -- |
Enterprise A function runs on the server, and only on
a deployment that enables functions, so there is no local form. The TypeScript
SDK has no function methods; use Python or SQL.
See [Functions](/management/function).
*/}
### Jobs {#jobs}
| | Python | TypeScript | SQL |
| --- | --- | --- | --- |
| list | `list_jobs` | `listJobs` | `SHOW JOBS` |
| open | `open_job` | `openJob` | -- |
| cancel | `cancel_job` | `cancelJob` | -- |
| errors | `job.events` | `job.events` | `SHOW ERRORS` |
See [Jobs](/basics/jobs).
### Indexes {#indexes}
| | Python | TypeScript | SQL |
| --- | --- | --- | --- |
| create | `create_index`, `create_index_async` | `createIndex`, `createIndexAsync` | `CREATE INDEX` |
| list | `list_indices` | `listIndices` | -- |
| stats | `index_stats` | `indexStats` | -- |
| drop | `drop_index` | `dropIndex` | `DROP INDEX` |
SQL `CREATE INDEX` covers one column and takes no user-chosen name -- the server
names it. For a multi-column or named index, use the SDK.
Indexes are a performance decision rather than a structural one, so they are
covered under [Maintenance](/indexing).
## Work within a namespace {#namespace-paths}
Most connection-level operations take a `namespace_path` (`namespacePath`) to
act inside a namespace rather than at the database root:
```python Python icon="python"
db.table_names(namespace_path=["prod", "events"])
tbl = db.open_table("clicks", namespace_path=["prod", "events"])
```
```typescript TypeScript icon="square-js"
await db.tableNames(["prod", "events"]);
const tbl = await db.openTable("clicks", ["prod", "events"]);
```
```sql SQL
SELECT * FROM prod.events.clicks
```
In SQL the path is written as dotted identifiers instead.
## Delete catalog objects {#dropping}
`drop_table` removes the table and every version of it. Table
[versioning](/management/table#versioning) does not survive the table being dropped, and
neither `drop_database` nor `drop_all_tables` asks for confirmation.
Dropping a **view** removes only the saved query. Dropping a **materialized
view** removes stored rows, because a materialized view is a table.