Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 1 - ОБЗОР баз данных Oracle.doc
Скачиваний:
95
Добавлен:
15.05.2015
Размер:
920.58 Кб
Скачать

Познакомьтесь: sql* Plus

Многие разработчики, проектировщики, АБД и продвинутые пользователи начинают свое знакомство с Oracle с использования имеющегося в организации приложения Oracle. И первым инструментальным средством для непосредственной выборки данных из базы данных Oracle, с которым они знакомятся, часто становится именно SQL*Plus. Когда пользователи в первый раз запускают SQL*Plus, то в большинстве случаев для того, чтобы начать сеанс с базой данных Oracle, им требуется ввести свои имена пользователей и пароли. Имеются некоторые исключения из этого правила, например, при использовании аутентификации паролей, обеспечиваемой операционной системой. В следующем примере показано, как можно начать сеанс с Oracle из командной строки UNIX, если база данных работает на той UNIX-машине, к которой вы подключены:

$/home/oracle> sqlplus scott/tiger

Совет В среде Windows можно выполнить показанную выше команду из строки приглашения DOS, если вы ж&1аете выполнить версию SQL*Plus для командной строки Или же можно последовательно щелкнуть мышью Start \ Programs \ Oracle ORACLE_HOME\Application Development\ SQL*Plus, чтобы выполнить версию SQL *Plus для графического интерфейса пользователя. Для большинства систем ORACLE_HOME должен быть заменен именем каталога, в котором на этой машине хранится программное обеспечение Oracle, например OraHomel.

Если вы желаете подключиться к базе данных Oracle, которая размещена не на той машине, к которой вы в данный момент подключены, вы можете выполнить команду sqlplus, где после имени пользователя и пароля проставлено имя конкретной базы данных. Вы можете увидеть, как это делается в блоке кода, указанном ниже. Дополнительные символы @orcl, занимающие место в конце команды, сразу после имени пользователя и пароля, указывают операционной системе имя той базы данных Oracle, к которой вы желаете подклю­читься. Вот пример подобной команды;

S/home/oracle> sqlplus scott/tiger@orcl

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

Каждый раз, когда вы входите в Oracle через SQL*Plus, вы создаете сеанс с базой данных. Сеансом называется интерактивная исполнительная среда, ана­логичная таким средам командной строки, как UNIX или DOS, в которых вы вводите команды для выборки данных. На основании введенных вами команд SQL Oracle выполняет ряд действий по получению запрошенных вами данных. Сеанс начинается сразу же после того, как вы вошли в Oracle, и заканчивается, когда вы выходите из системы. Думайте о нем, как о разговоре, для которого требуется язык. Помните: для того чтобы получить требующуюся информацию, вы общаетесь с Oracle на языке структурированных запросов — SQL.

Совет Для подключения к базе данных вам должно быть предоставлено (granted) соответствующее разрешение — просто иметь идентификатор пользователя и пароль для этого недостаточно. Более подробную информацию о разрешения рассмотрим позднее.

SQL является функциональным языком программирования. Это означает, что вы определяете то, что хотите увидеть в терминах желаемого результата. Вы определяете требующийся вам результат, a Oracle определяет, как этого результата добиться. Взгляните еще раз на оператор select, с которым мы уже имели дело ранее.

SQL> SELECT EMPNO, ENAME, SAL FROM EMP

2 WHERE ENAME = 'SMITH';

Первое, что следует знать об операторах SQL: они могут занимать несколько строк. Наш оператор содержит две строки, состоящие из ключевых слов и текстовых строчных выражений. Однако обратите внимание, что мы не разделили (не перенесли) ни одного ключевого слова между строками — в Oracle это не разрешено. И наконец, операторы SQL нечувствительны к регистру. Следовательно, приведенный выше оператор логически эквивалентен следующему оператору;

SQL> select empno, ename, sal from emp

2 where ename = 'SMITH';

Замечание Хотя имена столбцов и таблиц и ключевые слова (например, select, from и where) не являются чувствительными к регистру, текстовые строки типа SMITH, встречающиеся в одиночных кавычках в приведен­ных выше образцах кода, к регистру чувствительны. Это связано с тем, что Oracle хранит текст в точности в том же виде, как вы его ввели; поэтому, если при записи строки в таблицу ЕМР вы ввели фамилию SMITH в верхнем регистре, Oracle запомнит эту строку именно в таком виде. Иногда по этой причине текстовые строки называют литералами — они литерно (т.е. с буквальной точностью) повторяют то, что вы ввели.

Теперь обратите внимание на содержание оператора SQL. Этот оператор просит Oracle предоставить из таблицы ЕМР такие данные, у которых значение определенного столбца, называющегося ENAME, равно SMITH. Нам не важно, как Oracle сделает это, лишь бы он вернул нам из таблицы ЕМР имен­но ту запись, которую мы запросили. Сравните этот подход с подходами других языков программирования, о которых вы слышали или, может быть, испо­льзовали сами, например C++ или COBOL. Эти языки часто называют процедурными или итеративными языками программирования, потому что код, написанный на этих языках, приводит к получению конечного результата в итоге явного определения процесса получения результата. Приведенный ниже блок кода на вымышленном процедурном языке программирования, похожем на С, служит иллюстрацией того, как можно реализовать эту функцию, явно определяя средства ее выполнения:

include <stdio.h>

include <string.h>

include <rdbms.h>

Int *empno;

Char *statement;

Type emp_rec is record (

Int empno;

Char[10] emp_name;

Int sal;)

Void main() (

Login_to)oracle (scott,tiger);

Access_table (emp);

Open (statement, memaddr);

Strcpy (“SELECT EMPNO, ENAME, SAL FROM EMP WHERE

ENAME=’SMITH’”,statement.text);

parse (statement);

execute (statement);

for (I=1, I=statement.results,I+1);

fetch (statement.result[I],emp_rec);

printf (emp_rec);

close (statement.memaddr);

)

Конечно, этот блок кода, который внешне напоминает С, можно откомпилировать только в вашем воображении, а не на какой-нибудь реальной машине, но цель этого примера очевидна — другие языки программирования вынуждают вас определять процесс, в то время как SQL позволяет определить результат процесса.