ЯзыкSQL (Structured Query Language – язык структурированных за-просов) является непроцедурным языком и ориентирован на операции с данными, представленными в виде логически взаимосвязанных совокуп-ностей таблиц. Формулируя запросы на языкеSQL можно создавать и модифицировать различные объекты базы данных и, оперируя группами строк, вставлять, выбирать, обновлять и удалять данные из таблиц. Кро-ме того, он позволяет управлять доступом к базе данных и ее объектам, и обеспечивать непротиворечивость и целостность данных, хранящихся в базе.
Идентификаторы, длина которых может достигать30 символов, обычно начинаются с буквы и могут включать в себя также цифры, символы$ и#, символ подчеркивания. Исключение составляют имена базы данных(до восьми символов). В не-которых версиях системыORACLE допускается использование русских букв. Имя любого объекта может дополнительно иметь уточнитель– имя схемы: [схема.]имя_объекта. Схема представляет собой набор объектов разной структуры, принадлежащих конкретному пользователю, и иден-тифицируется его именем. Среди объектов схемы могут быть таблицы, представления(виртуальные таблицы), индексы, последовательности, триггеры, процедуры и функции.
Допускается использование однострочных и многострочных коммен-тариев. Однострочные комментарии представляют собой следующую конструкцию:
-- текст комментария
Многострочные комментарии имеют следующий вид:
/* текст комментария*/
Литералы.
Символьные литералы определяются как типCHAR и за-писываются в одинарных кавычках: 'test'. При необходимости присутст-вия одинарной кавычки внутри символьного литерала она удваивается.
Числовые литералы определяются как типNUMBER и представляют собой целое или действительное значения со знаком или без знака, при этом действительные значения могут быть записаны в формате с деся-тичной точкой или в экспоненциальной форме.
Пустые значения.
В языкеSQL имеется специальное предопреде-ленное значениеNULL, которое расценивается как неопределенное зна-чение. Оно не эквивалентно понятию пустая строка для символьных ти-пов и не эквивалентно нулевому значению для числовых типов. Если в некотором столбце таблицы данные отсутствуют, говорят что его значе-ниеNULL. Столбец с данными любого типа может содержать значение NULL, если только он специально не описан какNOT NULL.
Псевдостолбцы. Это формируемые системой столбцы, имеющие стандартные имена. Их значения можно только просматривать и исполь-зовать, но корректировать(добавлять, удалять, изменять) нельзя.
К ним относятся: ROWID, ROWNUM, LEVEL, CURVAL, NEXTVAL.
ПсевдостолбецROWID содержит уникальные для всей базы данных физические адреса строк таблицы. Значение псевдостолбцаROWID оп-ределяется при вставке строки в таблицу и не изменяется, пока строка присутствует в таблице.
ПсевдостолбецROWNUM определяет порядковый номер строки, вы-бранной из таблицы при выполнении запроса. Он обычно используется для ограничения числа строк, выбираемых из таблицы.
ПсевдостолбецLEVEL возвращает уровень вложенности данных, по-зволяя тем самым строить запросы для получения информации об иерар-хии данных.
Для работы с последовательностями генерируемых значений, исполь-зуемых в качестве уникальных ключей, имеются псевдостолбцы:
· имя_последовательности.CURRVAL – возвращает текущее значение из указанной последовательности генерируемых значений;
Предва-рительно последовательность с именем имя_последовательности должна быть создана с помощью оператораCREATЕSEQUENCE.
Типы данных.
К наиболее часто используемым типам данных отно-сятся символьные, числовые, типDATE, двоичные и большие объекты.
Символьные типы данных представлены следующими типами:
CHAR(длина), VARCHAR2(длина) иLONG.
Тип данныхCHAR представляет собой символьные строки фиксиро-ванной длины. Минимальная длина равна1, максимальная– 2000 байт.
Если значение, помещаемое в столбец данного типа, превосходит ука-занный размер, то выводится сообщение об ошибке; если длина поме-щаемого значения меньше указанной длины, то значение дополняется пробелами справа.
Тип данныхVARCHAR2 представляет собой символьные строки пе-ременной длины. Максимальный размер строки4000 байт, минимальный – 1 байт. При помещении текста в столбец большего размера дополнение пробелами не производится.
Строки этих двух типов сравниваются по-разному. Строки типа CHAR – посимвольно с дополнением пробелами строки с меньшей дли-ной до размера строки с большей длиной. СтрокиVARCHAR2 – без до-полнения пробелами до большей длины. Поэтому для двух в принципе одинаковых строк могут быть получены различные результаты при их сравнении.
Пример. Для двух строк'AB' и'AB ' (вторая строка содержит пробел, а первая нет) типаCHAR получим, что'AB' = 'AB '. Для этих же строк типаVARCHAR2 результатом сравнения будет'AB' < 'AB '.
Тип данныхLONG представляет собой символьные данные перемен-ной длины, величина которой может достигать2 Гб. На использование переменных этого типа накладывается ряд ограничений.
Числовые типы представлены типомNUMBER, который позволяет
определить три различных типа данных:
1) NUMBER;
2) NUMBER(p);
3) NUMBER(p, s);
В первом случае определяются действительные числа, диапазон кото-рых от1.0*10 –130 до1.0*10 126–1, мантисса содержит38 знаков. Во втором случае считается, что определяется диапазон целых чисел, где p – коли-чество цифр в числе(от1 до38). В третьем случае описываются числа с фиксированной точкой; p – общее количество цифр(от1 до38), s – мас-штаб(от–84 до127) – определяет количество цифр после запятой. Если s > 0, то число округляется до указанного числа знаков справа от десятич-ной точки, еслиs < 0, то число округляется до указанного числа знаков слева от десятичной точки.
Следует отметить, что языкSQL поддерживает типы данных стандар-таANSI SQL. Если такой тип данных(INTEGER, SMALLINT, DECIMAL, FLOAT иREAL и т. д.) встречаются при определении типа столбца таблицы, то имя типа сохраняется, но сами данные хранятся в виде, определяемом одним из типов базы данныхOracle.
Тип данныхDATE представляет собой специальным образом органи-зованный тип. Он хранит столетие, год, месяц, день, часы, минуты, се-кунды. Для выборки текущего дня и времени используется функция SYSDATE. Стандартный формат даты, автоматически преобразуемый во внутреннее представление, записывается символьной строкой следующе-го вида: 'DD–MON–YY', гдеDD – день месяца, MON – краткое название месяца, аYY – значение года.
Над переменными типаDATE можно выполнить арифметическое действие– вычитание. Результат операции определяет количество дней между этими двумя датами. К дате можно прибавить или отнять число-вую константу, рассматриваемую как количество дней или часть дня.
Двоичные типы данных используются для хранения двоичных не-структурированных данных(звуковые файлы, файлы изображений и т.д.), обработка которых не поддерживается системойORACLE. К ним от-носятся типыRAW(длина) иLONGRAW. Максимальный размер строки типаRAW 2000 байт, минимальный– 1 байт. Длина переменных типа LONGRAW может достигать2 Гб.
К большим объектам(LOB-объектам) относятся CLOB, BLOB и BFILE. Они предназначены для хранения неструктурированных данных большого объема– до4 Гб. ТипCLOB хранит данные символьного типа, типыBLOB иBFILE используют для хранения двоичных данных.
Столбцы типаLOB содержат не сами данные, а указатели на их местопо-ложение.