Цель работы – ознакомиться с программой-интерпретатором командной строки SQL*Plus и основными элементами языка SQL; приобрести навыки со- здания таблиц, индексов, синонимов и последовательностей, простых ограни- чений столбцов, вставки и удаления строк, работы со словарем данных.
Теоретические сведения
ОбщиесведенияобSQL.Алфавит языка SQL включает следующие символы:
буквы: A…Z, a…z;
цифры: 0…9;
3) символы: + - * / ! @ $ # = <>^ ' " ( ) | _ ; , .
Длина идентификаторов SQL может достигать 30 символов, они обяза- тельно начинаются с буквы и могут включать в себя цифры, а также символы доллара ($), решетки (#) и подчеркивания (_). Исключение составляют имена БД, которые ограничены до восьми символов. В некоторых версиях СУБД Ora- cle допускается использование русских букв при соответствующих изменениях настроек сервера БД. Имя любого объекта может дополнительно включать имя схемы: [схема.]имя_объекта. Схема представляет собой набор объектов, при- надлежащих конкретному пользователю, и идентифицируется его именем. Сре- ди объектов схемы могут быть таблицы, представления, индексы, последова- тельности, триггеры, процедуры и функции, пакеты.
Символьные литералы записываются в одинарных кавычках: 'test'. При необходимости присутствия одинарной кавычки внутри символьного литерала она удваивается или используется квалификатор.
Числовые литералы представляют собой целое или действительное зна- чение со знаком или без знака, при этом действительные значения могут быть записаны в формате с десятичной точкой или в экспоненциальной форме.
В SQL имеется специальное неопределенное значение NULL. По смыслу оно не эквивалентно понятию пустая строка для символьных типов и нулевому значению для числовых типов. Если в некотором столбце таблицы данные от- сутствуют, говорят, что его значение NULL. Столбец с данными любого типа может содержать значение NULL, если только он специально не описан с огра- ничением NOT NULL. Однако следует помнить, что в Oracle проверка на срав- нение пустого литерала IS NULL вернет TRUE.
В SQL могут использоваться псевдостолбцы – формируемые системой столбцы, имеющие стандартные имена. Их значения можно только просматри-
вать и использовать, но корректировать (добавлять, удалять, изменять) нельзя. К псевдостолбцам относятся: ROWID, ROWNUM, LEVEL, CURVAL, NEXTVAL.
Псевдостолбец ROWID содержит уникальные для всей базы данных фи- зические адреса строк таблиц. Значение псевдостолбца ROWID определяется при вставке строки в таблицу и не изменяется, пока строка присутствует в таб- лице.
Псевдостолбец ROWNUM определяет порядковый номер строки, вы- бранной из таблицы при выполнении запроса. Он обычно используется для ограничения числа строк, выбираемых из таблицы запросом.
Псевдостолбец LEVEL возвращает уровень вложенности данных, позво- ляя тем самым строить запросы для получения информации об иерархии дан- ных. Используется только в иерархических запросах вместе с предложением CONNECT BY.
Псевдостолбцы CURVAL, NEXTVAL предназначены для работы с теку- щим и следующим значениями последовательности.
Типыданных. К наиболее часто используемым типам данных относятся символьные, числовые, тип дата/время, двоичные и большие объекты.
Символьныетипы данных представлены следующими основными типа- ми: CHAR[длина], VARCHAR2(длина) и LONG.
Тип данных CHAR представляет собой символьные строки фиксиро- ванной длины. Минимальная длина равна 1 байт, максимальная – 2000 байт. Если значение, помещаемое в столбец данного типа, превосходит указанный размер, то выводится сообщение об ошибке; если длина помещаемого значения меньше указанной длины, то значение дополняется пробелами справа.
Тип данных VARCHAR2 представляет собой символьные строки перемен- ной длины. Максимальный размер строки – 4000 байт, минимальный – 1 байт. При помещении текста в столбец большего размера дополнение пробелами не производится.
Строки этих двух символьных типов сравниваются по-разному. Строки типа CHAR – посимвольно с дополнением пробелами строки с меньшей длиной до размера строки с большей длиной. Строки VARCHAR2 – без дополнения пробелами до большей длины. Поэтому для двух одинаковых строк могут быть получены различные результаты при их сравнении. Например, для двух строк 'AB' и 'AB ' (вторая строка содержит пробел, а первая нет) типа CHAR получим, что 'AB' = 'AB'. Для этих же строк типа VARCHAR2 результатом сравнения бу- дет 'AB' < 'AB '.
Тип данных LONG представляет собой символьные данные переменной длины, величина которой может достигать 2 ГБ. На использование переменных этого типа накладывается ряд ограничений и чаще вместо этого типа использу- ется объектный символьный тип CLOB.