Синтаксис SQL - SQL syntax

В синтаксис из SQL язык программирования определяется и поддерживается ISO / IEC SC 32 как часть ISO / IEC 9075. Этот стандарт не доступен в свободном доступе. Несмотря на существование стандарта, код SQL не может быть полностью переносимым между различными системами баз данных без корректировок.

Элементы языка

Диаграмма, показывающая несколько элементов языка SQL, составляющих один оператор. Это добавляет единицу к населению США в таблице стран.

Язык SQL подразделяется на несколько языковых элементов, в том числе:

  • Ключевые слова это слова, определенные в языке SQL. Они либо зарезервированы (например, ВЫБРАТЬ, СЧИТАТЬ и ГОД) или незарезервированные (например, ASC, ДОМЕН и КЛЮЧ). Список Зарезервированные слова SQL.
  • Идентификаторы - это имена объектов базы данных, таких как таблицы, столбцы и схемы. Идентификатор может не совпадать с зарезервированным ключевым словом, если только это не ограниченный идентификатор. Идентификаторы с разделителями означают идентификаторы, заключенные в двойные кавычки. Они могут содержать символы, обычно не поддерживаемые в идентификаторах SQL, и могут быть идентичны зарезервированному слову, например ГОД.
  • Статьи, которые являются составными компонентами операторов и запросов. (В некоторых случаях это необязательно.)[1]
  • Выражения, который может производить либо скаляр значения, или столы состоящий из столбцы и ряды данных
  • Предикаты, которые определяют условия, которые могут быть оценены в SQL трехзначная логика (3VL) (истина / ложь / неизвестно) или Булево ценности истины и используются для ограничения эффектов операторов и запросов или для изменения выполнения программы.
  • Запросы, которые получают данные на основе определенных критериев. Это важный элемент SQL.
  • Заявления, который может оказывать постоянное влияние на схемы и данные или может управлять транзакциями, потоком программы, соединениями, сеансами или диагностикой.
    • Операторы SQL также включают точка с запятой (";") терминатор оператора. Хотя он не требуется на каждой платформе, он определен как стандартная часть грамматики SQL.
  • Незначительные пробелы обычно игнорируется в операторах SQL и запросах, что упрощает форматирование кода SQL для удобства чтения.

Операторы

ОператорОписаниеПример
=РавноАвтор = 'Олкотт'
<>Не равно (многие СУБД принимают != в добавление к <>)Отдел <> 'Продажи'
>Лучше чемДата приема на работу > '2012-01-31'
<Меньше, чемБонус < 50000.00
>=Больше или равноИждивенцы >= 2
<=Меньше или равноСтавка <= 0.05
[НЕТ] МЕЖДУ [СИММЕТРИЧНЫЙ]Между включительным диапазоном. SYMMETRIC инвертирует границы диапазона, если первая выше второй.Расходы МЕЖДУ 100.00 И 500.00
[НЕТ] ПОДОБНО [ПОБЕГ]Начинается с рисунка персонажаПолное имя ПОДОБНО 'Будем%'
Содержит образец символаПолное имя ПОДОБНО '%Будем%'
[НЕТ] ВРавно одному из нескольких возможных значенийDeptCode В (101, 103, 209)
ЯВЛЯЕТСЯ [НЕТ] НОЛЬСравнить с нулем (данные отсутствуют)Адрес ЯВЛЯЕТСЯ НЕТ НОЛЬ
ЯВЛЯЕТСЯ [НЕТ] ИСТИННЫЙ или же ЯВЛЯЕТСЯ [НЕТ] ЛОЖНЫЙПроверка значения логической истинностиОплачиваемый отпуск ЯВЛЯЕТСЯ ИСТИННЫЙ
ЯВЛЯЕТСЯ НЕТ ОТЧЕТЛИВЫЙ ИЗРавно значению или оба значения равны нулю (данные отсутствуют)Долг ЯВЛЯЕТСЯ НЕТ ОТЧЕТЛИВЫЙ ИЗ - Дебиторская задолженность
В КАЧЕСТВЕИспользуется для изменения имени столбца при просмотре результатовВЫБРАТЬ наемный рабочий В КАЧЕСТВЕ отдел1

Иногда предлагались или внедрялись другие операторы, например оператор горизонта (для поиска только тех строк, которые не «хуже» других).

SQL имеет case < выражение, которое было введено в SQL-92. В самом общем виде, который в стандарте SQL называется «искомый случай»:

ДЕЛО КОГДА п > 0          ТОГДА 'положительный'     КОГДА п < 0          ТОГДА 'отрицательный'     ЕЩЕ 'нуль'КОНЕЦ

SQL тесты КОГДА условия в том порядке, в котором они появляются в источнике. Если в источнике не указан ЕЩЕ выражение, по умолчанию SQL ELSE NULL. Также можно использовать сокращенный синтаксис, называемый «простой случай»:

ДЕЛО п КОГДА 1            ТОГДА 'Один'       КОГДА 2            ТОГДА 'Два'       ЕЩЕ 'Я не могу считать так высоко'КОНЕЦ

В этом синтаксисе используются неявные сравнения на равенство с обычные предостережения для сравнения с NULL.

Есть две короткие формы для специальных ДЕЛО выражения: КОАЛЕС и NULLIF.

В КОАЛЕС expression возвращает значение первого операнда, отличного от NULL, найденного при работе слева направо, или NULL, если все операнды равны NULL.

КОАЛЕС(x1,x2)

эквивалентно:

ДЕЛО КОГДА x1 ЯВЛЯЕТСЯ НЕТ НОЛЬ ТОГДА x1     ЕЩЕ x2КОНЕЦ

В NULLIF выражение имеет два операнда и возвращает NULL, если операнды имеют одинаковое значение, в противном случае оно имеет значение первого операнда.

NULLIF(x1, x2)

эквивалентно

ДЕЛО КОГДА x1 = x2 ТОГДА НОЛЬ ЕЩЕ x1 КОНЕЦ

Комментарии

Стандартный SQL допускает два формата для Комментарии: - комментарий, который заканчивается первым новая линия, и / * комментарий * /, который может занимать несколько строк.

Запросы

Самая распространенная операция в SQL, запрос, использует декларативную ВЫБРАТЬ утверждение. ВЫБРАТЬ извлекает данные из одного или нескольких столы, или выражения. Стандарт ВЫБРАТЬ операторы не имеют постоянного воздействия на базу данных. Некоторые нестандартные реализации ВЫБРАТЬ могут иметь стойкие эффекты, такие как ВЫБРАТЬ В синтаксис предусмотрен в некоторых базах данных.[2]

Запросы позволяют пользователю описывать желаемые данные, оставляя система управления базами данных (СУБД) выполнять планирование, оптимизация, и выполнение физических операций, необходимых для получения желаемого результата.

Запрос включает список столбцов для включения в окончательный результат, обычно сразу после ВЫБРАТЬ ключевое слово. Звездочка ("*") можно использовать, чтобы указать, что запрос должен возвращать все столбцы запрошенных таблиц. ВЫБРАТЬ - это самый сложный оператор SQL с дополнительными ключевыми словами и предложениями, которые включают:

  • В ИЗ предложение, которое указывает таблицы, из которых нужно получить данные. В ИЗ предложение может включать необязательные ПРИСОЕДИНИТЬСЯ подпункты, чтобы указать правила объединения таблиц.
  • В КУДА Предложение включает предикат сравнения, который ограничивает строки, возвращаемые запросом. В КУДА Предложение удаляет все строки из набора результатов, в которых предикат сравнения не имеет значения True.
  • В ГРУППА ПО Предложение проецирует строки, имеющие общие значения, в меньший набор строк.[требуется разъяснение ] ГРУППА ПО часто используется в сочетании с функциями агрегирования SQL или для удаления повторяющихся строк из набора результатов. В КУДА оговорка применяется до ГРУППА ПО пункт.
  • В ИМЕЕТ предложение включает предикат, используемый для фильтрации строк, полученных в результате ГРУППА ПО пункт. Потому что он действует на результаты ГРУППА ПО предложения, функции агрегирования могут использоваться в ИМЕЕТ предикат предложения.
  • В СОРТИРОВАТЬ ПО Предложение определяет, какой столбец [столбцы] использовать для сортировки результирующих данных и в каком направлении их сортировать (по возрастанию или по убыванию). Без СОРТИРОВАТЬ ПО предложение, порядок строк, возвращаемых запросом SQL, не определен.
  • В ОТЧЕТЛИВЫЙ ключевое слово[3] устраняет повторяющиеся данные.[4]
  • В КОМПЕНСИРОВАТЬ Предложение определяет количество строк, которые нужно пропустить перед началом возврата данных.
  • В ПОЛУЧИТЬ ПЕРВЫЙ предложение определяет количество возвращаемых строк. Некоторые базы данных SQL вместо этого имеют нестандартные альтернативы, например LIMIT, ВЕРХ или же ROWNUM.

Пункты запроса имеют определенный порядок выполнения[5], который обозначается цифрой в правой части. Это выглядит следующим образом:

ВЫБРАТЬ <columns>5.
ИЗ <table>1.
КУДА <predicate on rows>2.
ГРУППА ПО <columns>3.
ИМЕЕТ <predicate on groups>4.
СОРТИРОВАТЬ ПО <columns>6.
КОМПЕНСИРОВАТЬ7.
ПОЛУЧИТЬ ПЕРВЫЙ8.

Следующий пример ВЫБРАТЬ query возвращает список дорогих книг. Запрос извлекает все строки из Книга таблица, в которой цена столбец содержит значение больше 100,00. Результат сортируется в порядке возрастания по заглавие. Звездочка (*) в выберите список указывает, что все столбцы Книга таблица должна быть включена в набор результатов.

ВЫБРАТЬ * ИЗ  Книга КУДА цена > 100.00 ПОРЯДОК К заглавие;

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

ВЫБРАТЬ Книга.заглавие В КАЧЕСТВЕ Заголовок,       считать(*) В КАЧЕСТВЕ Авторы ИЗ  Книга ПРИСОЕДИНИТЬСЯ  Book_author   НА  Книга.isbn = Book_author.isbn ГРУППА К Книга.заглавие;

Пример вывода может выглядеть следующим образом:

Название Авторы ---------------------- ------- Примеры SQL и руководство 4 Радость SQL 1 Введение в SQL 2 Ловушки SQL 1

При условии, что isbn - единственное общее имя столбца для двух таблиц и что столбец с именем заглавие существует только в Книга table, можно было бы переписать приведенный выше запрос в следующей форме:

ВЫБРАТЬ заглавие,       считать(*) В КАЧЕСТВЕ Авторы ИЗ  Книга ЕСТЕСТВЕННЫЙ ПРИСОЕДИНИТЬСЯ Book_author ГРУППА К заглавие;

Однако многие[количественно оценить ] поставщики либо не поддерживают этот подход, либо требуют определенных соглашений об именах столбцов для эффективной работы естественных объединений.

SQL включает в себя операторы и функции для вычисления значений для сохраненных значений. SQL позволяет использовать выражения в выберите список для проецирования данных, как в следующем примере, который возвращает список книг стоимостью более 100,00 с дополнительным налог с продаж столбец, содержащий сумму налога с продаж, рассчитанную в размере 6% от цена.

ВЫБРАТЬ isbn,       заглавие,       цена,       цена * 0.06 В КАЧЕСТВЕ налог с продаж ИЗ  Книга КУДА цена > 100.00 ПОРЯДОК К заглавие;

Подзапросы

Запросы могут быть вложенными, чтобы результаты одного запроса можно было использовать в другом запросе с помощью реляционного оператора или функции агрегирования. Вложенный запрос также известен как подзапрос. В то время как объединения и другие операции с таблицами во многих случаях предоставляют альтернативы с вычислительным превосходством (то есть более быстрыми), использование подзапросов вводит иерархию в исполнении, которая может быть полезной или необходимой. В следующем примере функция агрегирования AVG получает в качестве входных данных результат подзапроса:

ВЫБРАТЬ isbn,       заглавие,       цена ИЗ  Книга КУДА цена < (ВЫБРАТЬ AVG(цена) ИЗ Книга) ПОРЯДОК К заглавие;

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

С 1999 года стандарт SQL позволяет С предложения для подзапросов, то есть именованных подзапросов, обычно называемых общие табличные выражения (также называемый факторинг подзапросов ). CTE также могут быть рекурсивный ссылаясь на себя; результирующий механизм позволяет обход дерева или графа (когда они представлены как отношения) и в более общем плане фиксированная точка вычисления.

Производная таблица

А производная таблица - это использование ссылки на подзапрос SQL в предложении FROM. По сути, производная таблица - это подзапрос, который можно выбрать или присоединить к нему. Функциональность производной таблицы позволяет пользователю ссылаться на подзапрос как на таблицу. Встроенное представление также называется встроенный вид или подвыбор.

В следующем примере оператор SQL включает в себя соединение исходной таблицы «Книга» с производной таблицей «Продажи». Эта производная таблица захватывает связанную информацию о продажах книг с использованием номера ISBN для присоединения к таблице «Книга». В результате производная таблица предоставляет результирующий набор с дополнительными столбцами (количество проданных товаров и компания, которая продала книги):

ВЫБРАТЬ б.isbn, б.заглавие, б.цена, продажи.items_sold, продажи.company_nmИЗ Книга б  ПРИСОЕДИНИТЬСЯ (ВЫБРАТЬ СУММ(Items_Sold) Items_Sold, Company_Nm, ISBN        ИЗ Book_Sales        ГРУППА К Company_Nm, ISBN) продажи  НА продажи.isbn = б.isbn

Нулевая или трехзначная логика (3VL)

Концепция чего-либо Ноль позволяет SQL обрабатывать недостающую информацию в реляционной модели. Слово НОЛЬ зарезервированное ключевое слово в SQL, используемое для идентификации специального маркера Null. Сравнение с Null, например равенство (=) в предложениях WHERE, приводит к неизвестному значению истинности. В операторах SELECT SQL возвращает только те результаты, для которых предложение WHERE возвращает значение True; то есть исключает результаты со значениями False, а также исключает те, значение которых неизвестно.

Таким образом, наряду с Истинным и Ложным, Неизвестное, полученное в результате прямого сравнения с Нулевым, приносит трехзначная логика в SQL. Таблицы истинности, которые SQL использует для операций И, ИЛИ и НЕ, соответствуют общему фрагменту трехзначной логики Клини и Лукасевича (которые различаются своим определением импликации, однако SQL не определяет такую ​​операцию).[6]

p И qп
ИстинныйЛожьНеизвестный
qИстинныйИстинныйЛожьНеизвестно
ЛожьЛожьЛожьЛожь
НеизвестныйНеизвестноЛожьНеизвестно
p ИЛИ qп
ИстинныйЛожьНеизвестный
qИстинныйИстинныйИстинныйИстинный
ЛожьИстинныйЛожьНеизвестно
НеизвестныйИстинныйНеизвестноНеизвестно
p = qп
ИстинныйЛожьНеизвестный
qИстинныйИстинныйЛожьНеизвестно
ЛожьЛожьИстинныйНеизвестно
НеизвестныйНеизвестноНеизвестноНеизвестно
qНЕ q
ИстинныйЛожь
ЛожьИстинный
НеизвестныйНеизвестно

Однако существуют споры о семантической интерпретации пустых значений в SQL из-за того, что она обрабатывается вне прямых сравнений. Как видно из таблицы выше, прямые сравнения на равенство между двумя значениями NULL в SQL (например, {{{1}}}) вернуть значение истинности Неизвестно. Это соответствует интерпретации того, что Null не имеет значения (и не является членом какой-либо области данных), а скорее является заполнителем или «меткой» для отсутствующей информации. Однако принцип, согласно которому два пустых значения не равны друг другу, фактически нарушается в спецификации SQL для СОЮЗ и ПЕРЕСЕЧЕНИЕ операторы, которые идентифицируют пустые значения друг с другом.[7] Следовательно, эти установить операции в SQL может давать результаты, не представляющие достоверную информацию, в отличие от операций, связанных с явным сравнением с NULL (например, в КУДА пункт, обсуждаемый выше). В предложении Кодда 1979 года (которое в основном было принято SQL92) эту семантическую несогласованность рационализировали, утверждая, что удаление дубликатов в операциях над наборами происходит «на более низком уровне детализации, чем проверка равенства при оценке операций поиска».[6] Однако профессор компьютерных наук Рон ван дер Мейден пришел к выводу, что «несоответствия в стандарте SQL означают, что невозможно приписать какую-либо интуитивную логическую семантику обработке нулей в SQL».[7]

Кроме того, поскольку операторы SQL возвращают значение Unknown при прямом сравнении чего-либо с Null, SQL предоставляет два предиката сравнения, специфичных для Null: НУЛЕВОЙ и НЕ НУЛЬ проверить, являются ли данные нулевыми или нет.[8] SQL явно не поддерживает универсальная количественная оценка, и должен работать как отрицательный экзистенциальная количественная оценка.[9][10][11] Существует также инфиксный оператор сравнения «<выражение значения строки> IS DISTINCT FROM <выражение значения строки>», который возвращает ИСТИНА, если оба операнда не равны или оба не равны NULL. Аналогично, IS NOT DISTINCT FROM определяется как «НЕ (<выражение значения строки> ОТЛИЧИТЕЛЬНО ОТ <выражение значения строки>)». SQL: 1999 также представил BOOLEAN переменные типа, которые согласно стандарту также могут содержать неизвестные значения, если они допускают значение NULL. На практике ряд систем (например, PostgreSQL ) реализуют BOOLEAN Unknown как BOOLEAN NULL, который, согласно стандарту, означает, что NULL BOOLEAN и UNKNOWN «могут использоваться взаимозаменяемо для обозначения одного и того же».C. Дата (2011 г.). SQL и теория отношений: как писать точный код SQL. O'Reilly Media, Inc. стр. 83. ISBN  978-1-4493-1640-2.</ref>[12]

Манипуляция данными

В Язык обработки данных (DML) - это подмножество SQL, используемое для добавления, обновления и удаления данных:

ВСТАВЛЯТЬ В пример (column1, column2, column3) ЗНАЧЕНИЯ ('тест', 'N', НОЛЬ);
  • ОБНОВИТЬ изменяет набор существующих строк таблицы, например:
ОБНОВИТЬ пример НАБОР column1 = 'обновленное значение' КУДА column2 = 'N';
  • УДАЛИТЬ удаляет существующие строки из таблицы, например:
УДАЛИТЬ ИЗ пример КУДА column2 = 'N';
  • ОБЪЕДИНЕНИЕ используется для объединения данных нескольких таблиц. Он сочетает в себе ВСТАВЛЯТЬ и ОБНОВИТЬ элементы. Он определен в стандарте SQL: 2003; до этого некоторые базы данных предоставляли аналогичные функции через другой синтаксис, иногда называемый "опровергать ".
 ОБЪЕДИНЕНИЕ В table_name С ПОМОЩЬЮ table_reference НА (условие) КОГДА СООТВЕТСТВИЕ ТОГДА ОБНОВИТЬ НАБОР column1 = значение1 [, column2 = значение2 ...] КОГДА НЕТ ПОДЧИНЕННЫЙ ТОГДА ВСТАВЛЯТЬ (column1 [, column2 ...]) ЗНАЧЕНИЯ (значение1 [, значение2 ...])

Контроль транзакций

Транзакции, если они доступны, обертывают операции DML:

  • НАЧАТЬ СДЕЛКУ (или же НАЧАТЬ РАБОТУ, или же НАЧАТЬ СДЕЛКУ, в зависимости от диалекта SQL) отмечает начало транзакция базы данных, который либо завершается полностью, либо не выполняется вовсе.
  • СОХРАНИТЬ СДЕЛКУ (или же SAVEPOINT) сохраняет состояние базы данных на текущий момент транзакции
СОЗДАЙТЕ СТОЛ tbl_1(я бы int); ВСТАВЛЯТЬ В tbl_1(я бы) ЗНАЧЕНИЯ(1); ВСТАВЛЯТЬ В tbl_1(я бы) ЗНАЧЕНИЯ(2);СОВЕРШИТЬ; ОБНОВИТЬ tbl_1 НАБОР я бы=200 КУДА я бы=1;SAVEPOINT id_1upd; ОБНОВИТЬ tbl_1 НАБОР я бы=1000 КУДА я бы=2;ОТКАТ к id_1upd; ВЫБРАТЬ я бы из tbl_1;
  • СОВЕРШИТЬ делает все изменения данных в транзакции постоянными.
  • ОТКАТ отменяет все изменения данных с момента последнего СОВЕРШИТЬ или же ОТКАТ, оставив данные такими, какими они были до этих изменений. Однажды СОВЕРШИТЬ оператор завершается, изменения транзакции не могут быть отменены.

СОВЕРШИТЬ и ОТКАТ завершить текущую транзакцию и снять блокировку данных. В отсутствие НАЧАТЬ СДЕЛКУ или аналогичного оператора, семантика SQL зависит от реализации. В следующем примере показана классическая транзакция перевода средств, когда деньги удаляются с одной учетной записи и добавляются к другой. Если удаление или добавление не удается, откатывается вся транзакция.

НАЧНИТЕ СДЕЛКА; ОБНОВИТЬ Счет НАБОР количество=количество-200 КУДА номер счета=1234; ОБНОВИТЬ Счет НАБОР количество=количество+200 КУДА номер счета=2345;ЕСЛИ ОШИБКИ=0 СОВЕРШИТЬ;ЕСЛИ ОШИБКИ<>0 ОТКАТ;

Определение данных

В Язык определения данных (DDL) управляет структурой таблиц и индексов. Самыми основными элементами DDL являются СОЗДАЙТЕ, ИЗМЕНИТЬ, ПЕРЕИМЕНОВАТЬ, УРОНИТЬ и TRUNCATE заявления:

  • СОЗДАЙТЕ создает объект (например, таблицу) в базе данных, например:
СОЗДАЙТЕ СТОЛ пример( column1 ЦЕЛОЕ, column2 VARCHAR(50), column3 ДАТА НЕТ НОЛЬ, НАЧАЛЬНЫЙ КЛЮЧ (column1, column2));
  • ИЗМЕНИТЬ изменяет структуру существующего объекта различными способами, например, добавляя столбец в существующую таблицу или ограничение, например:
ИЗМЕНИТЬ СТОЛ пример ДОБАВИТЬ column4 ЦЕЛОЕ ДЕФОЛТ 25 НЕТ НОЛЬ;
  • TRUNCATE удаляет все данные из таблицы очень быстро, удаляя данные внутри таблицы, а не саму таблицу. Обычно это подразумевает последующую операцию COMMIT, т.е. ее нельзя откатить (в отличие от DELETE данные не записываются в журналы для отката позже).
TRUNCATE СТОЛ пример;
  • УРОНИТЬ удаляет объект в базе данных, как правило, безвозвратно, т.е. его невозможно откатить, например:
УРОНИТЬ СТОЛ пример;

Типы данных

Каждый столбец в таблице SQL объявляет типы, которые может содержать этот столбец. ANSI SQL включает следующие типы данных.[13]

Строки символов и строки национальных символов
  • ПЕРСОНАЖ(п) (или же СИМВОЛ (п)): фиксированная ширина п-строка символов, дополненная пробелами по мере необходимости
  • ХАРАКТЕР РАЗЛИЧНЫЙ (п) (или же VARCHAR (п)): строка переменной ширины с максимальным размером п символы
  • ХАРАКТЕР БОЛЬШОЙ ОБЪЕКТ (п [K | M | G | T]) (или же CLOB (п [K | M | G | T])): символ большого объекта с максимальным размером n [K | M | G | T] символы
  • НАЦИОНАЛЬНЫЙ ХАРАКТЕР (п) (или же NCHAR (п)): строка фиксированной ширины, поддерживающая международный набор символов
  • НАЦИОНАЛЬНЫЙ ХАРАКТЕР РАЗЛИЧНЫЙ (п) (или же NVARCHAR (п)): переменная ширина NCHAR нить
  • НАЦИОНАЛЬНЫЙ ХАРАКТЕР БОЛЬШОЙ ОБЪЕКТ (п [K | M | G | T]) (или же NCLOB (п [K | M | G | T])): большой объект национального характера с максимальным размером n [K | M | G | T] символы

Для ХАРАКТЕР БОЛЬШОЙ ОБЪЕКТ и НАЦИОНАЛЬНЫЙ ХАРАКТЕР БОЛЬШОЙ ОБЪЕКТ типы данных, множители K (1 024), M (1 048 576), грамм (1 073 741 824) и Т (1 099 511 627 776) можно дополнительно использовать при указании длины.

Двоичный
  • БИНАРНЫЙ (п): Двоичная строка фиксированной длины, максимальная длина п.
  • ДВОИЧНОЕ ИЗМЕНЕНИЕ (п) (или же ВАРБИНАРНЫЙ (п)): Двоичная строка переменной длины, максимальная длина п.
  • БИНАРНЫЙ БОЛЬШОЙ ОБЪЕКТ (п [K | M | G | T]) (или же BLOB (п [K | M | G | T])): двоичный большой объект с максимальной длиной n [K | M | G | T].

Для БИНАРНЫЙ БОЛЬШОЙ ОБЪЕКТ тип данных, множители K (1 024), M (1 048 576), грамм (1 073 741 824) и Т (1 099 511 627 776) можно дополнительно использовать при указании длины.

Булево
  • BOOLEAN

В BOOLEAN тип данных может хранить значения ИСТИННЫЙ и ЛОЖНЫЙ.

Числовой
  • ЦЕЛОЕ (или же INT), МАЛЕНЬКИЙ и BIGINT
  • ПЛАВАТЬ, НАСТОЯЩИЙ и ДВОЙНАЯ ТОЧНОСТЬ
  • ЧИСЛ (точность, шкала) или же ДЕСЯТИЧНЫЙ(точность, шкала)
  • DECFLOAT (точность)

Например, число 123,45 имеет точность 5 и масштаб 2. точность - положительное целое число, определяющее количество значащих цифр в определенной системе счисления (двоичной или десятичной). В шкала - целое неотрицательное число. Шкала 0 указывает, что число является целым числом. Для десятичного числа со шкалой S точное числовое значение представляет собой целое значение значащих цифр, деленное на 10.S.

SQL предоставляет функции ПОТОЛОК и ЭТАЖ округлять числовые значения. (Популярные функции конкретных поставщиков TRUNC (Informix, DB2, PostgreSQL, Oracle и MySQL) и КРУГЛЫЙ (Informix, SQLite, Sybase, Oracle, PostgreSQL, Microsoft SQL Server и Mimer SQL.))

Временной (дата и время)
  • ДАТА: для значений даты (например, 2011-05-03).
  • ВРЕМЯ: для значений времени (например, 15:51:36).
  • ВРЕМЯ С ЧАСОВЫМ ПОЯСОМ: такой же как ВРЕМЯ, но включая сведения о часовом поясе, о котором идет речь.
  • TIMESTAMP: Это ДАТА и ВРЕМЯ объединить в одну переменную (например, 2011-05-03 15:51:36.123456).
  • ВРЕМЯ С ЧАСОВЫМ ПОЯСОМ: такой же как TIMESTAMP, но включая сведения о часовом поясе, о котором идет речь.

Функция SQL ИЗВЛЕКАТЬ может использоваться для извлечения одного поля (например, секунд) значения даты, времени или интервала. Текущая системная дата / время сервера базы данных может быть вызвана с помощью таких функций, как ТЕКУЩАЯ ДАТА, CURRENT_TIMESTAMP, МЕСТНОЕ ВРЕМЯ, или же LOCALTIMESTAMP. (Популярные функции конкретных поставщиков НА СВИДАНИЕ, КО ВРЕМЕНИ, TO_TIMESTAMP, ГОД, МЕСЯЦ, ДЕНЬ, ЧАС, МИНУТА, ВТОРОЙ, ДЕНЬ ГОД, ДЕНЬ МЕСЯЦА и ДЕНЬ НЕДЕЛИ.)

Интервал (дата и время)
  • ГОД(точность): количество лет
  • ГОД(точность) В МЕСЯЦ: количество лет и месяцев
  • МЕСЯЦ(точность): количество месяцев
  • ДЕНЬ(точность): количество дней
  • ДЕНЬ(точность) В ЧАС: количество дней и часов
  • ДЕНЬ(точность) ДО МИНУТЫ: количество дней, часов и минут
  • ДЕНЬ(точность) НА ВТОРОЙ (шкала): количество дней, часов, минут и секунд
  • ЧАС(точность): количество часов
  • ЧАС(точность) ДО МИНУТЫ: количество часов и минут
  • ЧАС(точность) НА ВТОРОЙ (шкала): количество часов, минут и секунд
  • МИНУТА (точность): количество минут
  • МИНУТА (точность) НА ВТОРОЙ (шкала): количество минут и секунд

Контроль данных

В Язык управления данными (DCL) разрешает пользователям доступ к данным и манипулирование ими. Его два основных утверждения:

  • ГРАНТ разрешает одному или нескольким пользователям выполнять операцию или набор операций с объектом.
  • ОТЗЫВ устраняет грант, который может быть грантом по умолчанию.

Пример:

ГРАНТ ВЫБРАТЬ, ОБНОВИТЬ НА пример К some_user, другой_пользователь;ОТЗЫВ ВЫБРАТЬ, ОБНОВИТЬ НА пример ИЗ some_user, другой_пользователь;

Примечания

  1. ^ Международный стандарт (IS) ANSI / ISO / IEC. Язык баз данных SQL - Часть 2: Основа (SQL / Foundation). 1999 г.
  2. ^ «Справочник по Transact-SQL». Справочник по языку SQL Server. Электронная документация по SQL Server 2005. Microsoft. 2007-09-15. Получено 2007-06-17.
  3. ^ Руководство пользователя процедуры SQL SAS 9.4. Институт САС. 2013. с. 248. ISBN  9781612905686. Получено 2015-10-21. Хотя аргумент UNIQUE идентичен аргументу DISTINCT, он не является стандартом ANSI.
  4. ^ Леон, Алексис; Леон, Мэтьюз (1999). «Устранение дубликатов - ВЫБРАТЬ с помощью DISTINCT». SQL: полный справочник. Нью-Дели: Tata McGraw-Hill Education (опубликовано в 2008 г.). п. 143. ISBN  9780074637081. Получено 2015-10-21. [...] ключевое слово DISTINCT [...] удаляет дубликаты из набора результатов.
  5. ^ «Каков порядок выполнения SQL-запроса? - Designcise.com». www.designcise.com. Получено 2018-02-04.
  6. ^ а б Ханс-Иоахим, К. (2003). «Нулевые значения в реляционных базах данных и надежные информационные ответы». Семантика в базах данных. Второй международный семинар Замок Дагштуль, Германия, 7–12 января 2001 г. Исправленные статьи. Конспект лекций по информатике. 2582. С. 119–138. Дои:10.1007/3-540-36596-6_7. ISBN  978-3-540-00957-3.
  7. ^ а б Рон ван дер Мейден, «Логические подходы к неполной информации: обзор» в Chomicki, Jan; Сааке, Гюнтер (ред.) Логика для баз данных и информационных систем, Kluwer Academic Publishers ISBN  978-0-7923-8129-7, п. 344
  8. ^ ИСО / МЭК. ISO / IEC 9075-2: 2003, «SQL / Foundation». ИСО / МЭК.
  9. ^ «Семантика и проблемы универсальной квантификации в SQL». Компьютерный журнал. Февраль 1989 г. Дои:10.1093 / comjnl / 32.1.90. Получено 2017-01-16.
  10. ^ Fratarcangeli, Клаудио (1991). «Методика универсальной количественной оценки в SQL». Запись ACM SIGMOD. 20 (3): 16–24. Дои:10.1145/126482.126484. Получено 2017-01-16.
  11. ^ Каваш, Джалал (2004) Сложная количественная оценка на языке структурированных запросов (SQL): учебник с использованием реляционного исчисления; Журнал "Компьютеры в математике и преподавании естественных наук" ISSN  0731-9258 Том 23, выпуск 2, 2004 г., AACE, Норфолк, Вирджиния. Thefreelibrary.com
  12. ^ ИСО / МЭК 9075-2: 2011 §4.5
  13. ^ «ISO / IEC 9075-1: 2016: Информационные технологии - Языки баз данных - SQL - Часть 1: Framework (SQL / Framework)».