
- •Обзор баз данных Oracle
- •Обзор Oracle
- •Теоретические и физические аспекты реляционных баз данных
- •Рсубд против систем плоских файлов: быстрое ознакомление
- •Закрепление пройденного материала
- •Упражнения
- •Реализации рсубд и орсубд Oracle
- •Дисковые компоненты Oracle
- •Процесс сервера и фоновые процессы Oracle
- •Что такое орсубд
- •Закрепление пройденного материала
- •Упражнения
- •Использование и преимущества pl/sql
- •Закрепление пройденного материала
- •Упражнения
- •Написание основных операторов sql
- •Возможности операторов sql select
- •Познакомьтесь: sql* Plus
- •Закрепление пройденного материала
- •Упражнения
- •Выполнение операторов select
- •Задание префиксов столбцам по имени таблицы
- •Арифметические данные и данные из таблиц
- •Старшинство операторов
- •Обработка значений null
- •Замена заголовков столбцов псевдонимами
- •Объединение столбцов с помощью конкатенации
- •Закрепление пройденного материала
- •Упражнения
- •Различия между командами sql и sql*Plus
- •Использование текстового редактора
- •Запись команд sql в сценариях
- •Другие команды sql*Plus, о которых следует знать
- •Закрепление пройденного материала
- •Упражнения
- •Резюме Обзора баз данных Oracle
- •Двухминутное погружение в пройденное
- •Вопросы для самопроверки
- •Вопросы ко всей теме
Познакомьтесь: 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 позволяет определить результат процесса.