
- •Основы sql Что такое sql
- •Внимание
- •Типы данных
- •Логические данные
- •Дата и время
- •Интервалы
- •Interval 'длина' year | month | day | hour | minute | second
- •Специальные типы данных
- •Id_клиента integer primary key,
- •Структурированные типы
- •Insert into Книги (х, 350.50);
- •Неопределенные значения
- •Преобразование типов
Логические данные
В этой части математической логики, основоположником которой был английский математик Джон Буль, данные имеют только два значения — ИСТИНА и ЛОЖЬ, обозначаемые как true и false соответственно. Данные логического типа получаются в результате операций сравнения. Например, результатом вычисления выражения 3 < 5 является ИСТИНА, а выражения 2 + 3 = 10 —ЛОЖЬ.
В SQL тип данных BOOLEAN (булевский) имеет три значения — TRUE, FALSE и UNKNOWN. Значение unknown (неизвестное) было введено для обозначения результата, получающегося при сравнении со значением NULL (неопределенное). Если пользователь еще не ввел в ячейку таблицы никакого значения, то эта "пустая" ячейка содержит значение NULL, интерпретируемое как неизвестное или неопределенное значение.
Результатом любой операции сравнения true или false с NULL или с unknown всегда является unknown.
В SQL-выражениях логические значения заключаются в кавычки, например, ' TRUE ' или ' true'.
Дата и время
Тип DATA (дата) предназначен для хранения значений даты, элементы которых расположены в следующем порядке: год (4 цифры), дефис (-), месяц (2 цифры), дефис, день (2 цифры). Таким образом, значения даты занимают 10 позиций, например, 2005-10-02.
Данные этого типа могут содержать любую дату с 0001 года по 9999 год.
Для представления времени предусмотрены два типа:
TIME WITHOUT TIME ZONE (время без часового пояса) предназначен для хранения значений времени, элементы которых расположены в следующем порядке: часы, двоеточие, минуты, двоеточие, секунды. Часы и минуты представляются двумя цифрами, а секунды могут быть представлены двумя и более цифрами (если требуется дробная часть), например 18:35:19.547. Длина дробной части секунд зависит от реализации, но внутреннее представление времени должно иметь не менее 6 цифр. По умолчанию время данного типа представляют без дробной части секунд. Чтобы указать, что время должно быть представлено с n цифрами после разделительной точки, достаточно использовать такой синтаксис: TIME WITHOUT TIME ZONE (n). Например, чтобы кроме секунд указывались еще и миллисекунды, следует определить тип как TIME WITHOUT TIME ZONE (3). Длина данных рассматриваемого типа без дробной части равна 8 символам, а с дробной частью — 9 плюс количество цифр после разделительной точки. Для задания времени без указания часового пояса с использованием установок по умолчанию можно использовать короткий синтаксис — TIME;
TIME WITH TIME ZONE (время с часовым поясом) — такой же тип данных, как и TIME WITHOUT TIME ZONE. Отличие заключается лишь в том, что к значению времени добавляется еще и информация о разности между местным и всемирным временем. Всемирное время (Universal Time Coordinated, UTC) — это время по Гринвичу, т. е. время нулевого меридиана, проходящего через г. Гринвич в Великобритании (Greenwich Mean Time, GMT), Значение разности между локальным и всемирным временем находится в диапазоне от -12:59 до 13:00. Длина данных рассматриваемого типа равна длине данных типа TIME WITHOUT TIME ZONE плюс 6, поскольку дополнительная информация о разности времен занимает 6 позиций (дефис, знак (+) или (-), 2 цифры для часов, двоеточие, 2 цифры для минут).
Для одновременного представления даты и времени служат следующие два типа:
TIMESTAMP WITHOUT TIME ZONE (дата и время без часового пояса). Элементы данных этого типа имеют такие же характеристики, как и для данных типа DATE и TIME WITHOUT TIME ZONE, за исключением одного: данные типа TIMESTAMP WITHOUT TIME ZONE по умолчанию имеют 6 цифр в дробной части секунд, а не 0, как в типе TIME WITHOUT TIME ZONE. Для указания количества цифр в дробной части используется синтаксис TIMESTAMP WITHOUT TIME ZONE (n). Если дробной части нет, то данные занимают 19 позиций: 10 позиций для даты, один пробел и 8 позиций для времени. Если определена дробная часть, то длина данных равна 20 плюс количество цифр в дробной части секунд;
TIMESTAMP WITH TIME ZONE (дата и время с часовым поясом) — такой же тип данных, как и TIMESTAMP WITH TIME ZONE. Отличие состоит в том, что к значению времени добавляется еще и информация о разности между местным и всемирным временем (см. TIME WITH TIME ZONE). Дополнительная информация занимает 6 позиций. Данные типа TIMESTAMP WITH TIME ZONE без дробной части занимают 25 позиций, с дробной частью — 26 плюс количество цифр в дробной части секунд.
Чтобы представить в SQL-выражении дату, время или дату-время, необходимо использовать функцию CAST () приведения к заданному типу. Допустим, в таблице Продажи имеется столбец дата типа data. Чтобы получить сведения из этой таблицы за период после 2005-09-30, следует выполнить такой запрос:
SELECT * FROM Продажи WHERE Дата > CAST('2005-09-30' AS DATE);
Здесь строка, содержащая дату, приводится к типу DATA, и полученный результат участвует в операции сравнения с данными столбца Дата.
В языке SQL имеются три функции, которые возвращают текущие дату и время:
CURRENT_DATE— возвращает текущую дату (тип DATE). Например, 2005-06-18;
CURRENT_TIME(число) — возвращает текущее время (тип TIME). Целочисленный параметр число указывает точность представления секунд. Например, при число = 2 секунды будут представлены с точностью до сотых (две цифры в дробной части): 12:39:45.27;
CURRENT_TIMESTAMP(число) — возвращает дату и время (тип TIMESTAMP), например 2005-06-18 12:39:45.27. Целочисленный параметр число указывает точность представления секунд.