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

Из Википедии:

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

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

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

  • CREATE
  • DROP
  • ALTER

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

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Конечным "стандартным" подмножеством команд является DCL (Data Control Language):

  • GRANT
  • REVOKE

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

Стандарты ISO/IEC (ранее 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/Persistent Stored Modules)
  • 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 Module, реализует SQL/PSM)
  • MySQL: SQL/PSM (SQL/Persistent Stored Module, реализует SQL/PSM)
  • MonetDB: SQL/PSM (SQL/Persistent Stored Module, реализует 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 Script)

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

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

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

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

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

Особые теги реализации

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

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

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

Бесплатные онлайн-курсы по SQL/базе данных

Учебник по SQL/Database Online

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

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