Язык структурированных запросов (SQL) - это язык для запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, выборочные данные и тег для реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т.д.). Если ваш вопрос касается исключительно конкретной СУБД (использует определенные расширения/функции), вместо этого используйте этот тег СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO/IEC SQL.

Как написать хороший вопрос SQL?
Этот рецепт состоит из пяти ингредиентов:

  1. Предоставьте четкое текстовое объяснение проблемы под рукой.
  2. Укажите правильные образцы данных, такие как DDL (операторы таблицы) и DML (операторы таблицы). Примерных данных должно быть достаточно, чтобы продемонстрировать проблему, включая крайние случаи. Обычно достаточно нескольких соответствующих строк.
  3. Предоставьте ожидаемый результат для демонстрационных данных, которые вы опубликовали.
  4. Покажите свои попытки решить проблему.
  5. Отметьте правильно. В дополнение к также укажите тег продукта и самую низкую версию, для которой вам необходимо решение.
    Помните - разные продукты используют разные диалекты SQL, и это может сильно повлиять на ответы, которые вы можете получить.
    Разные версии одного и того же продукта имеют различный набор встроенных функций и возможностей, которые также могут существенно повлиять на ответы.

Не включайте изображения данных или код!

Ссылка на онлайн-среду тестирования SQL, такую как SQL Fiddle или DB Fiddle, может помочь, но она не является заменой наличия всех данных в вопросе.
Для получения дополнительной информации читайте. Почему я должен предоставить MCVE для того, что мне кажется очень простым запросом SQL? и помогите мне написать этот запрос в SQL.

Основная информация
Из Википедии:

SQL расшифровывается как язык структурированных запросов (неформально) и обычно произносится как сиквел.

SQL основан на реляционной алгебре. В реляционной алгебре отношение слова является синонимом слова "таблица". SQL - это стандарт использования реляционной алгебры в технической среде.

Одним из подмножеств стандарта SQL является DDL (язык определения данных), который используется для создания таблиц и ограничений. Они включают:

  • CREATE
  • DROP
  • ALTER

Другим подмножеством является DML (Data Manipulation Language), который используется для изменения и просмотра данных в базе данных:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Последний "стандартный" набор команд - DCL (Data Control Language):

  • GRANT
  • REVOKE

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

Стандарты ИСО/МЭК (ранее ANSI) были полезны при разрешении таких ситуаций, но их принятие носит выборочный характер. Запросы, соответствующие этим стандартам, должны переноситься на другие базы данных, хотя производительность может отличаться.

Большинство СУБД имеют дополнительные языки для написания хранимых процедур. В Oracle это PL/SQL (процедурный язык/язык структурированных запросов), в PostgreSQL это PL/pgSQL (процедурный язык /PostgreSQL). Вне хранимых процедур или функций Oracle и PostgreSQL используют SQL. Таким образом, теги и следует использовать только для задач, непосредственно связанных с написанием хранимых процедур. Microsoft SQL Server использует термин T-SQL (Transact-SQL) () как для "простого" SQL (запросы, DML,..), так и для языка, используемого для хранимых процедур.

Список процедурных расширений

  • Стандарт ANSI/ISO: SQL/PSM (постоянные хранимые модули SQL)
  • Interbase/Firebird: PSQL (процедурный SQL)
  • IBM DB2 SQL: PL/SQL (процедурный язык, реализующий SQL/PSM)
  • IBM Informix: SPL (хранимый процедурный язык)
  • IBM Netezza: NZPLSQL (на основе Postgres PL/pgSQL)
  • Microsoft/Sybase: T-SQL (Transact-SQL)
  • Mimer SQL: SQL/PSM (модуль SQL/Persistent Stored, реализует SQL/PSM)
  • MySQL: SQL/PSM (хранимый модуль SQL/Persistent, реализует SQL/PSM)
  • MonetDB: SQL/PSM (модуль SQL/Persistent Stored, реализует SQL/PSM)
  • NuoDB: SSP (хранимые процедуры Starkey)
  • Oracle: PL/SQL (процедурный язык /SQL, основанный на Ada)
  • PostgreSQL: PL/pgSQL (процедурный язык /PostgreSQL язык структурированных запросов, реализует SQL/PSM)
  • Sybase: Watcom-SQL (SQL Anywhere Watcom-SQL Dialect)
  • Teradata: SPL (хранимый процедурный язык)
  • SAP: SAP HANA (SQL-скрипт)

Рекомендации по маркировке

Этот тег следует использовать для общих вопросов по языку программирования SQL, в дополнение к тегам для конкретных продуктов. Например, вопросы о Microsoft SQL Server должны использовать тег , а вопросы о MySQL должны использовать тег . SQL является зонтиком, под которым существуют эти продукты; пометить их по продукту (включая версию, например , , ) - это самый простой способ узнать, какие функции доступны для выполняемой задачи. Для вопросов очень часто этот тег опускают, потому что обсуждения запросов по MySQL чаще всего обозначаются как MySQL, а не как SQL в целом.

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

Более конкретные теги

Когда вы задаете вопрос о SQL, вы также можете добавить более конкретные теги. Вот список доступных тегов:

Реализация конкретных тегов

Вы можете задать свой вопрос, добавив реализацию, которую вы использовали в качестве тега.

Другие источники

Бесплатные книги по программированию на SQL

Бесплатные онлайн курсы SQL/Database

SQL/База данных Онлайн-учебник

Онлайн тестирование

Хотя вы всегда должны предоставлять полные примеры кода (например, схему, образец данных и ожидаемый результат) в своем вопросе или ответе, вы также можете выделить проблемный код и воспроизвести его в онлайн-среде: