Привет, Хабр! Меня зовут Анастасия Иванова, я работаю в МТТ (входит в экосистему МТС) техническим писателем МТС Exolve. В статье расскажу о том, как ChatGPT может сэкономить время и усилия начинающего специалиста по SQL.

Нейросеть может быть весьма полезной для тех, кто плохо знаком с языком структурированных запросов. Пользователю нужно просто сказать нейросети, что требуется сделать, и она сгенерирует соответствующий SQL-запрос под его нужды. Таким образом, ChatGPT помогает в работе, а также позволяет изучать SQL и эффективнее использовать возможности языка. Подробности — под катом.

В чём может помочь нейросеть

Сгенерировать SQL-запросы

ChatGPT в состоянии помочь в написании SQL-запросов для поиска и обработки информации, а также управления базой данных. На Хабре уже публиковалась исчерпывающая статья про написание запросов. Но стоит помнить об ограничениях ИИ. ChatGPT может совершать ошибки, а результаты иногда не соответствуют самому запросу, о чём говорят как на Хабре, так и на зарубежных ресурсах, включая DataGeek. Так что будьте внимательны при работе с этим инструментом.

Отладить SQL-код

Нейросеть даёт возможность устранить неполадки в коде SQL, оптимизировать производительность запросов, исправить в них синтаксические ошибки и выявить потенциальные проблемы.

Также ИИ может дать совет по оптимизации любого запроса — например, где и когда использовать индексы, как снизить сложность и отказаться от подзапросов и так далее.

Здесь тоже есть нюанс: всегда помните о риске похищения корпоративных данных, содержащихся в коде, да и самого кода как интеллектуальной собственности.

Научить понимать принцип работы SQL

ChatGPT предоставляет сведения о синтаксисе SQL, ключевых словах и функциях. Это упрощает разработчикам написание правильного кода.

Сгенерировать отчёты

ChatGPT позволяет создавать отчёты на основе SQL-данных. Например, отчёты о товарах на складе, продажах, клиентах или коммуникациях. С одной стороны, можно собирать всю информацию по звонкам, SMS и сообщениям через API, а дальше пользоваться SQL.

Для этого достаточно сделать сервер, который будет делать SQL-запрос в базу данных, забирать оттуда номера и другие данные по клиентам, а потом совершать запрос в API, например через МТС Exolve. Такой сценарий мы уже описывали в рамках статьи про Google Таблицы.

Также нейросеть может помочь пользователям с такими сложными концепциями SQL, как объединение таблиц и создание подзапросов, предоставляя также подробные объяснения и примеры для лучшего понимания используемой концепции.

Кроме того, языковая модель способна предоставить контекстно зависимые предложения во время написания запроса с информацией о перебираемой таблице и её столбцах. А ещё ChatGPT способен помочь проверить синтаксис и структуру SQL-запросов. Вы можете задавать вопросы типа: «Является ли этот SQL-запрос синтаксически корректным?» или «Есть ли ненужные ключевые слова в этом запросе?» Модель даст обратную связь относительно синтаксических ошибок или потенциальных аномалий.

Как работать с SQL при помощи ChatGPT

ChatGPT поможет понять любую команду, объяснив принцип её действия простым языком, и предоставит столько примеров её использования, сколько нам понадобится. Для лучшего взаимодействия команды рекомендуем давать на английском языке, но для наглядности мы использовали команды на русском.

Чтобы продвинуться дальше в сценариях ChatGPT для составления запросов SQL JOIN и их проверки, пользователю потребуются:

  • сам аккаунт ChatGPT. Нужна активная учётная запись в сервисе для взаимодействия с языковой моделью;

  • инструмент управления базой данных, например dbForge Studio (или Query Builder), Redgate SQL Prompt или подобный им для проверки и тестирования запросов SQL JOIN;

  • база данных AdventureWorks2019. Это образец базы данных для тестирования запросов SQL JOIN и их проверки, если захочется перейти сразу к делу.

Если всё это есть, приступим к работе с нейросетью, начав с одной из самых основных SQL-команд — SELECT.

  1. Объясни мне, как работает команда SELECT в SQL, приведи пример, как её использовать.

Как вы можете видеть на скриншоте, ChatGPT объяснила основы команды и дала нам несколько примеров её использования. Таким же образом вы можете задать сети любую другую SQL-команду и потренироваться с ней на предложенных примерах.

Если же вы знаете, что хотите сделать, но не знаете, как осуществить задуманное, предоставьте ChatGPT входные данные для формирования запроса и спросите её о том, какую команду вам использовать.

  1. Сгенерируй SQL-запрос, вычисляющий самые дорогие страны мира, используя таблицу со стоимостью товаров в каждой стране.

Как видите, ChatGPT легко справляется с этой задачей и в течение 20 секунд выдаёт пример искомого запроса с подробным объяснением каждого действия.

  1. Объясни мне, как работает этот SQL-запрос.

Таким же образом нужно использовать ИИ, когда вам непонятен SQL-запрос и нужно быстро разобраться в принципе его работы. Как видно из предыдущего скриншота, ChatGPT подробно объяснила, что делает этот запрос и все подзапросы в нём, а в конце резюмировала свои ответы. Также мы можем детализировать каждый подзапрос из списка по желанию.

Ещё можем попросить нейросеть сделать отчёт на основе SQL-данных, полученных из предыдущего примера, для лучшего понимания общей картины происходящих в нём вычислений.

  1. Сделай отчёт на основе SQL-данных из предыдущего примера.

Как видим, нейросеть всё разложила по полочкам, и теперь всё стало гораздо понятнее.

  1. Какую команду SQL использовать, чтобы объединить две таблицы?

Ответ довольно развёрнутый. Но мне надо просто объединить две таблицы и найти строки с совпадающими значениями в определённых столбцах. В таком случае надо перефразировать запрос к нейросети и дать ей задание о выводе нужной информации:

На изображении выше вполне доступно объяснено, как объединить две таблицы и найти в них столбцы с совпадающими значениями.

  1. Напиши мне несколько упражнений для практики по SQL.

Если вы хотите проверить уже имеющиеся навыки, а ресурсы с задачами уже все просмотрели, можно попросить нейросеть подобрать вам несколько упражнений по этой теме. Как видно из предыдущего снимка экрана, ChatGPT способен взять на себя роль ментора для неопытного разработчика. Она выдаёт задания пользователю, а после выполнения может легко их проверить. Причём при проверке нейросеть даст вам детальное код-ревью, определив правильность написания запроса, а если обнаружит ошибку, то сообщит, в чём она.

  1. Дай мне правильные ответы на предыдущие упражнения.

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

  1. Создай базу знаний по SQL, содержащую примеры наиболее часто используемых SQL-запросов.

Такая подборка будет хорошим подспорьем новичку.

При помощи нейросети можно разработать свою базу знаний по SQL с примерами SQL-запросов и соответствующими объяснениями или комментариями. Это может быть полезно для обучения или справочной информации, чтобы разобраться самому и помочь другим людям понять и грамотно использовать язык запросов.

Например, объяснить новичкам в офисе, как доставать нужные данные из отчётов по клиентам и настраивать сообщения через SMS API.

Ну и пара примеров работы с AdventureWorks2019.

CROSS JOIN

Это тип операции в реляционной базе данных, которая объединяет каждую строку из одной таблицы с каждой строкой из другой таблицы. Результат содержит все возможные комбинации строк из обеих таблиц. Попросим ChatGPT создать запрос для получения всех возможных комбинаций категорий и подкатегорий товаров в базе данных AdventureWorks2019.

Получаем следующий запрос:

SELECT 
    PC.ProductCategoryID,
    PC.Name AS ProductCategoryName,
    PSC.ProductSubcategoryID,
    PSC.Name AS ProductSubcategoryName
FROM 
    Production.ProductCategory PC
CROSS JOIN 
    Production.ProductSubcategory PSC
ORDER BY
    PC.ProductCategoryID, PSC.ProductSubcategoryID;

Интересно, что в ChatGPT-4 запросы стали более информативными.

SELF JOIN

В SQL операция SELF JOIN — объединение, при котором таблица соединяется сама с собой. Это полезно, когда мы хотим сравнить данные в одной таблице.

Итак, попробуем получить SELF JOIN. Предположим, мы хотим получить список всех руководителей и их подчинённых из таблицы HumanResources.Employee в БД, где руководитель и подчинённый имеют один и тот же пол.

Выходит такой запрос:

SELECT 
    S.BusinessEntityID AS SupervisorID,
    S.JobTitle AS SupervisorJobTitle,
    E.BusinessEntityID AS SubordinateID,
    E.JobTitle AS SubordinateJobTitle,
    E.Gender
FROM 
    HumanResources.Employee E
JOIN 
    HumanResources.Employee S ON E.OrganizationNode.GetAncestor(1) = S.OrganizationNode
WHERE 
    E.Gender = S.Gender
ORDER BY
    S.BusinessEntityID, E.BusinessEntityID;

Заключение

Возможности нейросети пригодятся как новичку, так и профессионалу. Используя ChatGPT для изучения базовых и отработки уже имеющихся навыков, вы сможете повысить ваш профессиональный уровень, не прибегая к дополнительным обучающим курсам и учебникам.

Более того, как уже упомянули, ИИ может сильно упростить написание запросов при работе со статистикой по API или попросту быстрее доставать нужную информацию из БД. Достоинство сети ещё и в том, что она постоянно учится на запросах и адаптируется к потребностям пользователя.

К сожалению, полностью доверять нейросети ещё нельзя — система время от времени ошибается, даёт неточные сведения, поскольку находится в стадии разработки. И пусть она обладает впечатляющими возможностями, однако при работе с ней существует ряд правил, о которых вам следует помнить:

  • нейросеть имеет доступ к информации, знаниям и событиям, произошедшим до 2021 года, поэтому не может знать о новых методах и функциях SQL, внедрённых позже

  • ChatGPT может некорректно обрабатывать сложные диалоговые сценарии, что приведёт к путанице и ошибкам

  • ответ, выведенный нейросетью, не является истиной в последней инстанции, поэтому, чтобы исключить вероятные неточности, его нужно проверить

Также не стоит забывать о безопасности данных. Есть опасность слива кода через нейросеть. Ограничение доступа и шифрование данных могут помочь предотвратить утечку кода и снизить риски.

Ну и последнее: обратите внимание на блог МТС Exolve с розыгрышами призов и лайфхаками по API!

Комментарии (7)


  1. prishol
    14.07.2023 14:00
    +1

    Насколько разные по длине код получается при одинаковом запросе между версиями 3.5 и 4 ?


    1. telecomgod
      14.07.2023 14:00
      +1

      Пока писали материал, заметили, что в примере CROSS JOIN основное отличие заключается в столбцах и наличии ORDER BY в запросе от ChatGPT-4 для сортировки набора результатов. То есть, у ChatGPT-3 более короткий результат, а у ChatGPT-4 более информативный, он помогает чуть лучше сортировать и далее анализировать данные.

      В SELF JOIN четвёртая версия определяет отношения начальник-подчиненный, используя иерархию OrganizationNode и функцию GetAncestor(1). Ещё есть дополнительные столбцы и тоже ORDER BY для сортировки результатов по SupervisorID и SubordinateID.


  1. badmonty
    14.07.2023 14:00

    Виден запрос у бота про "Гнев офисе", как это знакомо:)


  1. defecator
    14.07.2023 14:00
    +3

    а писать SQL запросы вручную уже сложно ?


    1. hottabxp
      14.07.2023 14:00
      -2

      Короткие и простые - нет, не сложно.


    1. GamletDameer
      14.07.2023 14:00
      +1

      Нет, но для некоторых это может быть неинтересной и муторной задачей (наряду с написанием тестов). Новичкам бы лучше игнорировать такие посты и делать только своими руками


  1. lobotomic
    14.07.2023 14:00

    Из статьи я понял, что пока от ChatGPT в области SQL реальной пользы никакой нет.