Скалярный запрос
Подмножество SQL для манипулирования данными
Как уже говорилось, языком реляционных СУБД является SQL. Для написания запросов к базе данных в языке SQL предусмотрено специальное предложение SELECT, которое, с одной стороны, реализует все возможности, определяемые реляционным исчислением с переменными-кортежами (а, следовательно, и реляционной алгеброй), а с другой – предоставляет дополнительные возможности, такие как реализация арифметических вычислений и специальных агрегатных функций, применяемых к множеству значений.
В соответствии с этим, сначала рассмотрим правила записи выражений и предикатов, затем – синтаксис предложения SELECT, и завершим данную тему рассмотрением способов реализации различных запросов к базе данных.
Здесь будут рассмотрены наиболее часто используемые возможности предложения SELECT. Полное описание предложения SELECT, со всеми его возможностями, можно найти в SQL Reference [10, 11].
Выражения
Некоторые правила записи выражений были рассмотрены при описании предложения CREATE TABLE ЯОД. Однако в предложении SELECT используются более сложные выражения, поэтому здесь рассматриваются некоторые дополнительные возможности записи выражений.
|
|
Выражение определяет значение. Оно может быть простым, представленным только константой или именем колонки, или более сложным. Когда подобные сложные выражения используются часто, можно создать функцию, реализующую это выражение, и использовать ее везде, где требуется использовать выражение.
Как уже говорилось, выражение имеет следующий вид:
операнд [ операция операнд … ]
операнду может предшествовать знак плюс (+) или минус (-).
В качестве операнда могут быть использованы следующие конструкции:
• константа
• имя_колонки
• специальный_регистр
• вызов _ функции
• (выражение)
• (скалярный_запрос)
• именованная_продолжительность
• case-выражение
• cast-спецификация
• ссылка_на_последовательность
Некоторые из этих конструкций были рассмотрены ранее, в описании подмножества ЯОД SQL. Далее рассматриваются другие способы задания операндов в выражении.
Скалярный запрос, который можно записывать в выражениях, представляется как полная форма предложения SELECT (или запрос), заключенная в круглые скобки. Он должен возвращать результат, содержащий только одну строку, имеющую только одну колонку. Если скалярный запрос не возвращает строку результата, тогда результатом выражения является значение NULL.
Поскольку в языке нет констант типа даты – времени, вместо них, там, где это нужно, может использоваться именованная продолжительность, рассмотренная при описании CREATE TABLE ЯОД.