--- 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.