Jump to content

Синтаксис SQL

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

Языковые элементы

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

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

  • Ключевые слова — это слова, определенные в языке SQL. Они либо зарезервированы (например, SELECT, COUNT и YEAR) или незарезервированные (например, ASC, DOMAIN и KEY). Список зарезервированных слов SQL .
  • Идентификаторы — это имена объектов базы данных, таких как таблицы , столбцы и схемы. Идентификатор не может быть равен зарезервированному ключевому слову, если только он не является идентификатором с разделителями. Идентификаторы с разделителями означают идентификаторы, заключенные в двойные кавычки. Они могут содержать символы, обычно не поддерживаемые в идентификаторах SQL, и могут быть идентичны зарезервированному слову, например, столбцу с именем YEAR указывается как "YEAR".
    • В MySQL двойные кавычки являются разделителями строковых литералов вместо этого по умолчанию . Включение ansi_quotes Режим SQL обеспечивает стандартное поведение SQL. Их также можно использовать независимо от этого режима с помощью обратных кавычек: `YEAR`.
  • Предложения , являющиеся составными компонентами операторов и запросов. (В некоторых случаях это необязательно.) [1]
  • Выражения , которые могут создавать либо скалярные значения, либо таблицы, состоящие из столбцов и строк данных.
  • Предикаты , которые определяют условия, которые могут быть оценены с помощью трехзначной логики SQL (3VL) (истина/ложь/неизвестно) или логических значений истинности и используются для ограничения эффектов операторов и запросов или для изменения хода программы.
  • Запросы , которые извлекают данные на основе определенных критериев. Это важный элемент SQL .
  • Операторы , которые могут оказывать постоянное влияние на схемы и данные или могут управлять транзакциями , потоком программы , соединениями, сеансами или диагностикой.
    • Операторы SQL также включают в себя точку с запятой (";"). Хотя он не требуется на каждой платформе, он определяется как стандартная часть грамматики SQL.
  • Незначительные пробелы обычно игнорируются в операторах и запросах SQL, что упрощает форматирование кода SQL для удобства чтения.

Операторы

[ редактировать ]
Оператор Описание Пример
= Равно Author = 'Alcott'
<> Не равно (многие диалекты также принимают !=) Dept <> 'Sales'
> Больше, чем Hire_Date > '2012-01-31'
< Меньше, чем Bonus < 50000.00
>= Больше или равно Dependents >= 2
<= Меньше или равно Rate <= 0.05
[NOT] BETWEEN [SYMMETRIC] Между инклюзивным диапазоном. SYMMETRIC инвертирует границы диапазона, если первая выше второй. Cost BETWEEN 100.00 AND 500.00
[NOT] LIKE [ESCAPE] Начинается с шаблона символов Full_Name LIKE 'Will%'
Содержит шаблон символов Full_Name LIKE '%Will%'
[NOT] IN Равно одному из нескольких возможных значений DeptCode IN (101, 103, 209)
IS [NOT] NULL Сравнить с нулем (отсутствуют данные) Address IS NOT NULL
IS [NOT] TRUE или IS [NOT] FALSE Булева проверка истинности PaidVacation IS TRUE
IS NOT DISTINCT FROM Равно значению или оба значения равны нулю (отсутствуют данные). Debt IS NOT DISTINCT FROM - Receivables
AS Используется для изменения имени столбца при просмотре результатов. SELECT employee AS department1

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

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

CASE WHEN n > 0
          THEN 'positive'
     WHEN n < 0
          THEN 'negative'
     ELSE 'zero'
END

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

CASE n WHEN 1
            THEN 'One'
       WHEN 2
            THEN 'Two'
       ELSE 'I cannot count that high'
END

Этот синтаксис использует неявное сравнение на равенство с обычными оговорками для сравнения с NULL .

Есть две короткие формы для специальных CASE выражения: COALESCE и NULLIF.

The COALESCE Выражение возвращает значение первого операнда, отличного от NULL, найденного слева направо, или NULL, если все операнды равны NULL.

COALESCE(x1,x2)

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

CASE WHEN x1 IS NOT NULL THEN x1
     ELSE x2
END

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

NULLIF(x1, x2)

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

CASE WHEN x1 = x2 THEN NULL ELSE x1 END

Комментарии

[ редактировать ]

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

Самая распространенная операция SQL — запрос — использует декларативный подход. SELECT заявление. SELECT извлекает данные из одной или нескольких таблиц или выражений. Стандартный SELECT операторы не оказывают постоянного воздействия на базу данных. Некоторые нестандартные реализации SELECT может иметь стойкие последствия, такие как SELECT INTO синтаксис, предусмотренный в некоторых базах данных. [2]

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

Запрос включает список столбцов, которые должны быть включены в окончательный результат, обычно сразу после SELECT ключевое слово. Звездочка (" *") можно использовать, чтобы указать, что запрос должен возвращать все столбцы запрошенных таблиц. SELECT — это самый сложный оператор SQL с необязательными ключевыми словами и предложениями, в том числе:

  • The FROM предложение, которое указывает таблицу(и), из которой нужно получить данные. FROM пункт может включать необязательный JOIN подпункты для указания правил объединения таблиц.
  • The WHERE Предложение включает предикат сравнения, который ограничивает строки, возвращаемые запросом. WHERE все строки Предикат удаляет из набора результатов , в которых предикат сравнения не имеет значения True.
  • The GROUP BY В этом предложении строки, имеющие общие значения, проецируются на меньший набор строк. [ нужны разъяснения ] GROUP BY часто используется в сочетании с функциями агрегации SQL или для исключения повторяющихся строк из набора результатов. WHERE оговорка применяется до GROUP BY пункт.
  • The HAVING Предложение включает предикат, используемый для фильтрации строк, полученных в результате GROUP BY пункт. Поскольку он действует на основе результатов GROUP BY функции агрегирования могут использоваться в HAVING Предикат предложения.
  • The ORDER BY Предложение определяет, какие столбцы следует использовать для сортировки результирующих данных и в каком направлении их сортировать (по возрастанию или по убыванию). Без ORDER BY предложение, порядок строк, возвращаемых SQL-запросом, не определен.
  • The DISTINCT ключевое слово [3] исключает дублирование данных. [4]
  • The OFFSET Предложение указывает количество строк, которые нужно пропустить, прежде чем начать возвращать данные.
  • The FETCH FIRST Предложение указывает количество возвращаемых строк. Вместо этого некоторые базы данных SQL имеют нестандартные альтернативы, например LIMIT, TOP или ROWNUM.

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

SELECT <columns> 5.
FROM <table> 1.
WHERE <predicate on rows> 2.
GROUP BY <columns> 3.
HAVING <predicate on groups> 4.
ORDER BY <columns> 6.
OFFSET 7.
FETCH FIRST 8.

Следующий пример SELECT запрос возвращает список дорогих книг. Запрос извлекает все строки из таблицы Book , в которых столбец цены содержит значение больше 100,00. Результат сортируется в порядке возрастания названия . Звездочка (*) в списке выбора указывает, что все столбцы таблицы Book должны быть включены в набор результатов.

SELECT *
 FROM  Book
 WHERE price > 100.00
 ORDER BY title;

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

SELECT Book.title AS Title,
       count(*) AS Authors
 FROM  Book
 JOIN  Book_author
   ON  Book.isbn = Book_author.isbn
 GROUP BY Book.title;

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

Title                  Authors
---------------------- -------
SQL Examples and Guide 4
The Joy of SQL         1
An Introduction to SQL 2
Pitfalls of SQL        1

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

SELECT title,
       count(*) AS Authors
 FROM  Book
 NATURAL JOIN Book_author
 GROUP BY title;

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

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

SELECT isbn,
       title,
       price,
       price * 0.06 AS sales_tax
 FROM  Book
 WHERE price > 100.00
 ORDER BY title;

Подзапросы

[ редактировать ]

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

SELECT isbn,
       title,
       price
 FROM  Book
 WHERE price < (SELECT AVG(price) FROM Book)
 ORDER BY title;

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

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

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

[ редактировать ]

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

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

SELECT b.isbn, b.title, b.price, sales.items_sold, sales.company_nm
FROM Book b
  JOIN (SELECT SUM(Items_Sold) Items_Sold, Company_Nm, ISBN
        FROM Book_Sales
        GROUP BY Company_Nm, ISBN) sales
  ON sales.isbn = b.isbn

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

[ редактировать ]

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

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

р И q п
Истинный ЛОЖЬ Неизвестный
д Истинный Истинный ЛОЖЬ Un­known
ЛОЖЬ ЛОЖЬ ЛОЖЬ ЛОЖЬ
Неизвестный Un­known ЛОЖЬ Un­known
п ИЛИ q п
Истинный ЛОЖЬ Неизвестный
д Истинный Истинный Истинный Истинный
ЛОЖЬ Истинный ЛОЖЬ Un­known
Неизвестный Истинный Un­known Un­known
р = q п
Истинный ЛОЖЬ Неизвестный
д Истинный Истинный ЛОЖЬ Un­known
ЛОЖЬ ЛОЖЬ Истинный Un­known
Неизвестный Un­known Un­known Un­known
д НЕ д
Истинный ЛОЖЬ
ЛОЖЬ Истинный
Неизвестный Un­known

Однако существуют споры по поводу семантической интерпретации нулей в SQL из-за того, что они обрабатываются вне прямых сравнений. Как видно из таблицы выше, прямое сравнение двух значений NULL в SQL (например, NULL = NULL) возвращает истинностное значение Неизвестно. Это соответствует интерпретации, согласно которой Null не имеет значения (и не является членом какой-либо предметной области), а скорее является заполнителем или «меткой» для отсутствующей информации. Однако принцип, согласно которому два значения NULL не равны друг другу, фактически нарушается в спецификации SQL для UNION и INTERSECT операторы, которые идентифицируют нули друг с другом. [7] Следовательно, эти операции над множествами в SQL могут давать результаты, не представляющие достоверную информацию, в отличие от операций, включающих явные сравнения с NULL (например, в WHERE пункт, рассмотренный выше). В предложении Кодда 1979 года (которое в основном было принято в SQL92) это семантическое несоответствие объясняется тем, что удаление дубликатов в операциях над множествами происходит «на более низком уровне детализации, чем проверка на равенство при оценке операций поиска». [6] Однако профессор информатики Рон ван дер Мейден пришел к выводу, что «несоответствия в стандарте SQL означают, что невозможно приписать какую-либо интуитивную логическую семантику обработке нулей в SQL». [7]

Кроме того, поскольку операторы SQL возвращают Unknown при прямом сравнении чего-либо с Null, SQL предоставляет два предиката сравнения, специфичных для Null: IS NULL и IS NOT NULL проверить, являются ли данные нулевыми или нет. [8] SQL явно не поддерживает универсальную квантификацию и должен обрабатывать ее как отрицательную экзистенциальную квантификацию . [9] [10] [11] Существует также <row value expression> IS DISTINCT FROM <row value expression> инфиксный оператор сравнения, который возвращает TRUE, если оба операнда не равны или оба не равны NULL. Аналогично, НЕ ОТЛИЧНО ОТ определяется как NOT (<row value expression> IS DISTINCT FROM <row value expression>). SQL:1999 также представлен BOOLEAN переменные типа, которые согласно стандарту также могут содержать неизвестные значения, если они допускают значение NULL. На практике ряд систем (например, PostgreSQL ) реализуют BOOLEAN Unknown как BOOLEAN NULL, о чем стандарт говорит, что NULL BOOLEAN и UNKNOWN «могут использоваться взаимозаменяемо и означать одно и то же». [12] [13]

Манипулирование данными

[ редактировать ]

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

  • INSERT добавляет строки (формально кортежи ) в существующую таблицу, например:
INSERT INTO example
 (column1, column2, column3)
 VALUES
 ('test', 'N', NULL);
  • UPDATE изменяет набор существующих строк таблицы, например:
UPDATE example
 SET column1 = 'updated value'
 WHERE column2 = 'N';
  • DELETE удаляет существующие строки из таблицы, например:
DELETE FROM example
 WHERE column2 = 'N';
  • MERGE используется для объединения данных нескольких таблиц. Он сочетает в себе INSERT и UPDATE элементы. Он определен в стандарте SQL:2003; до этого некоторые базы данных предоставляли аналогичную функциональность через другой синтаксис, иногда называемый « upsert ».
 MERGE INTO table_name USING table_reference ON (condition)
 WHEN MATCHED THEN
 UPDATE SET column1 = value1 [, column2 = value2 ...]
 WHEN NOT MATCHED THEN
 INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...])

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

[ редактировать ]

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

  • START TRANSACTION (или BEGIN WORK, или BEGIN TRANSACTION, в зависимости от диалекта SQL) отмечает начало транзакции базы данных , которая либо завершается полностью, либо не завершается вообще.
  • SAVE TRANSACTION (или SAVEPOINT) сохраняет состояние базы данных на текущий момент транзакции
CREATE TABLE tbl_1(id int);
 INSERT INTO tbl_1(id) VALUES(1);
 INSERT INTO tbl_1(id) VALUES(2);
COMMIT;
 UPDATE tbl_1 SET id=200 WHERE id=1;
SAVEPOINT id_1upd;
 UPDATE tbl_1 SET id=1000 WHERE id=2;
ROLLBACK to id_1upd;
 SELECT id from tbl_1;
  • COMMIT делает все изменения данных в транзакции постоянными.
  • ROLLBACK отменяет все изменения данных с момента последнего COMMIT или ROLLBACK, оставив данные такими, какими они были до этих изменений. Как только COMMIT оператор завершается, изменения транзакции не могут быть отменены.

COMMIT и ROLLBACK завершить текущую транзакцию и снять блокировки данных. В отсутствие START TRANSACTION или аналогичного оператора, семантика SQL зависит от реализации. В следующем примере показана классическая транзакция перевода средств, при которой деньги снимаются с одного счета и добавляются на другой. Если удаление или добавление завершается неудачей, вся транзакция откатывается.

START TRANSACTION;
 UPDATE Account SET amount=amount-200 WHERE account_number=1234;
 UPDATE Account SET amount=amount+200 WHERE account_number=2345;

IF ERRORS=0 COMMIT;
IF ERRORS<>0 ROLLBACK;

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

[ редактировать ]

Язык определения данных (DDL) управляет структурой таблиц и индексов. Самыми основными элементами DDL являются CREATE, ALTER, RENAME, DROP и TRUNCATE заявления:

  • CREATE создает объект (например, таблицу) в базе данных, например:
CREATE TABLE example(
 column1 INTEGER,
 column2 VARCHAR(50),
 column3 DATE NOT NULL,
 PRIMARY KEY (column1, column2)
);
  • ALTER изменяет структуру существующего объекта различными способами, например, добавляя столбец в существующую таблицу или ограничение, например:
ALTER TABLE example ADD column4 INTEGER DEFAULT 25 NOT NULL;
  • TRUNCATE очень быстро удаляет все данные из таблицы, удаляя данные внутри таблицы, а не саму таблицу. Обычно подразумевает последующую операцию COMMIT, т.е. ее нельзя откатить (данные не записываются в логи для последующего отката, в отличие от DELETE).
TRUNCATE TABLE example;
  • DROP удаляет объект в базе данных, обычно безвозвратно, т.е. его невозможно откатить, например:
DROP TABLE example;

Типы данных

[ редактировать ]

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

Строки символов и строки национальных символов
  • CHARACTER(n) (или CHAR(n) символов фиксированной ширины ): строка из n , дополненная пробелами по мере необходимости.
  • CHARACTER VARYING(n) (или VARCHAR(n)): строка переменной ширины с максимальным размером n символов.
  • CHARACTER LARGE OBJECT(n [ K | M | G | T ]) (или CLOB(n [ K | M | G | T ])): символ большого объекта с максимальным размером n [ K | М | г | Т ] символы
  • NATIONAL CHARACTER(n) (или NCHAR(n)): строка фиксированной ширины, поддерживающая международный набор символов.
  • NATIONAL CHARACTER VARYING(n) (или NVARCHAR(n)): переменная ширина NCHAR нить
  • NATIONAL CHARACTER LARGE OBJECT(n [ K | M | G | T ]) (или NCLOB(n [ K | M | G | T ])): крупный объект национального характера с максимальным размером n [ K | М | г | Т ] символы

Для CHARACTER LARGE OBJECT и NATIONAL CHARACTER LARGE OBJECT типы данных, множители K (1 024), M (1 048 576), G (1 073 741 824) и T (1 099 511 627 776) можно дополнительно использовать при указании длины.

Двоичный
  • BINARY(n): двоичная строка фиксированной длины, максимальная длина n .
  • BINARY VARYING(n) (или VARBINARY(n)): Двоичная строка переменной длины, максимальная длина n .
  • BINARY LARGE OBJECT(n [ K | M | G | T ]) (или BLOB(n [ K | M | G | T ])): большой бинарный объект максимальной длины n [ K | М | г | Т] .

Для BINARY LARGE OBJECT тип данных, множители K (1 024), M (1 048 576), G (1 073 741 824) и T (1 099 511 627 776) можно дополнительно использовать при указании длины.

логическое значение
  • BOOLEAN

The BOOLEAN тип данных может хранить значения TRUE и FALSE.

Числовой
  • INTEGER (или INT), SMALLINT и BIGINT
  • FLOAT, REAL и DOUBLE PRECISION
  • NUMERIC(precision, scale) или DECIMAL(precision, scale)
  • DECFLOAT(precision)

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

SQL предоставляет функции CEILING и FLOOR округлять числовые значения. (Популярные функции, специфичные для поставщиков: TRUNC (Informix, DB2, PostgreSQL, Oracle и MySQL) и ROUND (Informix, SQLite, Sybase, Oracle, PostgreSQL, Microsoft SQL Server и Mimer SQL.))

Временной (дата и время)
  • DATE: для значений даты (например, 2011-05-03).
  • TIME: для значений времени (например, 15:51:36).
  • TIME WITH TIME ZONE: то же, что TIME, но включая подробную информацию о часовом поясе.
  • TIMESTAMP: Это DATE и TIME объединить в одну переменную (например, 2011-05-03 15:51:36.123456).
  • TIMESTAMP WITH TIME ZONE: то же, что TIMESTAMP, но включая подробную информацию о часовом поясе.

SQL-функция EXTRACT может использоваться для извлечения одного поля (например, секунд) значения даты и времени или интервала. Текущую системную дату/время сервера базы данных можно вызвать с помощью таких функций, как CURRENT_DATE, CURRENT_TIMESTAMP, LOCALTIME, или LOCALTIMESTAMP. (Популярные функции, специфичные для поставщиков: TO_DATE, TO_TIME, TO_TIMESTAMP, YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, DAYOFYEAR, DAYOFMONTH и DAYOFWEEK.)

Интервал (дата-время)
  • YEAR(precision): несколько лет
  • YEAR(precision) TO MONTH: количество лет и месяцев
  • MONTH(precision): количество месяцев
  • DAY(precision): количество дней
  • DAY(precision) TO HOUR: количество дней и часов
  • DAY(precision) TO MINUTE: количество дней, часов и минут
  • DAY(precision) TO SECOND(scale): количество дней, часов, минут и секунд
  • HOUR(precision): количество часов
  • HOUR(precision) TO MINUTE: количество часов и минут
  • HOUR(precision) TO SECOND(scale): количество часов, минут и секунд
  • MINUTE(precision): количество минут
  • MINUTE(precision) TO SECOND(scale): количество минут и секунд

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

[ редактировать ]

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

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

Пример:

GRANT SELECT, UPDATE
 ON example
 TO some_user, another_user;

REVOKE SELECT, UPDATE
 ON example
 FROM some_user, another_user;

Примечания

[ редактировать ]
  1. ^ Международный стандарт ANSI/ISO/IEC (IS). Язык базы данных SQL. Часть 2. Основа (SQL/Foundation). 1999.
  2. ^ «Справочник по Transact-SQL». Справочник по языку SQL Server . Электронная документация по SQL Server 2005. Майкрософт. 15 сентября 2007 г. Проверено 17 июня 2007 г.
  3. ^ Руководство пользователя по процедурам SAS 9.4 SQL . Институт САС. 2013. с. 248. ИСБН  9781612905686 . Проверено 21 октября 2015 г. Хотя аргумент UNIQUE идентичен аргументу DISTINCT, он не является стандартом ANSI.
  4. ^ Леон, Алексис ; Леон, Мэтьюз (1999). «Устранение дубликатов — ВЫБРАТЬ с помощью DISTINCT». SQL: Полный справочник . Нью-Дели: Tata McGraw-Hill Education (опубликовано в 2008 г.). п. 143. ИСБН  9780074637081 . Проверено 21 октября 2015 г. [...] ключевое слово DISTINCT [...] удаляет дубликаты из набора результатов.
  5. ^ «Каков порядок выполнения SQL-запроса? - Designsized.com» . www.designcision.com . 29 июня 2015 года . Проверено 4 февраля 2018 г.
  6. ^ Перейти обратно: а б Ханс-Иоахим, К. (2003). «Нулевые значения в реляционных базах данных и достоверные информационные ответы». Семантика в базах данных. Второй международный семинар в замке Дагштуль, Германия, 7–12 января 2001 г. Пересмотренные статьи . Конспекты лекций по информатике. Том. 2582. стр. 119–138. дои : 10.1007/3-540-36596-6_7 . ISBN  978-3-540-00957-3 .
  7. ^ Перейти обратно: а б Рон ван дер Мейден, «Логические подходы к неполной информации: обзор» в Хомицки, январь; Сааке, Гюнтер (ред.) Логика для баз данных и информационных систем , Kluwer Academic Publishers ISBN   978-0-7923-8129-7 , с. 344
  8. ^ ИСО/МЭК. ISO/IEC 9075-2:2003, «SQL/Foundation» . ИСО/МЭК.
  9. ^ Негри, М.; Пелагатти, Г.; Сбаттелла, Л. (февраль 1989 г.). «Семантика и проблемы количественной оценки универсальности в SQL» . Компьютерный журнал . 32 (1): 90–91. дои : 10.1093/comjnl/32.1.90 . Проверено 16 января 2017 г.
  10. ^ Фратарканджели, Клаудио (1991). «Техника универсального количественного определения в SQL» . Запись ACM SIGMOD . 20 (3): 16–24. дои : 10.1145/126482.126484 . S2CID   18326990 . Проверено 16 января 2017 г.
  11. ^ Каваш, Джалал (2004) Сложная количественная оценка на языке структурированных запросов (SQL): учебное пособие по реляционному исчислению ; Журнал компьютеров в преподавании математики и естественных наук ISSN   0731-9258 Том 23, выпуск 2, 2004 г., AACE, Норфолк, Вирджиния. Thefreelibrary.com
  12. ^ С. Дата (2011). SQL и реляционная теория: как писать точный код SQL . О'Рейли Медиа, Инк. с. 83. ИСБН  978-1-4493-1640-2 .
  13. ^ ИСО/МЭК 9075-2:2011 §4.5
  14. ^ «ISO/IEC 9075-1:2016: Информационные технологии. Языки баз данных. SQL. Часть 1. Структура (SQL/Framework)» .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 10d4b3ebe2a3fc75bd495be2f94c23d1__1718531760
URL1:https://arc.ask3.ru/arc/aa/10/d1/10d4b3ebe2a3fc75bd495be2f94c23d1.html
Заголовок, (Title) документа по адресу, URL1:
SQL syntax - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)