Для работы с базами данных в последнее время появилось множество утилит, которые имеют удобный графический интерфейс. Однако, для получения практического опыта при изучении SQL, желательно на первых порах поработать "ручками". Навыки, полученные при этом, помогают в критических ситуациях, когда необходимо что-то исправить на компьютере у клиента. В состав пакета установки Oracle 9i Lite включена консольная утилита "Oracle Mobile SQL" (msql), специально предназначенная для интерактивного и пакетного выполнения SQL команд.
Данная утилита поддерживает все подмножество SQL команд сервера Oracle 9i Lite, а так же большинство команд стандартной для баз данных корпорации Oracle, утилиты SQL*Plus. Вызов утилиты msql из командной строки операционной системы имеет следующий формат:
msql имя_пользователя/пароль@jdbc_url_строка_подключения
Например:
D:\>msql system/manager@jdbc:polite:tst1_dsn
или
D:\>msql system/manager@jdbc:odbc:tst1_dsn
Для начала выполнения команды доступны следующие способы:
Постановка точки с запятой ';' в конце команды и нажатие клавиши “Enter”;
Постановка точки с запятой ';' или наклонной черты '/' на последней строке командного буфера;
Постановка наклонной черты '/' в ответ на системную подсказку.
Команды языка запросов SQL могут быть размещены на нескольких строчках командного буфера. Кроме команд языка SQL утилита msql поддерживает так же дополнительный набор команд:
CONN[ECT] имя_пользователя/пароль@jdbc_url_строка_подключения– Установление соединения с сервером базы данных под другим именем и паролем.
DISC[ONNECT] – разрыв соединения с базой данных.
SPOOL – включение/выключение режима вывода протокола в спулер (текстовый файл, принтер и т.д.) .
SPOOL – Вывод текущего статуса спулера.
SPOOL <имя_файла> - задание имени файла для спулера.
SPOOL OFF – выключение спулера.
START (или @) - команда запуска командного файла (SQL скрипта). Имеет формат:
START имя_файла
или
@ имя_файла
MSQL так же поддерживает вариант команды вида '@@' для выполнения скриптов из файлов с указанием относительного пути.
DESC[RIBE] [схема.]объект – вывод на экран структуры таблицы, представления или синонима.
SET – команда настройки параметров msql.
SET echo ON/OFF – разрешает или запрещает вывод на экран процесса выполнения скрипта.
SET sqlp[rompt] ON/OFF – устанавливает режим запроса значений переменных привязки или замены.
SET hea[ding] ON/OFF – разрешает или запрещает вывод на экран заголовков колонок.
SET auto[commit] ON/OFF – Если задан режим ON, то Oracle 9i Lite автоматически фиксирует изменения после успешного выполнения команд INSERT, UPDATE или DELETE.
SET TRANSACTION ISOLATION LEVEL [READ COMMITTED][READ WRITE] – устанавливает режим изоляции транзакций.
SET long длина – устанавливает максимальную отображаемую длину колонок типа LONG.
REM или '--' - Оператор комментария.
DEF[INE] имя_переменной = значение_переменной – создание переменной с заданным значением
UNDEF[INE] имя_переменной – удаление переменной
CLS или CLE[AR] – Очищает экран.
CLE[EAR] BUFFER – Очищает внутренний SQL буфер.
PAUSE – ожидание нажатия пользователем клавиши Enter.
LIST – вывод на экран содержимого SQL буфера.
[HO]ST команда – выполнение команды операционной системы.
CLOCK start – команда начала отсчета времени.
CLOCK stop – Вывод на экран времени, прошедшего после выполнения команды CLOCK start.
REPEAT UNTIL- команда циклического выполнения блока команд (поддерживаются вложенные циклы), например:
clock start define N = 0 create table test (c1 number, c2 varchar2 (256)); repeat insert into test values ('%N%', 'abcde'); define N = N + 1 until N = 10000 clock stop;
DIR или LS – Вывод на экран списка имени и “владельца” таблиц.
DIR имя_таблицы - Вывод на экран содержимого таблицы (аналогично запросу 'SELECT * FROM имя_таблицы').
DIR VIEW - Вывод на экран списка имени и “владельца” представлений.
DIR SEQUENCE - Вывод на экран списка имени и “владельца” последовательностей.
EXIT|QUIT – завершение сессии и передача управления операционной системе.
В отличие от SQL*Plus, команда 'exit' в командных файлах рассматривается только в контексте данного файла, например, если командный файл t1.sql вызывает файл t2.sql, включающий команду 'exit', то MSQL не разорвет соединение с БД и не завершит работу после выполнения скрипта t2.sql.