Главная Программы Учебное пособие Практикум Дополнительно
    Введение
  Глава 1
  Глава 2
  Глава 3
  Глава 4
  Глава 5
  Глава 6
  Глава 7
  Глава 8
  Задания
  Литература
  Приложение 1
  Приложение 2
  Приложение 3

Практикум

Глава 3. Среда SQL*Plus

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

  • Описывать структуру таблиц.
  • Редактировать команды SQL в буфере.
  • Сохранять файлы с командами SQL для редактирования.
  • Выполнять сохраненные файлы.
  • Загружать команды SQL из файла в буфер SQL.
Получать оперативные справки.

 

3.1. Запуск SQL*Plus

Способ вызова SQL*Plus зависит от используемой операционной системы. Для запуска в Windows в менеджере программ необходимо дважды щелкнуть по пиктограмме SQL*Plus, после чего ввести имя пользователя, пароль и имя базы данных.

Рисунок 5. Запуск SQL*Plus из Windows

 

Вход в SQL*Plus из командной строки

На своей машине в ответ на приглашение операционной системы введите команду SQL*Plus.

sqlplus [имя_пользователя [/пароль [@база_данных]]]

где:

имя_пользователя

имя пользователя базы данных

пароль

пароль для входа в базу данных. Если ввести его здесь, он будет виден на экране.

база_данных

строка подключения к базе данных.

Примечание: Для сохранения секретности своего пароля не следует вводить его в ответ на приглашение операционной системы. Лучше ввести только имя пользователя, а пароль ввести позже в ответ на приглашение "Password".

После входа в SQL*Plus на экране появляется следующее сообщение:

 

Рисунок 6. Приглашение SQL*Plus к работе

 

Вывод структуры таблицы

Структуру таблицы в SQL*Plus можно получить с помощью команды DESCRIBE.  В результате выполнения команды на экран выводятся имена столбцов, типы данных и сведения об обязательности присутствия данных в столбцах.

DESC[RIBE] имя таблицы

где

Имя таблицы

Имя существующей таблицы, представления или синонима, доступных пользователю.

 

Пример  Вывод информации о структуре таблицы S_DEPT.

 

 

Name Null? Type
ID NOT NULL NUMBER(7)
NAME NOT NULL VARCHAR2 (25)
REGION_ID   NUMBER(7)

где

Null?

Означает, что столбец должен обязательно содержать данные

Type

Показывает тип данных

 

3.2. Команды SQL*Plus

 

Команды редактирования 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, но слова не разбиваются.

Длинную команду можно перенести на следующую строку. Для этого текущую строку следует закончить символом переноса (-).

 

3.3. Определение переменных во время выполнения

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.

При запуске файла из командной строки задайте значение его параметров после имени файла, отделяя их один от другого пробелом.

 

 

3.4. Как использовать команды SQL в среде SQL*Plus

Следуя этим простым правилам и указаниям, можно задавать правильные команды в среде SQL*Plus для обработки на сервере баз данных, которые легко читать и редактировать.

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