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

Закрепление пройденного материала

Что такое SQL? На что способен SQL? Каким вам видится SQL в сравнении с другими языками программирования, например Java и С?

Упражнения

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

A. Select В. update

С Insert D. delete

2. Какой из перечисленных ниже языков программирования является функциональным?

А. С В. Java

С COBOL D. SQL

  1. Укажите команду, являющуюся частью языка управления данными SQL (DCL).

  2. Укажите команду, являющуюся частью языка манипулирования данными SQL (DML).

  3. Укажите команду, являющуюся частью языка определения данных SQL (DDL).

Ответы

1. А. 2. D.

3. grant или revoke.

4. update, delete или insert. Oracle не считает оператор select частью DML.

5. create, alter, drop.

Выполнение операторов select

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

S/home/oracle> sqlplus scott/tiger

SQL*Plus: Release 8.1.7.0.0 - Production on Fri July 06 18:53:11 2001

Copyright (c) Oracle Corporation 1979, 2000. All rights reserved.

Connected to: Oracle9i Release 9.0.1.0.0

With the partitioning option

JServer Release 9.0.1.0.0 Production

SQL> select * from emp;

EMPNO ENАМЕ JOB MGR HIREDATE SAL COMM DEPTNO

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7693 BLApE MANAGER 7839 Ol-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUNE-81 2450 10

7788 SCOTT ANALYST 7566 19-APR-87 3000 20

7S39 KING PRESIDENT 17-NOV-81 5000 10

7844 TURNER SALESMAN 7698 08-SEP-31 1500 0 30

7376 ADAMS CLERK 7783 23-MAY-87 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7934 MILLER CLERK 7732 23-JAN-82 1300 10

14 rows selected.

Совет В последней части блока кода Oracle сообщает, сколько строк полу­чено из базы данных в ответ на выданную команду SQL. Впоследствии мы будем опускать эту строчку ради экономии места. Можно дать указание SQL*Plus не показывать информацию о счетчике строк, используя для это­го команду SQL *Plus set feedback off. О командах SQL *Plus мы поговорим бо­лее подробно уже в этой главе.

Первая часть, содержащая информацию об авторских правах, является просто пригласительным сообщением SQL*Plus. По вашему желанию пе­чать этой информации можно отменить. Для этого достаточно при вызове SQL*Plus из командной строки операционной системы ввести sqlplus -s и нажать Enter- Расширение -s указывает, что SQL*Plus должен выполняться в режиме молчания. Иногда это бывает полезно для пакетных программ, которые записывают выходные данные в файл для последующего автоматизированного ввода, где нежелательно иметь посторонний "мусор" во входной информации, так как это может привести к ошибкам. Далее в этой главе мы изучим некоторые команды SQL*Plus, которые помогут нам управлять внешним видом выходных данных. Часть строки в блоке кода, выделенная полужирным шрифтом, показывает простой SQL-оператор select. В общих чертах, мы просим Oracle возвратить нам все данные изо всех столбцов таблицы ЕМР. В ответ Oracle возвращает содержимое таблицы ЕМР. Основные компоненты оператора select перечислены ниже. Оба эти компонента должны присутствовать в каждом операторе select, задаваемом для базы данных:

  • Фраза select или column (столбец) В этой фразе содержатся разделенные запятыми имена столбцов или выражения, содержащие данные, которые мы хотим увидеть. В предыдущем запросе был использован специальный символ, называемый групповым символом или маской (*), указывающий, что мы желаем получить данные из всех столбцов таблицы.

  • Фраза from или table (таблица) Эта фраза указывает Oracle, из какой таблицы следует взять данные

Совет Если оператор вводится непосредственно в SQL*Plus, для завершения оператора SQL используется символ ''точка с запятой " (;). В некоторых ситуациях можно использовать слеш (/), как, например, в пакетных, файлах SQL*Ptus, но при этом следует быть внимательным — слеш в конце оператора, уже завершенного точкой с запятой, приведет к повторному выполнению оператора.

Замечание относительно столбцов и типов данных

Таблицы базы данных Oracle состоят из столбцов, в каждом из которых для каждой строки хранится единица информации. Собранные вместе, эти еди­ницы для одной строки образуют хранящуюся в таблице запись. Рассмотрим первую запись предшествующего блока кода для сотрудника с EMPNO(ID) 7369:

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

7369 SMITH CLERK 7902 17-DEC-80 800 20

Каждый столбец идентифицирует какой-нибудь аспект (свойство) этого уникального пользователя. EMPNO обозначает идентификационный номер служащего, ENAME — его имя и т.д. Информация об этом человеке, хранящаяся в каждом столбце, должна соответствовать типу данных, определенному для этого столбца. Например, столбец EMPNO был определен как столбец типа NUMBER (числовой), это означает, что для записей в этом столбце воз­можны только числовые значения определенного размера. В EMPNO нельзя записать никакую текстовую информацию, дату или любую другую нечисловую информацию, потому что это приведет к нарушению указанного для столбца типа данных. Далее в книге мы будем часто говорить о типах данных столбцов, так что стоит потратить немного времени на усвоение этой фундаментальной концепции. Ниже перечисляются разрешенные в Oracle типы данных столбцов, с которыми мы будем работать чаще других:

NUMBER Тип данных, используемый для хранения числовых данных. В столбцах этого типа не допускаются дефисы, текст или любая другая нечисловая информация.

DATE Тип данных, используемый для хранения информации о датах. Во внутреннем представлении Oracle хранит даты как числа, которые могут быть затем конвертированы в любой формат DATE по вашему желанию. По умолчанию информация в формате DATE представляется в формате DD-MON-YY (например, 25-DEC-79).

  • VARCHAR2 Этот тип данных используется для хранения текстовых данных. В столбце типа VARCHAR2 могут храниться любые текстовые символы (включая спецсимволы, числа, буквы, дефисы и тому подобное).

  • CHAR Этот тип данных используется для хранения текстовых данных. В столбце типа CHAR могут храниться любые текстовые символы (включая спецсимволы, числа, буквы, дефисы и тому подобное). В том случае, если записанный текст имеет длину, меньшую указанной в определении переменной, он будет дополнен справа пробелами. Следовательно, фамилия SMITH, если ее поместить в столбец, определенный как CHAR(IO), будет дополнена справа пятью пробелами.

Совет Главное различие между столбцами CHAR и VARCHAR2 состоит в том, что размер памяти, требующейся для хранения текстовых данных в столбце CHAR, всегда превышает размер памяти для хранения той же информации в столбце VARCHAR2. Это связано с тем, что столбцы CHAR имеют фиксированную длину и всегда содержат одинаковое количество байтов, в то время как столбцы VARCHAR2 имеют переменную длину и содержат ровно столько байтов, сколько вы предоставили для записи.

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

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

"Схема" вещей

Взгляните на следующий блок кода:

SQL> select empno, ename, sal

2 from scott.emp;

EMPNO ENAME SAL

7369 SMITH 800

7499 ALLEN 1600

7521 WARD 1250

7556 JONES 2975

7654 MARTIN 1250

7698 BLAKE 2350

7839 KING 5000

7844 TURNER 1500

1816 ADAMS 1100

7900 JAMES ' 950

7902 FORD 3000

7934 MILLER 1300

Вы обратили внимание на то, каким образом во фразе table реализована ссылка на таблицу ЕМР? В нее в виде префикса включено имя пользователя — SCOTT. Разработчики и АБД Oracle говорят о концепции упоминания имени пользователя вместе с именем таблицы, как о схеме. Если вы создаете такой объект базы данных, как таблица, этот объект принадлежит вам. Он является частью вашей схемы. Идентификационные параметры, используемые вами при входе в базу данных перед выполнением сценария demobld.sql, определяют имя схемы, которой будут принадлежать все эти таблицы.

В том случае, если таблица, на которую вы ссылаетесь в запросе, не имеет префикса в виде имени схемы, которой она принадлежит, Oracle будет считать, что таблица принадлежит вашей схеме, и попытается выполнить запрос именно к ней- Если в вашей схеме такая таблица отсутствует, вы обязаны в качестве ее префикса использовать информацию о схеме, отделяя имя владельца схемы от имени таблицы точкой.

Совет Схемой называется логическое группирование объектов базы данных по имени пользователя, владеющего этими объектами.

-