Привет! Меня зовут Андрей Шмиг, я разработчик платформы DataHub, платформа для совместной работы над данными - своего рода GitHub для данных. В этой статье покажу на что способен веб-редактор MySQL хранилища и почему это отличный инструмент для работы тем, кто изучает SQL.

Предыдущие статьи в хронологическом порядке:

Ещё один редактор ...

В поиске Яндекс или 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)


  1. PythonProgramer
    24.04.2023 14:54
    +1

    есть ли возможность шифрования данных?


    1. AndrewShmig Автор
      24.04.2023 14:54

      Раскройте мысль - что именно и как хотите шифровать.


  1. makariyp
    24.04.2023 14:54
    +1

    Отличная идея, можно найти свое применение


    1. AndrewShmig Автор
      24.04.2023 14:54

      Благодарю. Рассматриваю со временем MySQL Wizard как полноценную замену MySQL Workbench, но в веб-интерфейсе с возможность подключения удаленных баз данных.


  1. Notte
    24.04.2023 14:54
    +1

    Сохраняется ли резалт-сет от предыдущего выполнения запроса или после запуска текущего все предыдущие результаты удаляются? Понятно, что можно запустить несколько запросов одновременно. Но если надо именно по отдельности запустить запросы и потом сравнить результат.


    1. AndrewShmig Автор
      24.04.2023 14:54

      Все результаты изменений в структуре и содержимом данных сохраняются.

      Или речь именно про отображение результатов предыдущего запроса? Если про отображение, то зависит от того, как вы запросы выполните. Я демонстрировал, что можно два запроса одновременно выполнить.

      Если же вы про один запрос за один раз, то результаты предыдущего не сохраняются - не было такого запроса и не ясна его цель.


      1. Notte
        24.04.2023 14:54
        +1

        Да, я видела ваш скрин с insert+select. Из него понятно, как работает одновременное выполнение нескольких запросов. Я бы сказала, что аналогично ведет себя SQL Server Management Studio. Но на предыдущей работе мне довелось поработать с DataGrip, в котором можно залочить резалт-сет, чтобы результат выполнения предыдущего запроса не затирался, а результат работы нового запроса отображался в новом гриде. Это полезно, например, чтобы сравнить данные до изменения (update) и после него. Понятно, что можно сделать за один запуск: select/update/select. Но не всегда это удобно. В ранее упомянутой SSMS для этого придется выполнять запросы в разных окнах.