|
Программирование >> Построение запросов sql
- календарные даты в стандарте представляются в виде строковых констант. Например, 1 сентября 1999 года должно быть представлено как один из следующих вариантов: 09/01/1999, 09:01:1999, 01.09.1999, 01-SEP-1999 или 1999-09-01. В БД некоторые данные могут отсутствовать из-за того, что они неизвестны на данный момент времени или не существуют по своей природе. Если не вводить эти данные, то в БД будут неопределенные значения, что недопустимо. Поэтому SQL поддерживает обработку отсутствующих данных с помощью понятия отсутствующее значение . Оно показывает, что в конкретной строке определенный элемент данных отсутствует или столбец вообще не подходит для этой строки. Говорят, что значение такого элемента данных равно NULL. Однако NULL не является значением данных, как 0, или 457, или Поставщик. Напротив, это признак, показывающий, что точное значение данных неизвестно или отсутствует. Во многих ситуациях значения NULL требуют от СУБД отдельной обработки. 2.8. Выражения Выражения представляют собой комбинацию идентификаторов, функций, операций, констант и других объектов. Выражение может быть использовано в качестве аргумента в хранимых процедурах или запросах. Выражение состоит из операндов (собственно данных) и операций. В качестве операндов могут выступать константы, переменные, имена столбцов, функции, подзапросы. Операции - это определенный вид действий над элементами данных, после выполнения которых получается в качестве результата новое значение. Элементы данных, используемые при выполнении операций, называются операндами или аргументами. Операции представляются в виде специальных символов или ключевых слов. В Firebird 2.1 предусмотрено несколько категорий операций (табл. 2.4) [16]. В SQL определено понятие скалярного выражения [9]. Скалярное выражение - это выражение, вырабатывающее результат некоторого типа, специфицированного в стандарте. Скалярные выражения являются основой языка SQL, поскольку, хотя это реляционный язык, все условия, элементы списков выборки и т. д. базируются именно на скалярных выражениях. В стандарте SQL имеется несколько разновидностей скалярных выражений. К числу наиболее важных разновидностей относятся численные выражения (это выражения, значения которых относятся к числовому типу данных); строковые выражения (это выражения, значениями которых являются символьные строки); выражения со значениями даты-времени (выражения, вырабатывающие значения типа дата-время ); логические выражения. Таблица 2.4. Категории операций
Основой логического выражения являются предикаты. Предикат позволяет специфицировать условие, результатом вычисления которого может быть TRUE, FALSE или UNKNOWN. В SQL ложный и неопределенный результаты объединяются и расцениваются как ложь. Решения принимаются в соответствии с результатом вычисления предиката - истина или ложь. Можно сказать, что предикат - это логическая функция, принимающая значения истина или ложь . Синтаксическими элементами, проверяющими истинность, являются: - в языке DDL: CHECK для проверки условий достоверности данных; - в языке DQL: WHERE (для условий поиска), HAVING (для условий выбора групп), ON (для условий соединения) и случаи проверки множества условий: CASE, COALESCE, NULLIF, IIF; - в языке PSQL: IF (универсальная проверка истина/ложь), WHILE (для проверки условий цикла) и WHEN (для проверки кодов исключения). Часто условия являются не простыми предикатами, а группой нескольких предикатов (связанных логическими операциями AND или OR), каждый из которых при вычислении делает вклад в вычисление общей истинности. Для построения всех этих видов выражений могут использоваться константы, переменные, имена столбцов, функции и подзапросы, возвращающие результат соответствующего типа в зависимости от разновидности скалярного выражения. Во все эти виды выражений могут входить CASE-выражения (или выражения с переключателем), которые представляют собой либо операцию CASE, либо функции вывода (выбора вариантов). Более подробно CASE-выражения будут рассмотрены далее. Простым примером численного выражения является 2*2. Следующее выражение является более сложным и использует функцию и строковую операцию : Год подачи ремонтной заявки EXTRACT (YEAR From IncomingDate). 2.9. Типы данных Типы данных определяют столбцы таблицы БД в следующих случаях: - при определении (создании) таблицы запросом CREATE TABLE; - при определении домена запросом CREATE DOMAIN; - при добавлении нового столбца запросом ALTER TABLE. В SQL используются основные типы данных, форматы которых могут несколько различаться для разных СУБД. Общий вид определения типа данных выглядит следующим образом: <тип данных>::= { {SMALLINT INTEGER BIGINT FLOAT DOUBLE PRECISION} {DECIMAL NUMERIC} [( PRECISION [, SCALE])] {DATE TIME TIMESTAMP} {CHAR VARCHAR} BLOB }. В табл. 2.5 приведено описание типов данных SQL, используемых в СУБД Firebird [18]. Символьные типы данных представлены типами CHAR и VARCHAR. Тип CHAR определяет строки фиксированной длины. Если при вводе строка символов меньше объявленного значения длины n, то недостающие символы заполняются пробелами, а в случае превышения - усекаются. Тип VARCHAR представляет строки переменной длины. В отличие от типа CHAR при сохранении в БД недостающие символы не заполняются пробелами. При чтении считываются только введенные символы, а затем дополняются пробелами. Символьные типы фиксированной длины не могут превышать 32767 байт абсолютной длины; для типов переменной длины этот предел уменьшается на два байта, которые при сохранении строки содержат счетчик символов [18]. Числовые типы данных представлены типами SMALLINT, INTEGER и BIGINT, NUM4ERIC и DECIMAL, DOUBLE PRECISION и FLOAT. Целые числовые типы (согласно стандарту SQL99) - это типы SMALLINT, INTEGER, BIGINT. Они представляют собой 16-битный, 32-битный и 64-битный типы со знаком соответственно. Если величина SMALLINT (5 значащих цифр) должна быть меньше или равна величине INTEGER (10 значащих цифр), то величина BIGINT (19 значащих цифр) должна быть больше или равна величине INTEGER.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |