- •Введение в язык sql92.
- •О нотации грамматики языка sql.
- •Оператор select.
- •Выбор строк (фраза where).
- •Сортировка результата (фраза order by).
- •Стандартные обобщающие функции языка sql.
- •Группировка результата (фраза group by).
- •Примеры простой группировки.
- •Подзапросы и другие операции.
- •Многотабличные запросы.
- •Операции union, intersect, except.
- •Операции обновления базы данных.
- •Insert into table_name [ ( colomn_list ) ]
- •Values ( data_value_list )
- •Определение данных в языке sql.
- •Типы данных языка isq sql92.
- •Integer (можно сократить до int)
- •Скалярные операторы языка sql.
- •Создание баз данных.
- •Представления (виды).
Определение данных в языке sql.
“Речь истины - проста” ПЛАТОН 427-348 гг. до н.э.
Язык определения данных (DDL) – часть язык SQL, Он позволяет создавать и уничтожать различные объекты базы данных: схемы, домены, таблицы, представления и индексы. Кроме этого стандартISOдопускает создание утверждений, наборов символов, сопостовлений и толкований. Мы их оставим на самостоятельное изучение заинтересованным лицам.
Администраторам баз данных доступны и иные команды, предназначенные для определения деталей хранения и использования данных, но они слишком завися от конкретных СУБД и нами не будут рассматриваться. Прежде всего целесообразно ознакомиться с синтаксисом идентификаторов в языке SQLи типами данных, используемых для описания значений в столбцах таблиц.
Идентификаторы предназначены для обозначения объектов в языке SQL, т.е имен таблиц, представлений и столбцов. Символы в идентификаторах задаются на наборе символов, который по умолчанию включает прописные и строчные буквы латинского алфавита (A – Z a – z),цифры ( 0 – 9 ) и символ подчеркивания ( _ ). Допускается использование дополнительного набора символов. Кроме указанных, на формат идентификатора накладываются следующие ограничения.
Идентификатор может иметь длину не более 128 символов (диалекты имеют более жесткие ограничения).
Идентификатор должен начинаться с буквы.
Идентификатор не может содержать пробела.
В язык ISO существуют шесть скалярных типов данных, определяемых стандартомISO. Иногда, в целях упрощения, данные типовcharacter иbit объединяются под названием «строковые типы данных», данные типовexact numeric и approximate numeric – под понятием «числовые типы данных».
Типы данных языка isq sql92.
“Хорошее начало – половина дела” ПЛАТОН 427-348 гг. до н.э.
Символьные типы.
CHARACTER [VARYING] [(length)]
Возможны сокращения CHARACTER доCHAR, аCHARACTER VARYING до VARCHAR. Параметрlengthиспользуется для указания максимального количества символов (по умолчанию – 1). Символьгная строка может бить с постоянной или переменной длиной. В первом случае значение доплняется пробелами, а во втором – сохраняться только введённые символы.
ПРИМЕРЫ ninCHAR(9)
address VARCHAR(30)
Битовые типы.
BIT [VARYING] [(length)]
Синтаксис битовых типов данных аналогичен символьным.
ПРИМЕРЫ codeBIT(4)
bit_string VARYING BIT(300)
Типы точных чисел.
NUMERIC [ precision [, scale ] ]
DECIMAL [ precision [, scale ] ]
Integer (можно сократить до int)
SMALLINT
Синтаксис точных числовых типов данных используется для определения чисел, имеющих точное представление в компьютере (для работы без потери точности при хранении). Данные точного числа определяются значностью (precision) и длиной дробной части (scale). По умолчанию scale = 0 (а precision зависит от реализации). Особой разновидностью точных чисел являются целые числа. Для небольших целых используется тип SMALLINT (значение не более 32767).
ПРИМЕРЫ.
nom_roomSMALLINT
salary DECIMAL(8,2)
Округленные числа.
FLOAT [ precision ]
REAL
DOUBLE PRECISION
Используются для описания чисел с плавающей точкой в научной нотации, т.е. 10Е3, 23.456Е-12 и т.д. По определению они округляются на конечной разрядной сетке компьютера. Параметр precision задает разрядность мантиссы, в остальном типы зависят от реализации.
Дата и время.
DATE
TIME [ time_precision ] [WITH TIME ZONE]
TIMESTAMP [ time_precision ] [WITH TIME ZONE]
Стандарт ISO разделяет “дату/время” на подтипы: YEAR - год, MONTH - месяц, DAY - день, HOUR - час, MINUTE - минута, SECOND - секунда, TIMEZONE_HOUR - зональный час и TIMEZONE_MINUTE - зональная минута. Два последних определяют зональный сдвиг времени по отношению к универсальному (Гринвичскому времени). Тип данных DATE поддерживает поляYEAR, MONTH, DAY, а типTIME – HOUR, MINUTE, SECOND. ТипTIMESTAMP используется для хранения даты и момента времени. Параметр time_precision определяет точность храения в полеSECOND.
Данные типа INTERVAL.
Существует два типа с интервальным типом: интервалы YEAR-MONTH и интервалы DAY_TIME. В первом случае включаются только параYEAR и/илиMONTH. Данные второго типа могут состоять из произвольной последовательности полейDAY, HOUR, MINUTE, SECOND. Данные интервального типа определяются следующим образом.
INTERVAL { { start_field TO end_field } single_datetime_field }
start_field = YEAR | MONTH | DAY |HOUR | MINUTE
[ (interval leading field precision) ]
end_field = YEAR | MONTH | DAY |HOUR | MINUTE
[ ( fractional seconds precision ) ]
single_datetime_field = start_field | SECOND
[ (interval leading field precision )
[ , ( fractional seconds precision ) ] ]
Во всех случаях для параметра start_fieldнеобходимо указать размерность первого поля, (interval leading field precision) по умолчанию принимаемая равной двум.
ПРИМЕРЫ
plan_intervalINTERVAL YEAR(2) NO MOUNTH
work_intervalINTERVAL HOUR NO SECOND(4)
В первом случае описывается интервал времени в диапазоне от 0 года и 0-месяца до 99 года и 11 месяца. Во втором случае интервал может помещаться от 0 часов, 0 минут, 0 секунд до 99 часов, 59 минут, 59,9999 сукунд.