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