SQL*Plus – это среда,
разработанная фирмой Oracle, для реализации простого
командного интерфейса доступа к СУБД и выполнения команд SQL
и PL/SQL с дополнительными
возможностями. Использовать команды SQL*Plus
можно при написании даже самых основных команд SQL. В
этом разделе показано, как с помощью команд SQL*Plus
делать следующее:
- Описывать структуру таблиц.
- Редактировать команды SQL в буфере.
- Сохранять файлы с командами SQL для
редактирования.
- Выполнять сохраненные файлы.
- Загружать команды SQL из файла в буфер
SQL.
Получать оперативные справки.
Способ вызова SQL*Plus
зависит от используемой операционной системы. Для запуска в Windows в менеджере
программ необходимо дважды щелкнуть по пиктограмме SQL*Plus, после чего ввести
имя пользователя, пароль и имя базы данных.

Рисунок 5. Запуск SQL*Plus из
Windows
Вход в SQL*Plus из
командной строки
На своей машине в ответ на приглашение операционной системы введите команду
SQL*Plus.
sqlplus [имя_пользователя [/пароль
[@база_данных]]]
|
где:
имя_пользователя
|
имя пользователя базы данных
|
пароль
|
пароль для входа в базу данных. Если ввести его здесь, он будет
виден на экране.
|
база_данных
|
строка подключения к базе данных.
|
Примечание: Для сохранения секретности своего пароля не следует
вводить его в ответ на приглашение операционной системы. Лучше ввести только имя
пользователя, а пароль ввести позже в ответ на приглашение "Password".
После входа в SQL*Plus на
экране появляется следующее сообщение:

Рисунок 6. Приглашение
SQL*Plus к
работе
Вывод структуры таблицы
Структуру таблицы в SQL*Plus
можно получить с помощью команды DESCRIBE.
В результате выполнения команды на экран выводятся имена столбцов, типы данных и
сведения об обязательности присутствия данных в столбцах.
где
Имя таблицы
|
Имя существующей таблицы, представления или синонима, доступных
пользователю.
|
Пример Вывод информации о структуре таблицы
S_DEPT.

Name |
Null? |
Type |
ID |
NOT NULL |
NUMBER(7) |
NAME |
NOT NULL |
VARCHAR2 (25) |
REGION_ID |
|
NUMBER(7) |
где
Null?
|
Означает, что столбец должен обязательно содержать данные
|
Type
|
Показывает тип данных
|
Команды редактирования SQL*Plus
При вводе команды SQL она записывается в область
памяти, называемую буфером SQL, и остается там до
ввода новой команды. Команды SQL*Plus
вводятся по одной строке и не хранятся в буфере SQL.
Примечание: Если нажать клавишу [RETURN] до
завершения команды, SQL*Plus
выдает приглашение в виде номера строки. Ввод в буфер
SQL прекращается вводом одного из символов окончания (точки с запятой или
дробной черты) или двукратным нажатием на [RETURN].
После этого на экран выводится приглашение SQL.
Таблица 15. Команды редактирования SQL*Plus:
Команда |
Описание |
A[PPEND]
текст |
Добавить текст в конец текущей строки. |
C[HANGE]
/старый/новый/ |
Заменить в текущей строке
старый текст на
новый. |
QHANGE]
/текст/ |
Удалить текст
из текущей строки. |
CL[EAR]
BUFF[ER] |
Удалить все строки из буфера SQL. |
DEL |
Удалить текущую строку. |
DEL n |
Удалить строку, заданную параметром n. |
DEL m n |
Удалить строки от m до п. |
I[NPUT] |
Вставить неопределенное количество строк. |
I[NPUT]
текст |
Вставить строку, состоящую из
текста. |
L[IST] |
Вывести список всех строк в буфере SQL. |
L[IST]
n |
Вывести одну строку (с номером
п). |
L[IST]
т п |
Вывести диапазон строк от
п до
т. |
R[UN] |
Вывести и выполнить команду из буфера SQL. |
N |
Указать строку, которая должна стать
текущей. |
n текст |
Заменить строку п
текстом. |
0 текст |
Вставить строку перед строкой 1. |
Для сервера Oracle команды SQL*Plus
являются вспомогательным средством. Они используются для управления
средой, форматирования результатов запросов и работы с файлами.
Команды работы с файлами
Таблица 16. Команды работы с файлами
Команда |
Описание |
SAV[E]
имя_фаила [.ext]
[REP[LACE]|APP[END]] |
Сохраняет в файле текущее содержимое буфера
SQL в файле. APPEND
используется для добавления информации в существующий файл.
REPLACE перезаписывает
существующий файл. По умолчанию файл имеет расширение
.sql. |
GET
имя_файла |
Вызывает содержимое ранее сохраненного
файла в буфер SQL. По умолчанию файл имеет расширение .sql. |
START
имя_фаила |
Запускает выполнение ранее сохраненного
файла команд. |
@ имя_файла |
Запускает выполнение файла команд (как и
команда START). |
EDIT |
ВВызывает редактор и сохраняет содержимое
буфера в файле afiedt.buf. |
ED[IT] [имя_файла[.sql]] |
Вызывает редактор для редактирования
сохраненного файла. |
SPO[OL] |
Записывает результаты запроса в
файл. OFF закрывает
буферный файл (спул-файл). OUT
закрывает буферный файл и посылает результаты из файла на системный
принтер. |
|
[имя_файла[.sql]
| ОFF/span> | OUT] |
EXIT |
Выход из SQL*Plus. |
Примечание: Для замены текстового редактора следует изменить значение
переменной _EDITOR среды SQL*Plus
с помощью команды DEFINE.
В ответ на приглашение SQL можно ввести только одну
команду SQL*Plus.
Команда COLUMN
Управление столбцом отчета осуществляется с помощью команды
COLUMN. Можно, например, изменить заголовок, ширину и
формат.
Синтаксис:
COL[UMN] [(column\alias}
[option ...]]
|
Таблица 16. Опции команды COLUMN.
Опция |
Описание |
CLE[AR] |
Отменяет любые форматы столбцов. |
FOR[MAT]
format |
Меняет отображение данных столбца. |
HEA[DING]
text |
Задает заголовок столбца. Вертикальная
линия (|) задает переход на новую строку в заголовке, если вы не
используете выравнивание. |
JUS[TIFY]
{align} |
Выравнивает заголовок столбца (не данные!)
слева, справа или по центру. |
NOPRI[NT] |
Прячет столбец. |
NUL[L]
text |
Задает text,
который должен отображаться в случае неопределенных значений. |
PRI[NT] |
Показывает столбец. |
TRU[NCATED] |
Усекает строку в конце первой строки
дисплея. |
WRA[PPED] |
Переходит на следующую строку в конце
строки. |
WOR[DWRAPPED] |
То же, что и WRAPPED, но слова не
разбиваются. |
Длинную команду можно перенести на следующую строку. Для этого текущую строку
следует закончить символом переноса (-).
SQL*Plus позволяет
создавать интерактивные отчеты, когда пользователя приглашают ввести значения,
ограничивающие объем выходных данных. Для создания отчета в командный файл
или в отдельные команды SQL включаются так называемые
переменные подстановки (подстановочные переменные). Иными словами,
переменная выступает в роли контейнера, в котором временно хранятся значения.
Возможные цели использования переменных:
- Определение интервалов дат.
- Выборка данных по конкретному пользователю.
- Выборка данных по конкретному отделу.
- Обмен переменными между командами SQL.
- Динамическое изменение верхних и нижних колонтитулов страниц.
Переменные подстановки с одним амперсандом (&)
Пользователь может динамически ограничивать выбираемые строки с помощью
переменной подстановки, которой предшествует один амперсанд ‘&’. Значение
такой переменной запрашивается при каждом выполнении команды. Команда
SET VERIFY задает вывод текста команды до и после
того, как SQL*Plus замещает
переменные подстановки значениями.
Пример: Создание команды, которая во время выполнения
запрашивает номер отдела у пользователя. Отчет должен содержать учетный
номер, фамилию и размер заработной платы каждого служащего.

Подстановка текстовых переменных и дат
Текстовые строки и даты должны быть заключены в апострофы. Для
избежания возможных ошибок следует заранее заключить амперсанд и имя переменной
в апострофы (например, ‘&job_title’)
или вводить в них значение переменной при выполнении запроса.
Пример: Вывод номера, фамилии и размера заработной платы
служащих, находящихся на конкретной должности. Должность запрашивается во время
выполнения.

С помощью переменных подстановки можно задать:
- Условие WHERE.
- Предложение ORDER BY.
- Выражение для столбца.
- Имя таблицы.
- Целую команду SELECT.
Пример: Вывод номера заказа, любого другого столбца и
любого условия заказа. Попробуйте разные условия и имена столбцов и сравните
результаты.

Определение переменных пользователя
Задать переменные можно до выполнения команды SELECT.
Для определения переменных используются две команды SQL*Plus:
- DEFINE – для создания переменной типа
CHAR;
- ACCEPT – для чтения введенного значения
и сохранения его в переменной.
SQL*Plus использует
команду DEFINE для подстановки переменной с двойным
амперсандом (&&). Если в команде DEFINE
требуется задать строку с символом пробела, эта строка должна быть заключена в
апострофы.
Таблица 16. Команды SQL*Plus
работы с переменными.
Команда |
Описание |
DEFINE
переменная = значение |
Создание переменной типа CHAR и присвоение
ей значения |
DEFINE
переменная |
Вывод переменной, ее значения и типа
данных. |
DEFINE |
Вывод всех переменных пользователя, их
значений и типа данных. |
ACCEPT
(синтаксис см. ниже) |
Чтение строки, введенной пользователем, и
сохранение ее в переменной. |
Команда ACCEPT
- Создает приглашение к вводу данных, удобное для пользователя.
- Явно задает переменные типа NUMBER и DATE.
- Предотвращает отображение данных, введенных пользователем, в целях
секретности.
- Переменная сохраняет значение до ее очистки командой UNDEFINE или до
окончания сеанса работы в SQL*Plus.
Сокращенный синтаксис:
ACCEPT переменная
[тип_данных] [FORMAT] [PROMPT
текст] [HIDE]
|
где
переменная
|
Имя переменной, где хранится значение. Если переменная не
существует, SQL*Plus
ее создает.
|
тип_данных
|
NUMBER, CHAR
или DATE. Максимальная длина для типа
CHAR – 240 байтов. DATE
сверяется с моделью формата.
|
FOR[MAT]
|
Модель формата – например, А10 или 9.999.
|
PROMPT текст
|
текст, который выдается прежде, чем пользователь может
ввести значение.
|
HIDE
|
Предотвращает отображение данных, введенных пользователем –
например, пароля.
|
Если для определения переменной используется команда
ACCEPT, амперсанд перед параметром подстановки не ставится.
Пример.

Пример. Вывод номера и названия региона для заданного
отдела. Создайте командный файл 17_prompt и
используйте команду ACCEPT для настройки приглашения к
вводу данных.


Команда SET ECHO
От переменной ECHO зависит, печатают ли команды
START и @ каждую команду командного файла по мере ее
выполнения. В случае ECHO ON команда
печатается, а в случае ECHO OFF – нет.
Команда UNDEFINE
Переменная сохраняет свое значение до ее очистки командой
UNDEFINE или до завершения сеанса работы в
SQL*Plus. Проверить
неопределенные переменные можно с помощью команды DEFINE.
Передача значений переменных в командный файл
Для того, чтобы значения переменных передать в качестве параметров в
командный файл, необходимо следовать следующим правилам. В командном файле
используйте ссылку типа “&номер“ (0 - 9) в любой из команд языка
SQL.
При запуске файла из командной строки задайте значение его параметров после
имени файла, отделяя их один от другого пробелом.

Следуя этим простым правилам и указаниям, можно задавать правильные команды в
среде SQL*Plus для обработки
на сервере баз данных, которые легко читать и редактировать.
- Вводить команды SQL можно в виде одной или нескольких строк.
- Для удобства чтения и редактирования каждое предложение обычно вводится
на отдельной строке.
- Для удобства чтения команды можно использовать табуляцию и отступы.
- Сокращение и перенос слов в командах запрещаются.
- Ключевые слова и команды обычно вводятся символами верхнего регистра;
остальные слова (например, имена таблиц и столбцов) – символами нижнего
регистра.
- При отсутствии особых указаний символы верхнего и нижнего регистров в
командах SQL не различаются.
- Команда SQL вводится на той же строке, что и приглашение
SQL, a последующие строки нумеруются. Эти
строки образуют буфер SQL.
- В каждый момент времени активной в буфере может быть только одна команда
и выполнить ее можно несколькими способами:
- Поставить точку с запятой (;) в конце последнего предложения.
- Поставить точку с запятой или дробную черту в последней строке
буфера.
- Ввести дробную черту в ответ на приглашение SQL.
- Задать команду RUN среды SQL*Plus
в ответ на приглашение SQL.
|