Управление таблицами
В Managed ClickHouse управлять таблицами можно с помощью SQL-запросов. С полным списком SQL-операторов ClickHouse вы можете ознакомиться в официальной документации ClickHouse.
Посмотреть список таблиц в базе данных
Заголовок раздела «Посмотреть список таблиц в базе данных»Запросите список таблиц из системной таблицы system.tables, которая содержит метаданные обо всех таблицах. Для этого используйте оператор SELECT и виртуальный движок clusterAllReplicas, который выполняет запрос к указанной таблице на всех узлах всех шардов заданного кластера.
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT hostName() AS узел, name AS база_данныхFROM clusterAllReplicas('{cluster}', system.databases);В запросе:
- Функция
hostName()возвращает имена узлов. Имена узлов и баз данных будут записаны в столбцы с псевдонимамиузелибаза_данных. - Имя кластера автоматически определяется макросом
{cluster}, заданным в конфигурации.
Выполните запрос:
sql SELECT hostName() AS узел, name AS таблицаFROM clusterAllReplicas('{cluster}', system.tables)WHERE database = '<имя базы данных>'ORDER BY узел, таблица;Здесь функция
hostName()возвращает имена узлов. Имена узлов и таблиц будут записаны в столбцы с псевдонимамиузелитаблица.В результате будет выведен список таблиц, которые содержатся в указанной базе данных.
Посмотреть информацию о конкретной таблице
Заголовок раздела «Посмотреть информацию о конкретной таблице»Запросите данные о таблице из системной таблицы system.tables по ее имени. Для этого используйте оператор SELECT.
Подключитесь к кластеру.
Узнайте имя таблицы::
sql SELECT hostName() AS узел, name AS таблицаFROM clusterAllReplicas('{cluster}', system.tables)WHERE database = '<имя базы данных>'ORDER BY узел, таблица;В запросе:
- Функция
hostName()возвращает имена узлов. Имена узлов и баз данных будут записаны в столбцы с псевдонимамиузелибаза_данных. - Имя кластера автоматически определяется макросом
{cluster}, заданным в конфигурации.
Узнайте имя базы данных:
sql SELECT hostName() AS узел, name AS база_данныхFROM clusterAllReplicas('{cluster}', system.databases);Здесь функция
hostName()возвращает имена узлов. Имена узлов и баз данных будут записаны в столбцы с псевдонимамиузелибаза_данных.Выполните запрос:
sql SELECT *FROM system.tablesWHERE database = '<имя базы данных>'AND name = '<имя таблицы>';В результате будут выведены метаданные и технические параметры базы данных.
Создать таблицу
Заголовок раздела «Создать таблицу»Для создания таблицы используйте оператор CREATE.
Для создания таблицы необходимо указать движок таблиц. В зависимости от движка передаваемые в запросе параметры меняются.
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT hostName() AS узел, name AS база_данныхFROM clusterAllReplicas('{cluster}', system.databases);В запросе:
- Функция
hostName()возвращает имена узлов. Имена узлов и баз данных будут записаны в столбцы с псевдонимамиузелибаза_данных. - Имя кластера автоматически определяется макросом
{cluster}, заданным в конфигурации.
Выполните запрос:
sql CREATE TABLE [IF NOT EXISTS] <имя базы данных>.<имя таблицы>(<имя столбца 1> <тип столбца 1> [COMMENT '<комментарий к столбцу>'],<имя столбца 2> <тип столбца 2>,...)ENGINE = <движок>ORDER BY <столбец сортировки>[COMMENT '<комментарий к таблице>'][ON CLUSTER <имя кластера>];Условия в запросе:
IF NOT EXISTS— предотвращает ошибку, если таблица с таким именем уже существует.ON CLUSTER— создает таблицы на всех узлах заданного кластера.ENGINE— задает тип движка.ORDER BY— определяет столбец сортировки. Обязателен для движков семействаMergeTree.COMMENT— комментарий.
Пример запроса:
sql CREATE TABLE IF NOT EXISTS my_database.my_table(id UInt64 COMMENT 'Уникальный идентификатор',name String,created_at DateTime)ENGINE = MergeTreeORDER BY idCOMMENT 'Таблица событий пользователей'ON CLUSTER 'my_cluster';
В ClickHouse доступны другие способы создания таблиц. Вы можете ознакомиться с ними в официальной документации ClickHouse.
Посмотреть структуру таблицы
Заголовок раздела «Посмотреть структуру таблицы»Для просмотра используйте оператор DESCRIBE.
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT hostName() AS узел, name AS база_данныхFROM clusterAllReplicas('{cluster}', system.databases);В запросе:
- Функция
hostName()возвращает имена узлов. Имена узлов и баз данных будут записаны в столбцы с псевдонимамиузелибаза_данных. - Имя кластера автоматически определяется макросом
{cluster}, заданным в конфигурации.
Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql DESCRIBE TABLE <имя базы данных>.<имя таблицы>;В результате будет выведен список столбцов таблицы с их типами.
Посмотреть все столбцы таблицы
Заголовок раздела «Посмотреть все столбцы таблицы»Для просмотра используйте оператор SELECT.
Запросите данные о столбцах из системной таблицы system.columns по именам базы данных и таблицы.
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT hostName() AS узел, name AS база_данныхFROM clusterAllReplicas('{cluster}', system.databases);В запросе:
- Функция
hostName()возвращает имена узлов. Имена узлов и баз данных будут записаны в столбцы с псевдонимамиузелибаза_данных. - Имя кластера автоматически определяется макросом
{cluster}, заданным в конфигурации.
Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql SELECT name, type, default_expressionFROM system.columnsWHERE database = '<имя базы данных>' AND table = '<имя таблицы>';В результате будет выведена подробная информация о столбцах таблицы: имя, тип и значение по умолчанию.
Посмотреть первые строки таблицы
Заголовок раздела «Посмотреть первые строки таблицы»Для просмотра используйте оператор SELECT.
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT hostName() AS узел, name AS база_данныхFROM clusterAllReplicas('{cluster}', system.databases);В запросе:
- Функция
hostName()возвращает имена узлов. Имена узлов и баз данных будут записаны в столбцы с псевдонимамиузелибаза_данных. - Имя кластера автоматически определяется макросом
{cluster}, заданным в конфигурации.
Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Узнайте структуру таблицы:
sql DESCRIBE TABLE <имя базы данных>.<имя таблицы>;Выполните запрос:
sql SELECT <имя столбца 1>, <имя столбца 2>, ... FROM <имя базы данных>.<имя таблицы> LIMIT <число строк>;Здесь условие
LIMITвозвращает не более заданного количества найденных записей из таблицы.Если нужно вывести данные из всех столбцов, используйте в запросе символ
*вместо перечисления их имен.Пример запроса:
sql SELECT id, name, created_at FROM my_database.my_table LIMIT 7;
Посмотреть, как создавалась таблица
Заголовок раздела «Посмотреть, как создавалась таблица»Для операции просмотра используйте оператор SHOW.
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT hostName() AS узел, name AS база_данныхFROM clusterAllReplicas('{cluster}', system.databases);В запросе:
- Функция
hostName()возвращает имена узлов. Имена узлов и баз данных будут записаны в столбцы с псевдонимамиузелибаза_данных. - Имя кластера автоматически определяется макросом
{cluster}, заданным в конфигурации.
Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql SHOW CREATE TABLE <имя базы данных>.<имя таблицы>;В результате будет выведен полный SQL-запрос, которым была создана таблица.
Удалить таблицу
Заголовок раздела «Удалить таблицу»Для удаления таблицы используйте оператор DROP.
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT hostName() AS узел, name AS база_данныхFROM clusterAllReplicas('{cluster}', system.databases);В запросе:
- Функция
hostName()возвращает имена узлов. Имена узлов и баз данных будут записаны в столбцы с псевдонимамиузелибаза_данных. - Имя кластера автоматически определяется макросом
{cluster}, заданным в конфигурации.
Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql DROP TABLE [IF EXISTS] <имя базы данных>.<имя таблицы> ON CLUSTER '<имя кластера>' SYNC;Условия в запросе:
IF EXISTS— предотвращает ошибку, если таблица с таким именем не существует в указанной базе данных.ON CLUSTER— удаляет таблицу на всех узлах заданного кластера.SYNC— гарантирует, что команда завершится только после применения изменений на всех узлах.
В результате таблица удалится вместе со всеми данными со всех узлов.