- •8.1. Основные элементы sql Операторы
- •Типы данных
- •Константы
- •Выражения
- •Встроенные функции
- •Отсутствующие, неподходящие или неизвестные данные
- •8.2. Использование sql для выборки (чтения) данных
- •8.3. Отбор строк из таблиц
- •Сравнение
- •Проверка на принадлежность диапазону значений
- •Проверка на членство во множестве
- •Проверка на соответствие шаблону
- •Проверка на равенство значению null
- •Составные условия поиска
- •Вопросы для самоконтроля
Типы данных
В стандарте ANSI/ISO (SQL1) определены типы данных, которые можно использовать для представления информации в реляционной БД. Эти типы образуют лишь минимальный набор и поддерживаются во всех коммерческих СУБД:
строки символов постоянной длины;
целые числа;
масштабируемые числа. В столбцах этого типа хранятся числа, имеющие дробную часть и которые необходимо вычислять точно, например денежные суммы и проценты;
числа с плавающей запятой.
В стандарт SQL2 вошли ещё несколько типов данных:
строки символов переменной длины;
дата и время;
поток байтов для хранения графических изображений, исполняемого кода и других неструктурированных данных;
строки национальных символов.
В большинстве коммерческих СУБД помимо типов данных, определённых в стандартах, имеется множество дополнительных типов данных.
Константы
В стандарте ANSI /ISO (SQL1) определён формат числовых и строковых констант, или литералов, которые представляют конкретные значения данных.
Целые и десятичные константы, называемые точными числовыми литералами, в операторах SQL представляются в виде обычных десятичных чисел со знаком или без знака:
21 –375 2000 0.0 –4.579 Константы с плавающей запятой, называемые приблизительными числовыми литералами, задаются с помощью символа Е, означающего умножение на 10 в степени:
1.5Е3 1,5*103 –314Е – 2 –3,14 Строковые константы заключаются в апострофы (одинарные кавычки):
‘ИВАНОВ’ ‘Зеленоград, 801-101’ Сам апостроф в составе строковой константы представляется двумя подряд идущими апострофами:
‘ОБ’’ЕКТ’ ОБ’ЕКТ
Календарные даты и время представляются в виде строковых констант. Форматы этих констант в различных СУБД отличаются друг от друга. Кроме того, способы записи времени и даты зависят от страны. В системе Delphi утилита конфигурации BDE позволяет задать необходимый формат этих констант:
‘5/22/1999’ ’10:35:15’
В стандарте SQL1 имеется также константа USER, обозначающая имя пользователя, под которым он подключился к БД.
Выражения
В соответствии со стандартом ANSI/ISO (SQL1) в выражениях можно использовать 4 арифметических операции: сложение (X+Y), вычитание (X-Y), умножение (X*Y) и деление (X/Y).Для формирования сложных выражений можно использовать круглые скобки.
Преобразование целых чисел в масштабируемые десятичные числа и десятичных чисел в числа с плавающей запятой, согласно стандарту, должно происходить автоматически. Таким образом, в одном числовом выражении можно использовать числовые данные разных типов.
Встроенные функции
Встроенные функции не были определены в стандарте SQL1, хотя в большинстве СУБД такие функции реализованы, и наиболее полезные функции вошли в стандарт SQL2. Например, локальный SQL в системе Delphi допускает использование следующих встроенных функций:
CAST (<val> AS <datatype>) – преобразование в другой тип данных
UPPER (<val>) – преобразует буквенные символы строки в прописные
Отсутствующие, неподходящие или неизвестные данные
Поскольку БД является моделью реального мира, то отдельные элементы данных в ней в какой-то конкретный момент времени будут либо отсутствовать, либо не подходить для характеристики объекта, либо иметь неизвестное значение. Такое значение в SQL обозначается величиной NULL. Например, в столбце SUMD таблицы PERSON содержатся величины общих доходов для каждого жителя. Для нового жителя, который только что зарегистрирован, общий доход неизвестен, поэтому для него в качестве значения в столбце SUMD - NULL.