Описание тега sql
Как написать хороший SQL-вопрос?
Этот рецепт состоит из пяти ингредиентов:
- Предоставьте четкое текстовое объяснение проблемы.
- Предоставьте надлежащие образцы данных в виде DDL (оператор (я) создания таблицы) и DML (оператор (я) вставки). Образцов данных должно быть достаточно, чтобы продемонстрировать проблему, включая крайние случаи. Обычно достаточно нескольких релевантных строк.
- Предоставьте ожидаемый результат для опубликованных вами образцов данных.
- Покажи свои попытки решить проблему.
- Пометьте правильно. В дополнение к sql также предоставьте соответствующий тег rdbms (например,
sql-server, oracle, postgresql) и самую низкую версию, для которой вам нужно решение (например, sql-server-2012, oracle10g).
Помните - разные продукты используют разные диалекты SQL, и это может сильно повлиять на ответы, которые вы можете получить.
Различные версии одного и того же продукта имеют разный набор встроенных функций и возможностей, которые также могут существенно повлиять на ответы.
Не включайте изображения данных или кода!
Ссылка на онлайн-тестовую среду SQL, такую как SQL Fiddle, Rextester или DB Fiddle, может помочь, но она не заменяет наличие всех данных внутри вопроса.
Для получения дополнительной информации прочтите, почему я должен предоставлять MCVE для того, что мне кажется очень простым запросом SQL? и Помогите мне написать этот запрос на SQL.
Общая информация
из Википедии:
SQL означает язык структурированных запросов (неформально) и обычно произносится как Sequel.
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. Таким образом, теги plsql и plpgsql следует использовать только для проблем, непосредственно связанных с написанием хранимых процедур. Microsoft SQL Server использует термин T-SQL (Transact-SQL)( tsql) как для "простого" 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/ постоянный хранимый модуль, реализует SQL/ PSM)
- MySQL: SQL/PSM (SQL/ Persistent Stored Module, реализует SQL/ PSM)
- MonetDB: SQL/PSM (SQL/ Persistent Stored Module, реализует SQL/PSM)
- NuoDB: SSP (хранимые процедуры Старки)
- Oracle: PL / SQL (процедурный язык / SQL, основанный на Ada)
- PostgreSQL: PL / pgSQL (процедурный язык / язык структурированных запросов PostgreSQL, реализует SQL/PSM)
- Sybase: Watcom-SQL (диалект SQL Anywhere Watcom-SQL)
- Тераданные: SPL (хранимый процедурный язык)
- SAP: SAP HANA (сценарий SQL)
Рекомендации по тегам
Этот тег следует использовать для ответов на общие вопросы о языке программирования SQL в дополнение к тегам для конкретных продуктов. Например, вопросы о Microsoft SQL Server должны использовать тег sql-server, а вопросы, касающиеся MySQL, должны использовать тег mysql. SQL - это зонтик, под которым существуют эти продукты; пометка их по продукту (включая версию, например, oracle11g, sql-server-2008, hana) - самый простой способ узнать, какие функции доступны для данной задачи. В вопросах mysql очень часто пропускают этот тег, потому что обсуждения запросов в MySQL чаще обозначаются как MySQL, а не как SQL в целом.
Пожалуйста, прочтите это резюме о стандарте SQL (в данном случае широко применяемом в 1992 году) и, если можете, обратитесь к самой книге.
Более конкретные теги
Когда вы задаете вопрос о SQL, вы также можете добавить более конкретные теги. Вот список доступных тегов:
- sqlbulkcopy
- sqlconnection
- sqlcommand
- sql-копия
- sql-convert
- sql-delete
- sql-drop
- sqldatetime
- sql-дата-функции
- sql-функция
- sql-job
- sql-подобный
- sql-limit
- sql-слияние
- sql-pivot
- sql-заказ-по
- sql-возвращающий
- sql-server-работа
- встретиться
- триггеры
- sql-timestamp
- sql-update
- sql-просмотр
- хранимые процедуры
- имея
- пункт where
- считать
- группа по
- наибольшее число n на группу
- присоединиться
- левое присоединение
- внутреннее соединение
- внешнее соединение
- самостоятельное присоединение
- перекрестное соединение
- право присоединиться
- полное внешнее соединение
- естественное соединение
- равное соединение
- неэкви-соединение
Теги для конкретной реализации
Вы можете указать свой вопрос, добавив реализацию, которую вы использовали, в качестве тега.
- mysql
- mysqli
-
sql-сервер
- оракул
- postgresql
- sqlite
- db2
- ms-доступ
- sybase
- google-query-language
- mimer-sql
- Хана
- hiveql
Другие источники
Бесплатные книги по программированию SQL
- Разработка приложений для ориентированных на время баз данных на SQL
- Используйте индекс, Люк!: Руководство по производительности базы данных SQL
- Учебное пособие по SQL для начинающих
- SQL - Бесплатные книги
- SQL - Бесплатные книги 2
Бесплатные онлайн-курсы по SQL/ базам данных
Онлайн-руководство по SQL/ базам данных
Онлайн-тестирование
Хотя вы всегда должны предоставлять полные примеры кода (например, схему, образец данных и ожидаемый результат) в своем вопросе или ответе, вы также можете выделить проблемный код и воспроизвести его в онлайн-среде:
- SQL Fiddle MySQL 5.6, Oracle 11g R2, PostgreSQL 9.6, PostgreSQL 9.3, SQLite (WebSQL), SQLite (SQL.js), SQL Server 2014
- Rextester: SQL Server, PostgreSQL, MySql, Oracle
- Обозреватель данных Stack Exchange Microsoft SQL Server 2016
- db-fiddle MySQL 5.5, 5.6, 5.7, 8.0 PostgreSQL 9.4, 9.5, 9.6, 10 SQLite 3.16, 3.17, 3.18
- db <> fiddle MariaDB 10.2, 10.3, MySQL 8.0, Oracle 11.2, Postgres 8.4, 9.4, 9.5, 9.6, 10 и 11, SQLite 3.8, 3.16, SQL Server 2012, 2014, 2016 и 2017