Привет! Меня зовут Андрей Шмиг, я разработчик платформы DataHub, платформа для совместной работы над данными - своего рода GitHub для данных. В этой статье покажу на что способен веб-редактор MySQL хранилища и почему это отличный инструмент для работы тем, кто изучает SQL.
Предыдущие статьи в хронологическом порядке:
Как делиться структурированными данными и получать за них донаты?
Репозитории данных коммерческого типа. Как зарабатывать на доступе к данным?
Организовываем доступ к публичным данным через Predefined Queries
Ещё один редактор ...
В поиске Яндекс или Google можно найти достаточное количество онлайн-редакторов для тестирования и написания SQL запросов и все они хороши по-своему - некоторые редакторы поддерживают создание таблиц, некоторые поддерживают загрузку и выгрузку данных, некоторые редакторы ограничиваются выполнением запросов к заранее созданным таблицам и базам, а некоторые позволяют работать с базой данных и таблицами только в рамках текущей сессии. У каждого редактора свои ограничения и возможности, которые могут подойти не всем.
Список из 4 популярных иностранных веб-редакторов:
В DataHub веб-редактор хранилища MySQL является органично встроенным компонентом, который позволяет работать с хранилищем MySQL (не выборе предоставляются ещё несколько - как SQL, так и NoSQL) так, словно вы работаете с локальной базой данных - история ваших действий и запросов сохраняется, а приватные репозитории с данными позволяют работать с закрытыми данными только вам сохраняя наработки для последующих изменений.
Программные ориентиры
При разработке модуля веб-редактора для хранилища MySQL и Visual Query Builder репозитория ориентировался на продвинутые продукты:
MySQL Workbench;
DBeaver;
Некоторые визуальные составляющие были напрямую переняты, а некоторые переработаны и улучшены.
Хранилища данных MySQL
Любое хранилище данных может быть создано в рамках репозитория, как закрытого, так и открытого, поэтому я воспользуюсь созданным из предыдущих статьях демо-репозиторием для демонстрации.
В созданном хранилище MySQL у меня одна таблица с названием countries и 4 записями со странами.
Репозиторий может содержать неограниченное количество хранилищ, а все хранилища наследуют область доступа (приватность) самого репозитория.
Веб-редактор MySQL
Для каждого типа хранилища существует свой тип Wizard (визуального помощника) и доступен он в карточке хранилища по клику на иконку консоли в правом верхнем углу:
По-умолчанию MySQL Wizard открывается с активной вкладкой Console в которой происходит работа с запросами и результатами выборок данных.
Остановлюсь подробнее на возможностях предоставляемых редактором:
Открытие SQL-скрипта с локальной машины;
Сохранение SQL-запроса на локальную машину;
Форматирование запроса;
Выполнение запроса (множественное);
Выполнение последнего запроса (re-execution);
Пояснение запроса (EXPLAIN);
История запросов;
Очистка содержимого редактора;
Во вкладке Storage - информация о хранилище, структура отображения аналогична структуре отображения информации в MySQL Workbench:
Содержит информацию о:
Таблицах;
Колонках;
Индексах;
Триггерах;
Отображениях;
Процедурах;
Функциях;
Событиях;
Все эти составляющие базы данных MySQL поддерживаются для использования через компонент редактора MySQL Wizard.
На примере таблицы countries продемонстрирую структуру отображения данных:
Содержит информацию о:
Общей информации о таблице;
Данных (пример выборки из 25 строк);
Колонках;
Индексах;
Триггерах;
Внешних ключах;
Разбивках (partitions);
DDL;
Создаём таблицу и заполняем данными
В текущий реализации MySQL Wizard поддерживает только консольный режим взаимодействия с хранилищем (базой данных) - создание таблиц, колонок, триггеров и прочего осуществляется через написание SQL-запросов.
Напишем запрос для создания таблицы projects:
Отформатируем его:
... и выполним:
Как вы можете заметить произошли некоторые изменения в отображении после выполнения запроса:
с левой стороны в списке таблиц появилась созданная нами таблица projects;
результаты выполненного запроса отобразились под редактором;
в историю добавилась запись о выполненном запросе создания таблиц:
Перейдем в таблицу projects и посмотрим на список созданных колонок во вкладке Columns, чтобы убедиться, что всё создано так, как мы того и хотели:
Отлично, всё работает именно так, как и должно.
Давайте заполним данными нашу таблицу - возвращаемся в Console и пишем запрос:
Обратите внимание, что в этот раз я написал в редакторе два запроса - первый для заполнения таблицы projects тестовыми данными, а второй - для выборки полученных данных.
Как и в MySQL Workbench редактор MySQL Wizard в DataHub поддерживает множественное отображение результатов выполнения запросов:
Очистим таблицу воспользовавшись повторением команды из истории, которую я раньше уже выполнил:
Нажмем на кнопку с иконкой Консоли и выполним запрос:
Все наши изменения с базой сохраняются и будут доступны при повторном посещении (редактировании) репозитория данных.
Редактор MySQL Wizard отображает полные коды ошибок вместе с текстовым описанием для повышения удобства их исправления:
Веб-редактор MySQL Wizard может стать для вас отличным помощником в изучении SQL.
Надеюсь, что возможности DataHub позволят вам делиться, монетизировать и работать с данными эффективно!
Если вам понравилась статья — ставьте лайк и оставляйте комментарий. Подписывайтесь на мой блог про DataHub на Хабре, а так же на Телеграм канал поддержки сервиса.
Мой публичный профиль на DataHub — @aashmig.
Буду рад ответить на ваши вопросы и дополнить статью.
Комментарии (7)
makariyp
24.04.2023 14:54+1Отличная идея, можно найти свое применение
AndrewShmig Автор
24.04.2023 14:54Благодарю. Рассматриваю со временем MySQL Wizard как полноценную замену MySQL Workbench, но в веб-интерфейсе с возможность подключения удаленных баз данных.
Notte
24.04.2023 14:54+1Сохраняется ли резалт-сет от предыдущего выполнения запроса или после запуска текущего все предыдущие результаты удаляются? Понятно, что можно запустить несколько запросов одновременно. Но если надо именно по отдельности запустить запросы и потом сравнить результат.
AndrewShmig Автор
24.04.2023 14:54Все результаты изменений в структуре и содержимом данных сохраняются.
Или речь именно про отображение результатов предыдущего запроса? Если про отображение, то зависит от того, как вы запросы выполните. Я демонстрировал, что можно два запроса одновременно выполнить.
Если же вы про один запрос за один раз, то результаты предыдущего не сохраняются - не было такого запроса и не ясна его цель.
Notte
24.04.2023 14:54+1Да, я видела ваш скрин с insert+select. Из него понятно, как работает одновременное выполнение нескольких запросов. Я бы сказала, что аналогично ведет себя SQL Server Management Studio. Но на предыдущей работе мне довелось поработать с DataGrip, в котором можно залочить резалт-сет, чтобы результат выполнения предыдущего запроса не затирался, а результат работы нового запроса отображался в новом гриде. Это полезно, например, чтобы сравнить данные до изменения (update) и после него. Понятно, что можно сделать за один запуск: select/update/select. Но не всегда это удобно. В ранее упомянутой SSMS для этого придется выполнять запросы в разных окнах.
PythonProgramer
есть ли возможность шифрования данных?
AndrewShmig Автор
Раскройте мысль - что именно и как хотите шифровать.