|
EW1 ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ W0
W1 ГЛАВА 6 W0
W1 ФРАЗЫ ОПЕРАТОРА SELECT W0
Данная глава расширяет сведения об операторе SELECT, данные
в Главе 5 данного руководства. Здесь детально описывается
каждая фраза оператора SELECT, а также показывается вспомо-
гательное использование данного оператора.
В главу входят следующие разделы:
* фраза FROM
* фраза WHERE
* фразы GROUP BY и HAVING
* фраза ORDER BY
* фраза CONNECT BY
* простые объединения
* внешние объединения
* запросы
* коррелированные запросы
* распределенные запросы
Справочное руководство по языку SQL 6-2
-- 252 --
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Фраза FROM F
Назначение Специфицирует таблицу (или таблицы) для операто-
ров SELECT и DELETE.
Предпосылки Нет.
Синтаксис В операторах DELETE:
DELETE [EFROMF] [user.]table [@databaselink] [alias]
[WHERE ...]
...
В операторах SELECT:
SELECT select_list
EFROMF [user.]table [alias] [@databaselink] [,...]
WHERE ...
...
Ключевые user владелец таблицы или обзора.
слова и table имя таблицы или обзора.
параметры alias временное имя, назначаемое таб-
лице или столбцу в качестве али-
аса, позволяющее ссылаться в
коррелированном запросе ссылать-
ся на ту же таблицу. Кроме того,
алиас позволяет Вам применять
внутри запроса сокращение имени
таблицы.
databaselink действительная межбазовая связь,
ссылающаяся на удаленную базу
данных. Более подробно см. опе-
ратор CREATE DATABASE LINK в
Главе 5 данного руководства.
Замечания FROM - обязательная фраза оператора SELECT и нео-
по исполь- бязательная - оператора DELETE. Она идентифициру-
зованию ет таблицу, из которой должны удаляться строки
или таблицу(ы), из которых выбираются строки.
Оператор REVOKE также имеет фразу FROM, но в нем
она выполняет другие функции. К этому оператору
данное описание не относится.
Если таблица принадлежит другому пользователю,
имени таблицы должно предшествовать имя соответс-
твующего пользователя. Имя пользователя отделяет-
ся от имени таблицы точкой (.).
Фразы оператора SELECT 6-3
-- 253 --
Примеры Чтобы удалить из таблицы EMP строки, содержащие
50 в столбце DEPTNO, наберите:
DELETE FROM EMP
WHERE DEPTNO = 50
Чтобы выбрать все строки из таблицы EMP, содержа-
щие в столбце DEPTNO значение 50, введите:
SELECT * FROM EMP
WHERE DEPTNO + 40
Чтобы выбрать строки, содержащие значение 40 в
столбце DEPTNO из двух таблиц - EMP и EMP2, вы-
полните следующую команду:
SELECT *
FROM EMP, EMP2
WHERE EMP.EMPNO = EMP2.EMPNO
AND DEPTNO = 40
Если таблица EMP2 принадлежит другому пользовате-
лю - BEN, введите:
SELECT *
FROM EMP, BEN.EMP2
WHERE EMP.EMPNO = EMP2.EMPNO
AND DEPTNO = 40
Связанные Операторы SELECT и DELETE в Главе 5 данного руко-
темы водства.
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Фразы GROUP BY и HAVING F
Назначение Работа с группой строк, возвращаемых запросом и
ограничение (с помощью фразы HAVING), какие груп-
пы затрагиваются.
Предпосылки Нет.
Синтаксис SELECTexpr [,expr]...
FROM table [,table]...
EGROUP BYF expr [,expr] ...
EHAVINGF condition
...
Ключевые expr см. описание синтаксиса expr в
слова и Главе 4 данного руководства.
параметры table таблица или обзор, к которым Вы
имеете доступ.
condition см. описание синтаксиса condition
-- 254 --
в Главе 4 данного руководства.
Справочное руководство по языку SQL 6-4
Замечания Фраза GROUP BY используется для того, чтобы опе-
по исполь- ратор SELECT выдавал одну объединенную строку для
зованию каждой группы выбранных строк. Каждая группа фор-
мируется на основе одинаковых значений для столб-
цов или выражений.
Каждое выражение expr в SELECT должно быть одним
из следующих:
* быть константой или функцией без параметров
(например SYSDATE)
* содержать группирующую функцию вроде SUM, COUNT
или MAX
* в точности совпадать с выражением expr в фразе
GROUP BY
Выражения GROUP BY могут ссылаться на любой стол-
бец из фразы FROM независимо от того, упоминаются
они или нет в списке SELECT.
Специфицируйте фразы GROUP BY и HAVING после фраз
WHERE и CONNECT BY...START WITH. Если присутству-
ют обе фразы (GROUP BY и HAVING), они могут зада-
ваться в любом порядке.
Для общего количества байтов, содержащихся во
всех выражениях фразы GROUP BY существует систе-
мозависимое ограничение.
Фраза HAVING
Эта фраза используется для указания, какие группы
из GROUP BY будут включаться в окончательный ре-
зультат. ORACLE обрабатывает фразы WHERE, GROUP
BY и HAVING следующим образом:
1. Удаляет все строки, не удовлетворяющие усло-
вию WHERE.
2. Вычисляет и формирует группы как указано во
фразе GROUP BY.
3. Удаляет все группы, не удовлетворяющие ус-
ловию HAVING.
Примеры Чтобы выдать минимальное и максимальное жалование
для каждого отдела таблицы EMP введите:
SELECT DEPTNO, MIN(SAL), MAX(SAL)
FROM EMP
GROUP BY DEPTNO
DEPTNO MIN(SAL) MAX(SAL)
--------- ------------- ------------
10 1300 5000
-- 255 --
20 800 3000
30 950 2850
Фразы оператора SELECT 6-5
Чтобы сделать такой же запрос применительно к
клеркам, введите:
SELECT DEPTNO, MIN(SAL), MAX(SAL)
FROM EMP
WHERE JOB = 'CLERK'
GROUP BY DEPTNO
DEPTNO MIN(SAL) MAX(SAL)
--------- ------------- ------------
10 1300 1300
20 800 1100
30 950 950
Чтобы заставить запрос выдать только те отделы,
чье минимальное жалование меньше $1000:
SELECT DEPTNO, MIN(SAL), MAX(SAL)
FROM EMP
WHERE JOB = 'CLERK'
GROUP BY DEPTNO
HAVING MIN(SAL) < 1000
DEPTNO MIN(SAL) MAX(SAL)
--------- ------------- ------------
20 800 1100
30 950 950
Связанные Раздел "Групповые функции" Главы 4 и оператор
темы SELECT в Главе 5 данного руководства.
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Фраза WHERE F
Назначение Ограничить строки, возвращаемые из таблице по
оператору SELECT или строки, обрабатываемые опе-
раторами DELETE и UPDATE.
Предпосылки Нет.
Синтаксис DELETE ...
EWHEREF condition
SELECT ...
EWHEREF condition
-- 256 --
UPDATE ...
EWHEREF condition
Ключевые condition см. описание синтаксиса condition
слова и в Главе 4 данного руководства.
параметры
Справочное руководство по языку SQL 6-6
-- 257 --
Замечания Фраза WHERE предназначена для специфицирования
по исполь- условия condition. Оператор, содержащий эту фразу
зованию будет работать только со строками, удовлетворяю-
щими условию.
Condition определяется как логическое выражение.
Например:
DEPTNO = 30
это логическое выражение, которое истинно (true)
для значений DEPTNO, равных 30 и ложно (false) во
всех остальных случаях.
Операции AND и OR могут использоваться для сос-
тавных выражений. Например, выражение:
DEPTNO = 30 AND JOB = 'SALESMAN'
истинно только если обе его компоненты имеют зна-
чение TRUE.
Операция NOT используется для смены значения вы-
ражения на противоположное. Например, выражение:
NOT (DEPTNO = 30 AND JOB = 'SALESMAN')
истинно, если DEPTNO = 30 AND JOB = 'SALESMAN' -
ложно.
Примеры Следующий оператор выбирает все строки, в которых
DEPTNO не равен 30:
SELECT *
FROM EMP
WHERE DEPTNO !=30
А следующий - изменяет все строки, в которых COMM
имеет значение null:
UPDATE EMP
SET SAL = (1.1*SAL)
WHERE COMM IS NULL
И, наконец, последний оператор использует корре-
лированный запрос для удаления всех отделов, ко-
торые не содержат служащих:
DELETE FROM DEPT A
WHERE NOT EXISTS
(SELECT 'TRUE'
FROM EMP B
WHERE A.DEPTNO = B.DEPTNO)
Фразы оператора SELECT 6-7
-- 258 --
Для каждой строки таблицы DEPT ORACLE выполняет
следующую последовательность шагов:
1. Определяет значение DEPTNO для строки.
2. Использует это значение для определения, су-
ществует ли такой DEPTNO в таблице EMP.
3. Если не существует, строка удаляется. Если
DEPTNO существует для какой-нибудь из строк
таблицы EMP, не удаляет строку.
Заметьте, что эта команда DELETE использует кор-
релированный запрос, так как запрос ссылается на
ту же таблицу. 'TRUE' - просто константа, поло-
женная по синтаксису и может быть заменена любой
другой константой или столбцом таблицы EMP. Опе-
рация NOT EXISTS специфицирует, что строка будет
удалена, если запрос не вернет ни одной строки.
Связанные Описание синтаксиса запроса (query) ниже по текс-
темы ту. Раздел "Операции" из Главы 4 и операторы
DELETE, SELECT, UPDATE из Главы 5 данного руко-
водства.
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Фраза WHERE (Встроенный SQL) F
Назначение Ограничение строк, возвращаемых операторами
SELECT, DELETE или UPDATE.
Предпосылки Нет.
Синтаксис SELECT ...
FROM ...
EWHEREF [condition | CURRENT OF cursor_name]
Ключевые condition логическое выражение, которое
слова и может ссылаться на host - пере-
параметры менные или массивы (фраза WHERE
оператора SELECT не может содер-
жать массивов host - переменных).
Условие поиска может включать в
себя запрос. См. ниже описание
синтаксиса query.
CURRENT OF может использоваться только с
DELETE или UPDATE; ссылается на
строку, обработанную последней
оператором FETCH в указанном
курсоре.
Справочное руководство по языку SQL 6-8
-- 259 --
Замечания Если опущена фраза WHERE, обрабатываются все
по исполь- строки таблицы или обзора. Ссылки на host - пере-
зованию менные могут быть использованы везде, где допус-
тимо использование констант.
Если фраза WHERE отсутствует в операторах DELETE
или UPDATE, пятый элемент sqlwarn (SQLCA) уста-
навливается в 'W' (предупреждение) и выполняются
действия по EXEC SQL WHENEVER SQLWARNING.
Если все host - переменные во фразе WHERE являют-
ся массивами, результат идентичен том, как будто
оператор выполнился по разу для каждой компоненты
массива.
Если какая-либо host - переменная во фразе WHERE
является массивом, массивами должны быть и все
остальные host - переменные.
Если массивы различаются размерностью, будет вы-
бираться минимальный (или значение, указанное во
фразе FOR) для определения числа повторений опе-
ратора, содержащего фразу WHERE.
Фраза WHERE оператора SELECT не может содержать
массивов host - переменных.
Фраза CURRENT OF
Если фраза CURRENT OF используется в операторе
UPDATE, курсор предварительно должен быть опреде-
лен с фразой FOR UPDATE а операторе SELECT. Кур-
сор должен быть открыт и позиционирован на стро-
ку. Если курсор не был открыт или не был выполнен
FETCH, фраза CURRENT OF завершится с ошибкой и
вернется нулевое число строк.
Пример Для замены в текущей строке жалования на 2000
введите:
UPDATE EMP
SET SAL = 2000
WHERE CURRENT OF CURSOR EMP_CURSOR
Связанные Фраза FOR; операторы DECLARE CURSOR, FETCH,
темы EXECUTE, SELECT из Главы 5 данного руководства.
Фразы оператора SELECT 6-9
-- 260 --
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Фразы CONNECT BY и START WITH F
Назначение Выдача данных на основании их иерархической взаи-
мосвязи.
Предпосылки Нет.
Синтаксис SELECT ...
FROM ...
...
[ ECONNECT BYF {PRIOR expr operator expr
| expr operator PRIOR expr}
[ ESTART WITHF condition ] ]
Ключевые PRIOR специфицирует направление обхода
слова и дерева. ORACLE берет вершину с
параметры PRIOR прежде вершины без этой
фразы.
expr См. описание синтаксиса "expr" и
"condition" в разделе "Опера-
operation ции" Главы 4 данного руководства.
START WITH
condition
Замечания Фраза CONNECT BY используется для запросов по ие-
по исполь- рархическим связям. Она специфицирует строки, вы-
зованию бираемые в иерархическом порядке а также
определяет отношение, используемое для объедине-
ния строк в иерархию.
PRIOR
Фраза PRIOR определяет порядок выборки (сперва
родительскую или дочернюю вершину).
Фраза PRIOR должна использоваться перед одним из
выражений фразы CONNECT BY. Часть выражения, в
которой находится PRIOR, определяет родителя в
каждом отношении "родитель-потомок"; другая часть
выражения определяет потомка. Например, CONNECT
BY PRIOR EMPNO=MGR означает, что CONNECT BY будет
возвращать менеджеров (определяемых в EMPNO) пе-
ред служащими (определяемых в MGR). CONNECT BY
EMPNO=PRIOR MGR означает, что теперь служащие бу-
дут выдаваться перед менеджерами.
Количество уровней фразы CONNECT BY ограничивает-
ся доступной пользователю памятью.
-- 261 --
Фразу CONNECT BY нельзя использовать вместе с
подзапросами и объединениями.
Справочное руководство по языку SQL 6-10
START WITH
Фраза START WITH идентифицирует строки (или стро-
ку), которые будут использоваться в качестве кор-
ня дерева, назначая условие, которому они должны
удовлетворять. Отсутствие этой фразы означает
начало со всех столбцов, удовлетворяющих условию
фразы WHERE.
Во фразе START WITH допустимы подзапросы.
Если в операторе SELECT используется фраза
CONNECT BY, в нем же можно воспользоваться псев-
достолбцом LEVEL, который возвращает 1 для корня,
2 - для вершины, порожденной корнем, 3 - для вну-
ка и т.д.
Использование ORDER BY
Использование ORDER BY нарушает порядок, в кото-
ром CONNECT BY возвращает строки. При использова-
нии CONNECT BY существует неявный порядок (ORDER
BY). Если уровень строки меньше, чем уровень пре-
дыдущей строки, она рассматривается как дочерняя
к предыдущей. Однако, ORDER BY маскирует неявный
порядок выдачи строк помощью CONNECT BY. Хотя
ошибки и не выдается, использование ORDER BY от-
рицает результаты работы CONNECT BY.
Пример SELECT LPAD(' ',2*LEVEL) || ENAME ORG_CHART, EMPNO,
MGR, JOB
FROM EMP
CONNECT BY PRIOR EMPNO = MGR
START WITH ENAME = 'KING'
ORG_CHART ENPNO MGR JOB
--------------- --------- ------ ----------
KING 7839 PRESIDENT
JONES 7566 7839 MANAGER
SCOTT 7788 7566 ANALYST
ADAMS 7876 7788 CLERK
FORD 7902 7566 ANALYST
SMITH 7369 7902 CLERK
BLAKE 7698 7839 MANAGER
ALLEN 7499 7698 SALESMAN
WARD 7521 7698 SALESMAN
MARTIN 7654 7698 SALESMAN
TURNER 7844 7698 SALESMAN
JAMES 7900 7698 CLERK
CLARK 7782 7839 MANAGER
MILLER 7934 7782 CLERK
-- 262 --
Связанные Описание синтаксиса "condition" в Главе 4; опера-
темы тор SELECT в Главе 5 данного руководства.
Фразы оператора SELECT 6-11
-- 263 --
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Фраза ORDER BY F
Назначение Сортировка результатов запроса.
Предпосылки Нет.
Синтаксис SELECT ...
EORDER BYF {expr|position} [ASC|DESC],...
Ключевые expr выражение, базирующееся на одном
слова и или нескольких столбцах фразы
параметры SELECT или из одной из таблиц
фразы FROM.
position число, идентифицирующее позицию
столбца из фразы SELECT. Напри-
мер, вместо указания имен столб-
цов, можно указать номер позиции
столбца в списке SELECT. При ис-
пользовании операций UNION,
INTERSECT, MINUS элементы ORDER
BY должны указываться по позици-
ям.
ASC|DESC специфицирует возрастающий или
убывающий порядок сортировки в
соответствии с последователь-
ностью слияния символьного набо-
ра. Значения null сортируются в
конец при сортировке в порядке
возрастания и в начало - при
убывании. Следовательно, они
рассматриваются как "наибольшие".
Замечания Фраза ORDER BY специфицирует порядок, в котором
по исполь- будут выдаваться результаты запроса. Таким обра-
зованию зом, это только метод гарантирования отсортиро-
ванности строк.
Строки упорядочиваются по значению первого выра-
жения (expr) или позиции (position). Строки с
одинаковыми значениями упорядочиваются по второму
элементу (если таковой указан) и так далее.
Сортировка с помощью позиции полезна, если выра-
жение очень длинное. Вместо повторного набора вы-
ражения в фразе ORDER BY можно просто указать но-
мер позиции выражения во фразе SELECT. Сортировка
по позициям необходима при использовании операций
UNION, INTERSECT и MINUS, так как для них не обя-
зательно одинаковое именование соответствующих
столбцов.
-- 264 --
Во фразе ORDER BY Вы не можете ссылаться на алиас
столбца.
Справочное руководство по языку SQL 6-12
Для фразы ORDER BY действуют следующие ограниче-
ния:
* Она должна специфицироваться после всех ос-
тальных фраз за исключением FOR UPDATE OF.
Фразы ORDER BY и FOR UPDATE OF можно менять
местами.
* Если вместе указаны фразы DISTINCT и ORDER
BY, последняя не должна содержать столбцы,
не упоминавшиеся в списке SELECT.
* Фраза ORDER BY не разрешена в подзапросах
для операторов INSERT, UPDATE, CREATE TABLE
и CREATE VIEW.
* Для общего числа байтов во всех выражениях
фразы ORDER BY существуют ограничения, зави-
сящие от операционной системы.
Фразу ORDER BY разрешено использовать после
CONNECT BY, однако делать этого не рекомендуется,
так как фраза ORDER BY отрицает влияние фразы
CONNECT BY.
Пример Для выборки записей продавцов из таблицы EMP с
целью выдачи их комиссионных в убывающем порядке
можно выполнить следующий оператор:
SELECT *
FROM EMP
WHERE JOB = 'SALESMAN'
ORDER BY COMM DESC
Для выборки служащих из таблицы EMP и расположе-
ния в порядке возрастания отделов, а внутри отде-
лов - в порядке убывания жалования, введите:
SELECT ENAME, EMPNO, SAL
FROM EMP
ORDER BY DEPTNO ASC, SAL DESC
Для выполнения того же запроса, но используя по-
зиционную запись, введите:
SELECT ENAME, EMPNO, SAL
FROM EMP
ORDER BY 2 ASC, 3 DESC
Связанные Оператор SELECT в Главе 5 данного руководства.
темы
Фразы оператора SELECT 6-13
-- 265 --
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Простое объединение F
Назначение Комбинирование данных из нескольких таблиц. Ре-
зультат может быть показан или использован в дру-
гом SQL - операторе.
Предпосылки Необходимо иметь доступ по SELECT или быть вла-
дельцем всех используемых таблиц.
Синтаксис SELECT [{table|table_alias}.]column
[,[{table|table_alias}.]column]...
FROM table [table_alias], table [table_alias]...
[WHERE {table|table_alias}.column =
{table|table_alias}.column
Замечания Объединение - это форма оператора SELECT, в кото-
по исполь- ром комбинируются строки из двух и более таблиц.
зованию Следовательно, каждая строка результата будет со-
держать данные из более чем одной таблицы. Объ-
единение получается, если во фразе FROM оператора
SELECT присутствует более одной таблицы. Необяза-
тельная фраза WHERE определяет, каким образом
комбинируются строки таблиц. Дальнейшее обсужде-
ние предполагает объединение из двух таблиц, но
применимо к объединению двух и более таблицам.
Наиболее часто встречающийся тип объединения -
простое объединения, возвращающее строки из двух
таблиц на основании условия равенства. Это усло-
вие представляется во фразе WHERE следующим обра-
зом:
=
Строки table1 комбинируются со строками table2 и
в результате возвращаются строки с равными значе-
ниями table1.columnname и table2.columnname.
Имена столбцов во фразе WHERE не обязательно
должны иметь одинаковые имена. Если же имена оди-
наковые, необходимо во избежание неоднозначности
предварять их именами соответствующих таблиц.
Если во фразе FROM на месте действительного имени
таблицы используется алиас, он должен использо-
ваться везде в данном операторе, включая ссылки
на таблицу в списке SELECT и фразе WHERE.
ORACLE не накладывает никаких ограничений на вы-
даваемые столбцы любых таблиц: будут ли выдавать-
ся все столбцы, некоторые или не будет выдаваться
никаких. Таким образом, столбцы, указываемые во
фразе WHERE не обязательно должны присутствовать
в списке SELECT.
-- 266 --
Простое объединение также называют еще
"equi-join" (экви-джоин) из-за использования во
фразе WHERE операции равенства.
Справочное руководство по языку SQL 6-14
Декартово произведение
Декартово произведение получается, когда при объ-
единении таблиц не используется фраза WHERE. От-
сутствие этой фразы приводит к комбинированию всех
строк из всех таблиц. Декартово произведение
всегда генерирует большое количество строк, а ре-
зультаты редко бывают полезными. Например, если
каждая из объединяемых таблиц содержит по сто
строк, результат будет содержать десять тысяч
строк.
Таким образом, если Вы не хотите действительно
скомбинировать все строки одной таблицы со всеми
строками другой, обязательно включайте в объеди-
нение фразу WHERE.
Примеры Следующее простое объединение отвечает на вопрос:
"Каковы номера и названия отделов, в которых ра-
ботает каждый служащий ?":
SELECT ENAME, EMP.DEPTNO, DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
ENAME DEPTNO DNAME
------------ ----------- ---------------
CLARK 10 ACCOUNTING
MILLER 10 ACCOUNTING
KING 10 ACCOUNTING
SMITH 20 RESEARCH
SCOTT 20 RESEARCH
Объединение в данном случае потребовалось из-за
того, что данные хранятся в двух различных табли-
цах. Строки объединяются в соответствии с услови-
ем:
EMP.DEPTNO = DEPT.DEPTNO
Связанные Описание синтаксиса "Внешнего объединения" - в
темы следующем разделе. Оператор SELECT в Главе 5
данного руководства.
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Внешнее объединение F
-- 267 --
Назначение Объединить вместе две таблицы и кроме того, вер-
нуть строки одной таблицы, не имеющие прямого со-
ответствия в другой.
Предпосылки Необходимо иметь привилегию SELECT или быть вла-
дельцем всех участвующих таблиц.
Синтаксис SELECT ...
FROM table1, table2 ...
WHERE table1.column = table2.column(+)
Фразы оператора SELECT 6-15
-- 268 --
Замечания Внешнее объединение расширяет диапазон простого
по исполь- объединения. Внешнее объединение возвращает все
зованию строки, которые вернуло бы простое и дополнитель-
но возвращает строки из одной таблицы, не сопос-
тавившиеся ни с какими строками другой. Например,
мы выбираем всех служащих из таблицы EMP и места
их работы из таблицы DEPT. И допустим, что в таб-
лице EMP есть служащие, чей отдел отсутствует в
таблице DEPT, а мы хотели бы видеть и записи по
этим сотрудникам.
Внешнее объединение должно содержать фразу WHERE
в одной из двух форм:
table1.column = table2.column (+)
table1.column (+) = table2.column
Дополнительные "пустые" (null) столбцы будут вре-
менно создаваться для таблицы с операцией внешне-
го объединения "(+)" и объединяться со всеми
строками другой таблицы, которые не возвращаются
при нормальном объединении.
Символ внешнего объединения во фразе WHERE должен
следовать непосредственно за столбцом.
Внутри одного оператора SELECT таблица может объ-
единена максимально - с одной внешней таблицей.
Пример Чтобы выдать суммарное месячное жалование по всем
отделам без использования внешнего объединения,
введите:
SELECT DEPT.DEPTNO, DNSME, SUM(SAL) MONTHLY SALARY
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
GROUP BY DEPT.DEPTNO
ORDER BY DEPT.DEPTNO
DEPTNO DNAME MONTHLY SALARY
---------- ----------- --------------
10 ACCOUNTING 8750
20 RESEARCH 10875
30 SALES 9400
Справочное руководство по языку SQL 6-16
-- 269 --
Чтобы выдать месячное жалование по всем отделам,
даже если отдел не содержит служащих (с помощью
внешнего объединения), введите:
SELECT DEPT.DEPTNO, DNSME, SUM(SAL) MONTHLY SALARY
FROM EMP, DEPT
WHERE EMP.DEPTNO(+) = DEPT.DEPTNO
GROUP BY DEPT.DEPTNO
ORDER BY DEPT.DEPTNO
DEPTNO DNAME MONTHLY SALARY
---------- ----------- --------------
10 ACCOUNTING 8750
20 RESEARCH 10875
30 SALES 9400
40 OPERATIOS
В предыдущем примере отдел DEPARTMENT появляется
в выходном результате несмотря на то, что в нем
не работает ни одного сотрудника.
Практическое правило - добавлять символ внешнего
объединения после имени таблицы, не содержащей
несравнивающих строк.
Связанные..Описание синтаксиса простого объединения ранее в
этой главе; оператор SELECT в Главе 5 данного ру-
ководства.
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Запрос (query) F
Назначение Оператор SELECT, используемый внутри другого SQL
- оператора для получения промежуточных результа-
тов.
Предпосылки Зависят от используемого SQL - оператора.
Синтаксис SELECT [ALL|DASTINCT]{* | table.* | expr [c_alias]}
[,{table.* | expr [c_alias] } ]...}
FROM [user.]table [t_alias]
[,[user.]table [t_alias]]...
[WHERE condition]
[CONNECT BY condition [START WITH condition] ]
[GROUP BY expr[,expr]...[HAVING condition] ]
Фразы оператора SELECT 6-17
-- 270 --
Замечания Запросы могут использоваться в следующих SQL -
по исполь- операторах:
зованию
CREATE ... AS query
DELETE ... WHERE expr operator (query) ...
INSERT ... query
SELECT ... WHERE expr operator (query)
... HAVING expr operator (query)
... START WITH expr operator (query)
UPDATE ...
SET (column, column, ...) operator (query)
... WHERE expr operator (query) ...
Все "нормальные" операторы SELECT не нуждаются во
фразах ORDER BY или FOR UPDATE OF. Оператор
SELECT называется query (запрос), когда он нахо-
дится внутри фразы WHERE оператора SELECT или
фразы SET оператора UPDATE. Подзапросы называют
также "гнездованными запросами" или "встроенными
запросами". В данном руководстве используется
термин "запрос".
Запросы используются в следующих ситуациях:
* для определения множества строк, вставляемых
в целевую таблицу с помощью операторов
INSERT, CREATE TABLE или COPY
* для определения одного и более значений,
назначаемых существующим строкам в операторе
UPDATE
* для получения значений для сравнения во фра-
зах WHERE, HAVING и START WITH операторов
SELECT, UPDATE или DELETE.
Уровень гнездования запроса не ограничен.
Запросы используются для ответа на вопросы, сос-
тоящие из нескольких частей. Например, для ответа
на вопрос "Кто работает в отделе Тейлора?" необ-
ходимо сперва в подзапросе ответить "В каком от-
деле работает Тейлор?". Тогда Вы в родительском
запросе сможете ответить на основной вопрос. Ро-
дительский запрос - это часть SQL - оператора,
сама содержащая запрос.
Запрос выполняется однажды для всего родительско-
го запроса в отличие от коррелированного запроса,
который выполняется для каждой строки родитель-
ского запроса. См. далее описание коррелирован-
ного запроса.
Справочное руководство по языку SQL 6-18
-- 271 --
Примеры Для определения, кто работает в отделе Тейлора,
введите:
SELECT ENAME, DEPTNO
FROM DEPT
WHERE DEPTNO =
(SELECT DEPTNO
FROM EMP
WHERE ENAME = 'TAYLOR')
Для добавления всем сотрудникам из таблицы EMP,
не получившим премии (т.е. - не содержащихся в
таблице BONUS), необходимо выполнить следующий
оператор:
UPDATE EMP
SET SAL = SAL * 1.1
WHERE EMPNO NOT IN (SELECT EMPNO FROM BONUS)
Для создания таблицы NEWDEPT, дублирующей DEPT,
введите:
CREATE TABLE NEWDEPT (DEPTNO, DNAME, LOC)
AS SELECT DEPTNO, DNAME, LOC FROM DEPT
Связанные Следующее ниже описание коррелированного запроса;
темы оператор SELECT в Главе 5 данного руководства.
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Коррелированный запрос F
Назначение Выполнить запрос для каждой строки в родительском
SQL - операторе.
Предпосылки Зависит от используемого SQL - оператора.
Синтаксис SELECT column_list
FROM table1 table_alias1
WHERE expr operator
(SELECT column_list
FROM table2 table_alias2
WHERE table_alias1.column operator
table_alias2.column)
UPDATE table1 table_alias1
SET column =
(SELECT expr
FROM table2 table_alias2
WHERE table_alias1.column=table_alias2.column)
DELETE FROM table1 table_alias1
WHERE column operator
(SELECT expr
-- 272 --
FROM table2 table_alias2
WHERE table_alias1.column=table_alias2.column)
Фразы оператора SELECT 6-19
Замечания Коррелированный запрос - это форма запроса, при-
по исполь- меняющаяся в операторах SELECT, UPDATE или
зованию DELETE. Обсуждкние будет фокусироваться на опера-
торе SELECT, хотя она применима ко всем типам
коррелированных запросов.
Коррелированный запрос используется, чтобы заста-
вить ORACLE выполнять запрос для каждой строки
родительского запроса (вместо одного раза на весь
запрос).
Этот тип запроса применяется для ответа на слож-
ные вопросы, которые (ответы) зависят от значения
каждой строки родительского запроса. Например,
коррелированный запрос может использоваться для
ответа: "Какие служащие получают жалование больше
среднего по отделу?". Коррелированный запрос ис-
пользуется для вычисления средней оплаты по каж-
дому отделу.
ORACLE распознает, что Вы хотите воспользоваться
коррелированным запросом, когда внутри запроса Вы
ссылаетесь на столбец, принадлежащий таблице из
родительского запроса. Столбцы, принадлежащие ро-
дительскому запросу, предваряются алиасом, соот-
ветствующим родительской таблице.
Имена столбцов в коррелированном запросе должны
для ясности предваряться именем таблицы или ее
алиасом. Ссылка на столбец из родительского зап-
роса должна содержать в качестве префикса именем
таблицы или алиасом, если таблицы содержат столб-
цы с одинаковыми именами. Неквалифицированные
столбцы сперва отыскиваются в таблицах родитель-
ского запроса, затем - следующего, заключающего
родительский и так далее.
В случае использования с оператором UPDATE корре-
лированный запрос может использоваться для изме-
нения строк одной таблицы на основании строк дру-
гой таблицы. Например, если у Вас есть четыре
поквартальных таблицы продаж, которые надо объ-
единить в одну годовую, надо воспользоваться кор-
релированным запросом.
В случае с оператором DELETE коррелированный зап-
рос можно использовать для удаления только тех
строк, которые существуют в другой таблице.
Примеры Для показа служащих, чей заработок превышает
средний по отделу, необходимо воспользоваться
коррелированным запросом. Прежде всего, назначьте
алиас для таблицы EMP, содержащей информацию о
зарплате и уже к нему ссылайтесь в запросе:
-- 273 --
SELECT DEPTNO, ENAME, SAL
FROM EMP X
WHERE SAL > (SELECT AVG(SAL)
FROM EMP
WHERE X.DEPTNO = DEPTNO)
ORDER BY DEPTNO
Справочное руководство по языку SQL 6-20
-- 274 --
Для каждой строки из EMP родительский запрос ис-
пользует коррелированный запрос для вычисления
среднего жалования для сотрудников того же отде-
ла. Коррелированный запрос проделывает для каждой
строки таблицы EMP следующие действия:
1. Определяет DEPTNO.
2. Использует DEPTNO для выполнения запроса.
3. Если жалование в данной строке больше сред-
него по отделу, строка принимается.
Таким образом, запрос выполняется для каждой
строки таблицы EMP.
Примеры запросов для операторов CREATE TABLE и
UPDATE приводятся в описании соответствующих опе-
раторов в Главе 5 данного руководства.
Связанные Операторы DELETE, SELECT и UPDATE в Главе 5 -
темы "Справочник по SQL - операторам" - данного доку-
мента.
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Распределенные запросы F
В данном разделе обсуждаются распределенные зап-
росы для распределенной архитектуры ORACLE. Эта
архитектура позволяет обращаться к данным в уда-
ленных базах с помощью SQL*Net и ORACLE RDBMS. За
дополнительной информацией обратитесь к Главе 22
"Распределенные базы данных и распределенная об-
работка" документа "ORACLE RDBMS Руководство ад-
министратора базы данных", а также - к "Руководс-
тву пользователя по SQL*Net" для используемого
Вами протокола.
Идентифицирование удаленных таблиц
Ссылка на таблицу может по желанию содержать имя
межбазовой связи:
[user.] table [@database_link]
Следующий пример объединяет локальную таблицу
DEPT и таблицу EMP в удаленной базе HOUSTON:
SELECT ENAME, DNAME
FROM EMP@HOUSTON, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
Фразы оператора SELECT 6-21
-- 275 --
Ограничения для распределенных запросов
ORACLE RDBMS в настоящее время накладывает неко-
торые ограничения на распределенную обработку,
которые рассматриваются ниже.
Удаленные ссылки на таблицы поддерживаются только
в следующих областях:
* фразы FROM в операторах SELECT,INSERT INTO...
SELECT, CREATE TABLE ... AS SELECT и CREATE
VIEW ... AS SELECT
* фразы FOR операторов CREATE SYNONYM
* квалификатор таблицы у столбца, ссылающийся
на предыдущие операторы.
Из удаленных таблиц нельзя выбирать столбцы с ти-
пом данных LONG.
Запросы к удаленным таблицам, использующие фразу
CONNECT BY, имеют следующие ограничения:
* ключевое слово PRIOR может использоваться
только совместно с фразой CONNECT BY
* фраза START WITH не может содержать подзапро-
сов
* ни фраза START WITH, ни CONNECT BY не могут
содержать в себе функцию USERENV(ENTRYID),
определенные пользователем функции или псев-
достолбец ROWNUM.
Вы можете выполнять над данными удаленных таблиц
операции INSERT, UPDATE и DELETE. Для этого необ-
ходимо через SQL*Net зарегистрироваться в качест-
ве пользователя удаленной базы.
-- 276 --
EW1 ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ W0
W1 ПРИЛОЖЕНИЕ А W0
W1 СЛОВАРЬ ДАННЫХ W0
Словарь данных содержит информацию об:
* объектах базы данных
* пользователях базы данных
* событиях, произошедших в базе данных
Обратиться к этой информации можно через набор обзоров, ко-
торые и описываются в данном приложении.
Справочное руководство по языку SQL А-2
-- 277 --
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Обзоры словаря данных F
В этом разделе описываются обзоры Словаря Данных.
Информация раздела может быть также найдена в об-
зоре словаря данных "DICTIONARY".
Некоторые имена обзоров словаря данных имеют пре-
фикс "DBA". Эти обзоры доступны лишь пользовате-
лям с привилегией DBA. Остальные обзоры доступны
всем пользователям.
В следующей таблице приводятся обзоры словаря
данных:
E Обзор Описание F
----------------------------------------------------------
ACCESSIBLE_COLUMNS Столбцы таблиц, обзоров и
кластеров, доступные пользова-
телю.
ACCESSIBLE_TABLES Таблицы и обзоры, доступные
пользователю.
ALL_CATALOG Таблицы, обзоры, синонимы и
последовательности, доступные
пользователю.
ALL_COL_COMMENTS Комментарии для столбцов таб-
лиц и обзоров, доступные поль-
зователю.
ALL_COL_GRANTS Синоним для COLUMN_PRIVILEGES
ALL_COL_GRANTS_MADE Привилегии для столбцов, кото-
рыми владеет пользователь или
на которые он предоставил дру-
гим.
ALL_COL_GRANTS_RECD Привилегии для столбцов, пре-
доставленные данному пользова-
телю или PUBLIC.
ALL_CONSTRAINTS Ограничения на таблицы,
доступные пользователю.
ALL_CONS_COLUMNS Основные, уникальные и внешние
ключевые столбцы в ограничени-
ях, владельцем которых являет-
ся пользователь или в табли-
цах, доступных пользователю.
ALL_DB_LINKS Межбазовые связи, доступные
пользователю.
ALL_DF_AUDIT_OPTS Умалчиваемые опции регистрации
доступа для вновь создаваемых
объектов.
ALL_INDEXES Индексы таблиц или кластеров,
доступные пользователю.
ALL_IND_COLUMNS Столбцы, заключающие индексы
для таблиц и кластеров, дос-
тупные пользователю.
ALL_OBJECTS Объекты, доступные пользователю
ALL_SEQUENCES Последовательности, доступные
-- 278 --
пользователю.
ALL_SYNONYMS Синонимы, доступные пользова-
телю.
Словарь Данных А-3
E Обзор Описание F
----------------------------------------------------------
ALL_TABLES Таблицы, доступные пользователю
ALL_TAB_COLUMNS Синоним для ACCESSIBLE_COLUMNS
ALL_TAB_COMMENTS Комментарии для таблиц и обзо-
ров, доступных пользователю.
ALL_TAB_GRANTS Синоним для TABLE_PRIVILEGES
ALL_TAB_GRANTS_MADE Права для объектов, владельцем
которых является пользователь
или он предоставил права дос-
тупа к ним другим пользователям
ALL_TAB_GRANTS_RECD Права доступа к таблицам, пре-
доставленные пользователю или
PUBLIC.
ALL_USERS Все пользователи базы данных
ALL_VIEWS Обзоры, доступные пользователю
AUDIT_ACTIONS Имена и коды для журнала ре-
гистрации доступа к объектам
COLUMN_PRIVILEGES Права доступа для столбцов,
для которых пользователь явля-
ется владельцем, предоставил,
получил или доступ PUBLIC
CONSTRAINT_COLUMNS Столбцы внешнего ключа, в ог-
раничениях, владельцем которых
является пользователь или в
таблицах, ему доступных.
CONSTRAINT_DEFS Ограничения для таблиц, дос-
тупных пользователю.
DBA_AUDIT_CONNECT Синоним для USER_AUDIT_CONNECT
DBA_AUDIT_DBA Элементы журнала регистрации
доступа для действий, требую-
щих привилегии DBA.
DBA_AUDIT_EXISTS Элементы журнала регистрации
доступа для любого действия,
повлекшего ошибку из-за от-
сутствия в базе указанного
объекта.
DBA_AUDIT_RESOURCE Синоним для USER_AUDIT_RESOURCE
DBA_AUDIT_TRAIL Синоним для USER_AUDIT_TRAIL
DBA_CATALOG Все таблицы, обзоры, синонимы
и последовательности, хранящи-
еся в базе данных.
DBA_CLUSTERS Все кластеры базы данных
DBA_CLU_COLUMNS Отображение столбцов таблиц
на столбцы кластеров
DBA_COL_COMMENTS Комментарии для столбцов всех
таблиц и обзоров базы данных
Справочное руководство по языку SQL А-4
-- 279 --
E Обзор Описание F
----------------------------------------------------------
DBA_COL_GRANTS Все права на столбцы в базе
данных
DBA_CONSTRAINTS Ограничения для всех объектов
базы данных
DBA_CONS_COLUMNS Все столбцы базы данных, ис-
пользуемые в ограничениях
DBA_CROSS_REFS Перекрестные ссылки для всех
обзоров, синонимов и ограниче-
ний базы данных
DBA_DATA_FILES Файлы базы данных
DBA_DB_LINKS Все межбазовые связи в данной
базе
DBA_EXP_FILES Файлы экспорта
DBA_EXP_OBJECTS Объекты, которые были экспор-
тированы дополнительно
DBA_EXP_VERSION Номер версии последнего сеанса
экспорта
DBA_EXTENTS Экстенты, составляющие все
сегменты базы данных
DBA_FREE_SPACE Свободные экстенты во всех
табличных пространствах базы
данных
DBA_INDEXES Все индексы базы данных
DBA_IND_COLUMNS Столбцы, составляющие индексы,
для всех таблиц и кластеров
базы данных
DBA_OBJECTS Все объекты базы данных
DBA_ROLLBACK_SEGS Сегменты отката
DBA_SEGMENTS Память, распределенная для
всех сегментов базы данных
DBA_SEQUENCES Все последовательности базы
данных
DBA_SYNONYMS Все синонимы базы данных
DBA_SYS_AUDIT_OPTS Текущие системные опции ре-
гистрации доступа
DBA_TABLES Все таблицы базы данных
DBA_TABLESPACES Все табличные пространства
DBA_TAB_AUDIT_OPTS Опции регистрации доступа для
всех таблиц и обзоров базы
данных
DBA_TAB_COLUMNS Столбцы во всех таблицах, об-
зорах и кластерах базы данных
DBA_TAB_COMMENTS Комментарии для всех таблиц и
обзоров базы данных
DBA_TAB_GRANTS Все привилегии для объектов
базы данных.
Словарь Данных А-5
-- 280 --
E Обзор Описание F
----------------------------------------------------------
DBA_TS_QUOTAS Квоты всех пользователей в
табличных пространствах
DBA_USERS Все пользователи базы данных
DBA_VIEWS Все обзоры базы данных
DICTIONARY Таблицы и обзоры Словаря Данных
DICT_COLUMS Столбцы в таблицах и обзорах
Словаря Данных
DUAL Пустая таблица, содержащая
один столбец и одну строку
TABLE_PRIVILEGES Права доступа к объектам, для
которых пользователь является
владельцем, предоставил, полу-
чил или доступ PUBLIC
USER_AUDIT_CONNECT Элементы журнала регистрации
для подключения и отключения
пользователя от базы данных
USER_AUDIT_RESOURCE Элементы журнала регистрации
для действий по созданию и
USER_AUDIT_TRAIL Элементы журнала регистрации
доступа, относящиеся к пользо-
вателю.
USER_CATALOG Таблицы, обзоры, синонимы и
последовательности, принадле-
жащие пользователю.
USER_CLUSTERS Кластеры, принадлежащие поль-
зователю.
USER_CLU_COLUMNS Отображение столбцов таблиц на
столбцы кластера пользователя.
USER_COL_COMMENTS Комментарии для столбцов таб-
лиц и обзоров пользователя.
USER_COL_GRANTS Привилегии столбцов, для кото-
рых пользователь является вла-
дельцем, предоставляет или
получает.
USER_COL_GRANTS_MADE Привилегии для столбцов объек-
тов пользователя.
USER_COL_GRANTS_RECD Привилегии для столбцов, пре-
доставленные пользователю.
USER_CONSTRAINTS Ограничения, владельцем кото-
рых является пользователь.
USER_CONS_COLUMNS Ограничения для столбцов,
владельцем которых является
пользователь.
USER_CROSS_REFS Перекрестные ссылки для обзо-
ров, синонимов и ограничений
пользователя.
USER_DB_LINKS Межбазовые связи, владельцем
которых является пользователь.
-- 281 --
Справочное руководство по языку SQL А-6
E Обзор Описание F
----------------------------------------------------------
USER_EXTENTS Экстенты, входящие в сегменты,
владельцем которых является
пользователь.
USER_FREE_SPACE Свободные экстенты в табличных
пространствах, доступных поль-
зователю.
USER_INDEXES Индексы пользователя
USER_IND_COLUMNS Столбцы, входящие в индексы
пользователя или в индексы для
таблиц и кластеров, принадле-
жащих пользователю.
USER_OBJECTS Объекты пользователя
USER_SEGMENTS Память, распределенная для
сегментов, владельцем которых
является пользователь.
USER_SEQUENCES Последовательности, принадле-
жащие пользователю.
USER_SYNONYMS Личные синонимы пользователя.
USER_TABLES Таблицы, принадлежащие пользо-
вателю.
USER_TABLESPACES Табличные пространства, дос-
тупные пользователю.
USER_TAB_AUDIT_OPTS Опции регистрации доступа для
таблиц и обзоров, принадлежа-
щих пользователю.
USER_TAB_COLUMNS Столбцы в пользовательских
таблицах, обзорах и кластерах.
USER_TAB_COMMENTS Комментарии для таблиц и обзо-
ров пользователя.
USER_TAB_GRANTS Привилегии на объекты, принад-
лежащие пользователю, а также
те, которые он предоставил
другим или предоставили ему.
USER_TAB_GRANTS_MADE Привилегии к объектам, принад-
лежащим пользователю.
USER_TAB_GRANTS_RECD Привилегии к объектам, предос-
тавленные пользователю.
USER_TS_QUOTAS Квоты пользователя в табличных
пространствах.
USER_USERS Привилегии текущего пользова-
теля.
USER_VIEWS Обзоры, принадлежащие пользо-
вателю.
Словарь Данных А-7
-- 282 --
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Аббревиатуры для Словаря Данных F
Многие обзоры словаря данных имеют достаточно
длинные имена. Для наиболее часто используемых
обзоров словаря сделаны общие синонимы:
E Аббревиатура Для обзора F
------------------------------------------Д
CAT USER_CATALOG
CLU USER_CLUSTERS
COLS USER_TAB_COLUMNS
DICT DICTIONARY
IND USER_INDEXES
MYPRIVS USER_USERS
OBJ USER_OBJECTS
SEQ USER_SEQUENCES
SYN USER_SYNONYMS
TABS USER_TABLES
E ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ F
E Таблица DUAL F
Назначение DUAL - это таблица, а не обзор словаря данных.
Она содержит один столбец, DUMMY CHAR(1) и одну
строку со значением 'X'. Таблица DUAL обычно ис-
пользуется, когда Вы хотите вычислить константное
выражение с помощью оператора SELECT. Так как
таблица содержит только одну строку, константа
может быть возвращена лишь однажды. Если бы таб-
лица DUAL имела несколько строк, константа возв-
ращалась бы по разу для каждой строки.
Константу, псевдостолбец или выражение можно выб-
рать из любой доступной Вам таблицы, но для но
для удобства можно работать именно с DUAL.
Таблица DUAL создается в процессе создания обзо-
ров словаря данных. Таблица принадлежит пользова-
телю SYS, но обратиться к ней может любой пользо-
ватель.
Пример Для выдачи текущей даты наберите:
SELECT SYSDATE FROM DUAL
Вы можете выбрать дату и из таблицы EMP, но в
этом случае выдастся 14 текущих дат - по коли-
честву строк таблицы. Именно из-за наличия единс-
твенной строки предпочтительнее работать с табли-
цей DUAL.
-- 283 --
EW1 ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ W0
W1 ПРИЛОЖЕНИЕ В W0
W1 СИНТАКСИС SQL W0
Данное приложение содержит синтаксис каждого SQL - операто-
ра. Полное описание приводится в Главе 5 - "Справочник по
SQL - операторам".
Справочное руководство по языку SQL B-2
-- 284 --
E ALTER CLUSTER F
ALTER CLUSTER [user.]cluster
[PCTUSED integer] [PCTFREE integer]
[SIZE integer]
[INITRANS integer] [MAXTRANS integer]
[STORAGE storage]
E ALTER DATABASE F
ALTER DATABASE [ database ]
{ADD LOGFILE filespec [,filespec ...]
|DROP LOGFILE 'filename' [,'filename'] ...]
|RENAME FILE 'filename' [,'filename'] ...
TO filename [,filename] ... ]
|ARCHIVELOG
|NOARCHIVELOG
|MOUNT [SHARED | EXCLUSIVE]
--------Д
| DISMOUNT
|OPEN
| CLOSE [NORMAL | IMMEDIATE]}
E ALTER INDEX F
ALTER INDEX [user.]index
[INITRANS integer] [MAXTRANS integer]
[STORAGE storage]
E ALTER ROLLBACK F
E SEGMENT F
ALTER [PUBLIC] ROLLBACK SEGMENT rollback_segment
STORAGE storage
E ALTER SEQUENCE F
ALTER SEQUENCE [user.]sequence
[INCREMRNT BY integer]
[MAXVALUE integer | NOMAXVALUE]
[MINVALUE integer | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE integer | NOCACHE]
[ORDER | NOORDER]
E ALTER SESSION F
ALTER SESSION
SET SQL_TRACE {TRUE | FALSE}
-- 285 --
E ALTER TABLE F
ALTER TABLE [user.]table
[ADD ({column_element|table_constraint}
[,{column_element|table_constraint}]...)]
[MODIFY (column_element [,column_element]...)]
[DROP CONSTRAINT constraint]...
[PCTFREE integer] [PCTUSED integer]
[INITRANS integer] [MAXTRANS integer]
[STORAGE storage]
[BACKUP]
Синтаксис SQL B-3
E ALTER TABLESPACE F
ALTER TABLESPACE tablespace
{ADD DATAFILE filespec [,filespec [REUSE] ] ...
|RENAME DATAFILE 'filename' [,'filename'] ...
TO 'filename' [,'filename']...
|DEFAULT STORAGE storage]
|ONLINE
| OFFLINE [ NORMAL | IMMEDIATE ]
| {BEGIN BACKUP | END BACKUP}}
E ALTER USER F
ALTER USER username [IDENTIFIED BY password]
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace]
E AUDIT (Форма I) F
AUDIT {system_option [,system_option]... | ALL]
WHENEVER [NOT] SUCCSESSFUL]
E AUDIT (Форма II) F
AUDIT {table_option [,table_option]... | ALL}
ON { [user.]table | DEFAULT}
[BY {SESSION | ACCESS}]
------Д
[WHENEVER [NOT] SUCCSESSFUL]
E CLOSE cursor F
E (Встроенный SQL) F
EXEC SQL CLOSE cursor_name
E CONSTRAINT (для столбца) F
[NULL] | [NOT NULL [CONSTRAINT constraint_name] ]
[{UNIQUE | PRIMARY KEY} [CONSTRAINT constraint_name] ]
-- 286 --
[REFERENCES [user.]table [(column)]
[CONSTRAINT constraint_name] ]
[CHECK (condition) [CONSTRAINT constraint] ]
E Column - элемент F
column datatype [DEFAULT expr] [column constraint]
E COMMENT F
COMMENT ON { TABLE [user.]table
| COLUMN [user.]table.column }
IS 'text'
E COMMIT F
COMMIT [WORK]
E COMMIT F
E (Встроенный SQL) F
EXEC SQL [AT dbname] COMMIT [WORK] [RELEASE]
Справочное руководство по языку SQL B-4
-- 287 --
E CONNECT F
E (Встроенный SQL) F
EXEC SQL CONNECT :user_password
[AT dbname]
[USING :dbstring]
или
EXEC SQL CONNECT :user IDENTIFIED BY :password
[AT dbname]
[USING :dbstring]
E CREATE CLUSTER F
CREATE CLUSTER [user.]cluster
(column datatype [,column datatype] ...]
[PCTUSED integer] [PCTFREE integer]
[SIZE integer]
[INITRANS integer] [MAXTRANS integer]
[TABLESPACE tablespace]
[STORAGE storage]
E CREATE DATABASE F
CREATE DATABASE [database]
[CONTROLFILE REUSE]
[LOGFILE filespec [,filespec] ...]
[MAXLOGFILES integer ]
[DATAFILE filespec [,filespec] ...]
[MAXDATAFILES integer ]
[MAXINSTANCES integer ]
[ARCHIVELOG | NOARCHIVELOG]
------------
[EXCLUCIVE]
--------Д
E CREATE DATABASE F
E LINK F
CREATE [PUBLIC] DATABASE LINK link
[CONNECT TO user IDENTIFIED BY password]
USING 'connect_string'
E CREATE INDEX F
CREATE [UNIQUE] INDEX index ON
{table (column [ASC|DESC][,column [ASC|DESC]]...]
| CLUSTER cluster}
[INITRANS n] [MAXTRANS n]
[TABLESPACE tablespace]
[STORAGE storage]
[PCTFREE n]
[NOSORT]
-- 288 --
E CREATE ROLLBACK F
E SEGMENT F
CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment
[ TABLESPACE tablespace ]
[ STORAGE storage ]
Синтаксис SQL B-5
-- 289 --
E CREATE SEQUENCE F
CREATE SEQUENCE [user.]sequence
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
------Д
[CACHE n | NOCACHE]
[ORDER | NOORDER]
------Д
E CREATE SYNONYM F
CREATE [PUBLIC] SYNONYM [user.]synonym
FOR [user.]table [@databaselink]
E CREATE TABLE F
CREATE TABLE [user.]table
( {column_element | table_constraint}
[, {column_element | table_constraint} ]...)
[PCTFREE n] [PCTUSED n]
[INITRANS n] [MAXTRANS n]
[TABLESPACE tablespace]
[STORAGE storage]
[CLUSTER cluster (column [,column]...)]
[AS query]
E CREATE F
E TABLESPACE F
CREATE TABLESPACE tablespace
DATAFILE {filespec [,filespec] ...}
[DEFAULT STORAGE storage]
[ONLINE | OFFLINE]
------
E CREATE VIEW F
CREATE VIEW [user.]view [(alias [,alias]...)]
AS query
[WITH CHECK OPTION [CONSTRAINT constraint]]
E DECLARE CURSOR F
E (Встроенный SQL) F
EXEC SQL [AT dbname] DECLARE cursor_name CURSOR
FOR {SELECT subststment | ststment}
-- 290 --
E DECLARE DATABASE F
E (Встроенный SQL) F
EXEC SQL DECLARE dbname DATABASE
E DECLARE F
E STATEMENT F
E (Встроенный SQL) F
EXEC SQL DECLARE ststement_name STATEMENT
E DELETE F
DELETE [FROM] [user.]table [alias] [WHERE condition]
Справочное руководство по языку SQL B-6
-- 291 --
E DELETE F
E (Встроенный SQL) F
EXEC SQL [AT dbname] [FOR :host_integer]
DELETE [FROM] table [alias]
[WHERE {condition | CURRENT OF cursor}]
E DESCRIBE (Динами- F
E ческий встроенный F
E SQL: Метод 4) F
Для связанных переменных:
EXEC SQL DESCRIBE BIND VARIABLES FOR statement_name
INTO descriptor_name
Для элементов списка SELECT:
EXEC SQL SESCRIBE [SELECT LIST FOR] statement_name
INTO descriptor_name
E DROP CLUSTER F
DROP CLUSTER [user.]cluster
[INCLUDING TABLES]
E DROP DATABASE F
E LINK F
DROP [PUBLIC] DATABASE LINK link
E DROP INDEX F
DROP INDEX [user.]index
E DROP ROLLBACK F
E SEGMENT F
DROP [PUBLIC] ROLLBACK SEGMENT segment
E DROP SEQUENCE F
DROP SEQUENCE [user.]sequence
E DROP SYNONYM F
DROP [PUBLIC] SYNONYM [user.]synonym
E DROP TABLE F
DROP TABLE [user.]table
E DROP TABLESPACE F
DROP TABLESPACE tablespace
[INCLUDING CONTENTS]
-- 292 --
E DROP VIEW F
DROP VIEW [user.]view
E EXECUTE (Динами- F
E ческий встроенный F
E SQL: Метод 2) F
EXEC SQL [AT dbname] [FOR :host_integer]
EXECUTE statement_name [USING values_list]
Синтаксис SQL B-7
-- 293 --
E EXECUTE F
E IMMEDIATE F
E (Динамический F
E встроенный SQL: F
E Метод 1) F
EXEC SQL [AT dbname]
EXECUTE IMMEDIATE [:host_string | string_literal]
E EXPLAIN PLAN F
EXPLAIN PLAN
[SET STATEMENT ID = char]
[INTO [user.]table]
FOR sql_statement
E Filespec F
'filename' [SIZE integer [K|M] [REUSE]
E FETCH F
E (Встроенный SQL) F
EXEC SQL [FOR :host_integer]
FETCH cursor_name
INTO host_variable_list
Для динамического SQL, метод 4:
EXEC SQL [FOR :host_integer]
FETCH cursor_name
USING descriptor
E FOR - фраза F
E (Встроенный SQL) F
FOR :host_integer
E GRANT (Форма I) F
GRANT database_priv [,database_priv] ...
TO user [,user] ...
[ IDENTIFIED BY password [,password] ...]
E GRANT (Форма II) F
GRANT RESOURCE [ (quota [K|M]) ]
ON tablespace
TO { PUBLIC | user [,user] ...}
E GRANT (Форма III) F
GRANT {object_priv [,object_priv] ...} | {ALL
[PRIVILEGES] } ON [user.]object
TO { user | PUBLIC } [,user] ...
[ WITH GRANT OPTION ]
-- 294 --
E INSERT F
INSERT INTO[user.]table [column [,column] ...)]
{VALUES (value [,value]...) | query}
Справочное руководство по языку SQL B-8
-- 295 --
E INSERT F
E (Встроенный SQL) F
EXEC SQL [AT dbname] [FOR :host_integer]
INSERT INTO [user.]table [(column [,column]...)]
{VALUES(values_element [,values_element]...) | query}
E LOCK TABLE F
LOCK TABLE [user.]table [, [user.]table]...
IN lockmode MODE [NOWAIT]
E NOAUDIT (Форма I) F
NOAUDIT {system_option [,system_option]...| ALL}
WHENEVER [NOT] SUCCSESSFUL]
E NOAUDIT (Форма II) F
NOAUDIT {option [,option]... | ALL}
ON {object | DEFAULT }
[WHENEVER [NOT] SUCCSESSFUL}
E OPEN cursor F
E (Встроенный SQL) F
EXEC SQL OPEN cursor_name [USING host_variable_list]
E PREPARE (Динамический F
E встроенный SQL) F
EXEC SQL PREPARE statement_name
FROM {:host_string | string_literal}
E RENAME F
RENAME old TO new
E REVOKE (Форма I) F
REVOKE { [CONNECT] [,RESOURCE] [,DBA] }
FROM user [,user] ...
E REVOKE (Форма II) F
REVOKE space_privilege ON tablespace
FROM user [,user] ...
E REVOKE (Форма III) F
REVOKE { object_priv [,object_priv]... | ALL }
ON [user.]object
FROM { user | PUBLIC } [,user]...
-- 296 --
E ROLLBACK F
ROLLBACK [WORK]
[ TO [SAVEPOINT] savepoint ]
E ROLLBACK F
E (Встроенный SQL) F
EXEC SQL [AT dbname] ROLLBACK [WORK]
[TO [SAVEPOINT] savepoint]
[RELEASE]
Синтаксис SQL B-9
-- 297 --
E SAVEPOINT F
SAVEPOINT savepoint
или во встроенном SQL:
EXEC SQL SAVEPOINT savepoint
E SELECT F
SELECT [ALL|DISTINCT] {* | table.* | expr [c_alias]}
--Д [, {table.* | expr [c_alias]}]...
FROM [user.]table [t_alias][,[user.]table [t_alias]]...
[WHERE condition]
[CONNECT BY condition [START WITH condition]]
[GROUP BY expr [, expr]...[HAVING condition]]
[{UNION|INTERSECT|MINUS} SELECT ...]
[ORDER BY {expr|position} [ASC|DESC]
--Д
[,{expr|position} [ASC|DESC]] ]...
--Д
[FOR UPDATE OF column [,column]...[NOWAIT] ]
E SELECT F
E (Встроенный SQL) F
EXEC SQL [AT dbname] [FOR :host_integer]
SELECT select_list
INTO :host_variable [,:host_variable]...
FROM table_list
[WHERE condition ]
[CONNECT BY condition [START WITH condition]]
[GROUP BY expr[,expr]...[HAVING condition]]
[ {UNION|INTERSECT|MINUS} SELECT ...]
[ORDER BY {expr|position} [ASC|DESC]
[,{expr|position} [ASC|DESC] ] ]...
[FOR UPDATE OF column [,column]...[NOWAIT] ]
E SET TRANSACTION F
SET TRANSACTION {READ ONLY}
E STORAGE - фраза F
STORAGE (
[ INITIAL integer ] [ NEXT integer ]
[ MINEXTENTS integer ] [ MAXEXTENTS integer ]
[ PCTINCREASE integer ] )
E Table CONSTRAINT F
[{UNIQUE | PRIMARY KEY} (column [,column]...)
[CONSTRAINT constraint] ]
[FOREIGN KEY (column [,column]...)
REFERENCES [user.]table [(column [,column]...)]
[CONSTRAINT constraint] ]
-- 298 --
[CHECK (condition) [CONSTRAINT constraint] ]
Справочное руководство по языку SQL B-10
-- 299 --
E UPDATE F
UPDATE [user.]table [alias]
SET column = expr [,column = expr]...
[WHERE condition]
или
UPDATE [user.]table [alias]
SET (column [,column]...) = (query)
[,(column [,column]...) = (query) ] ...
[WHERE condition]
E UPDATE F
E (Встроенный SQL) F
EXEC SQL [AT dbname] [FOR :host_integer
UPDATE [user.]table
SET column [,column]...=({value[,value]...|query})
[WHERE {condition|CURRENT OF cursor_name}]
или
EXEC SQL [AT dbname] [FOR :host_integer
UPDATE [user.]table
SET column1 ={(value)|query}
[,SET column1 ={(value)|query} ]...
WHERE {search_condition|CURRENT OF cursor_name}]
E VALIDATE INDEX F
VALIDATE INDEX [user.]index
E WHENEVER F
E (Встроенный SQL) F
EXEC SQL WHENEVER {NOT FOUND|SQL ERROR|SQLWARNING}
{CONTINUE | GOTO label_name | STOP}
-- 300 --
EW1 ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ W0
W1 ГЛОССАРИЙ W0
W1 А W0
E Администратор базы данных (Database Administrator - DBA) F
Один из пользователей системы ORACLE, который может предос-
тавлять и запрещать доступ других пользователей к системе,
модифицировать опции системы, влияющие на работу всех поль-
зователей, а также выполнять другие административные функции.
Обычно называется "DBA".
E Алиас (alias) F
Временное имя, назначаемое таблице или столбцу таблицы
в SQL - операторе и используемое для ссылки на него, как на
то же самое.
E Аргумент (argument) F
Выражение, заключенное в скобки, используемое для указания
значения для использования в функции.
W1 Б W0
E База данных (database) F
Один или несколько файлов операционной системы, в которой
система ORACLE хранит таблицы, обзоры и другие объекты. Кро-
ме того, так называют множество объектов базы данных, ис-
пользуемых конкретным приложением.
E Блок (block) F
Единица памяти базы данных, используемая ORACLE для распре-
деления места для таблиц и индексов. Размер блока ORACLE мо-
жет варьироваться в зависимости от операционной системы, в
среде которой он работает (host - системы).
Размер блока ORACLE обычно кратен блоку host - системы.
E Блокировка (lock) F
Временное ограничение доступа к данным другим пользователям.
E Блокировка типа share update F
Блокировка, которая разрешает другим пользователям как зап-
рашивать, так и блокировать данные.
-- 301 --
Справочное руководство по языку SQL Глоссарий - 2
W1 В W0
E Виртуальный столбец (virtual column) F
Столбец в результате запроса, чье значение вычисляется на
основании значений других столбцов.
E Внешний ключ (foreign key) F
Один или несколько столбцов, чьи значения базируются на зна-
чениях основного ключа другой таблицы.
E Внешнее объединение (outer join) F
Тип объединения, возвращающий значения из одной таблицы, ко-
торые не удовлетворяют условию и дополнительно те, которые
удовлетворяют условию. Каждая сохраняемая строка объединяет-
ся с фиктивной строкой другой таблицы, у которой все поля
содержат null.
E Временный сегмент (temporary segment) F
Часть памяти табличного пространства, используемая для хра-
нения промежуточных результатов SQL - операторов. Например,
временные сегменты используются для сортировки данных.
E Выражение (expression) F
Один и более элементов данных, объединяемых в команде
операциями или функциями. Выдает значение типа number, char
или data.
W1 Г W0
E Гнездование (nesting) F
Практика помещения запроса в другой оператор или фразу.
E Групповая функция (group function) F
Функция, вычисляющая единственное суммарное значение (напри-
мер - сумма или среднее) из группы значений как из единс-
твенного значения.
W1 Д W0
E Древовидный запрос (tree-structured query) F
Запрос, результатом которого является иерархическая зависи-
мость между строками таблицы. См. фразу CONNECT BY.
W1 З W0
E Запись (record) F
Синоним понятия строки (row)
E Запрос (query) F
Команда SQL для выборки данных из одной или нескольких таб-
лиц. Все запросы начинаются с ключевого слова SELECT.
-- 302 --
Глоссарий - 3
E Зарезервированное слово (reserved word) F
Слово, имеющее специальное значение в SQL и, следовательно,
не может использоваться для именования объекта (в отличие от
"ключевого слова", которое может использоваться для именова-
ния объектов, но которое может в будущем может стать зарезер-
вированным).
W1 И W0
E Индекс (index) F
Объект базы данных, благодаря которому осуществляется
быстрый и прямой доступ к строкам без полного сканирования
таблицы. Индекс имеет элемент для каждого значения индекси-
руемого поля таблицы и указатель на соответствующую строку.
E Исключительная блокировка (exclusive lock) F
Блокировка, которая позволяет другим пользователям
запрашивать данные, но не изменять их; она отличается от
блокировки типа SHARE, которая позволяет другим пользовате-
лям выполнять любой тип блокировки для тех же данных. Блоки-
ровка типа SHARE разрешает нескольким пользователям одновре-
менно блокировать одни и те же данные.
E Имя пользователя (username) F
Слово, которое идентифицирует Вас как пользователя host -
системы или как пользователя ORACLE. Вместе с именем пользо-
вателя ассоциируется пароль.
W1 К W0
E Кластер (cluster) F
Объект базы данных, который может содержать одну и более
таблиц. Строки этих таблиц, имеющие одинаковые значения клю-
ча кластера, хранятся в базе данных физически вместе.
E Кластера индекс (cluster index) F
Индекс, который Вы строит на столбцах, представляющих собой
ключ кластера.
E Кластера столбцы (cluster columns) F
Один или более столбцов из группы кластеризованных таблиц,
которые используются для определения того, какие строки бу-
дут храниться вместе. То же, что и "Ключ кластера".
E Ключ (key) F
Столбец или группа столбцов, используемые для идентификации
строк. Не идентично понятию "индекс". См. также "основной
ключ", "внешний ключ", "уникальный ключ".
E Ключевое слово (keyword) F
Часть синтаксического описания, которая должна вводиться
так, как написано.
E Команда (command) F
См. Оператор.
-- 303 --
Справочное руководство по языку SQL Глоссарий - 4
E Командная строка (command line) F
Строка на экране дисплея, в которой Вам предлагается набрать
команду.
E Конкатенация (concatenation) F
Объединение вместе символьных значений, представляющееся
операцией "||" (не путайте с объединением таблиц). Например,
конкатенация двух символьных констант 'ABC' и 'XYZ' будет
записываться в виде: 'ABC'||'XYZ' и в результате получится
значение 'ABCXYZ'.
E Корень (root) F
В таблице с древовидной структурой - начало дерева; строка,
не имеющая родителя и чьи потомки, внуки и т.д. составляют
дерево. В древовидном запросе это строка, специфицированная
во фразе START WITH.
E Коррелированный запрос (correlated query) F
Подзапрос, который выполняется для каждого значения строки -
кандидата, выбираемого основным запросом. Результат каждого
выполнения подзапроса зависит от значений одного или нес-
кольких полей строки - кандидата; другими словами - подзап-
рос коррелируется с основным запросом.
W1 Л W0
E Лист (leaf) F
В древовидной таблице - строка, не имеющая строки-потомка.
E Логическое выражение (logical expression) F
Выражение, чьим результатом может быть TRUE либо FALSE. Си-
ноним "условия".
W1 М W0
E Межбазовая связь (database link) F
Объект, хранящийся локальной базе данных, который определя-
ет удаленную базу данных, маршрут к этой базе и (не
обязательно) имя пользователя и пароль в удаленной базе.
E Множественное условие (set condition) F
Логическое выражение, содержащее запрос, например:
'JOB IN (SELECT...)'.
E Множественная операция (set operator) F
Одна из следующих операций: UNION, INTERSECT, MINUS.
E Модель отношения сущностей (Entity-Relationship model) F
Структура, используемая для моделирования систем для реляци-
онной базы данных. Делит все элементы системы на две катего-
рии: сущности и отношения.
-- 304 --
Глоссарий - 5
E Модель формата (format model) F
Фраза, которая управляет появлением чисел, дат или символь-
ных строк. Модели форматов для столбцов типа DATE
используются в функциях преобразования даты (например -
TO_DATE).
W1 Н W0
E Независимость данных (data independence) F
Свойство хорошо определенных таблиц, позволяющее менять их
физическую и логическую структуру, никак не влияя при этом
на работу приложений, обращающихся к таблице.
W1 О W0
E Обзор (view) F
Объект базы данных, являющийся логическим представлением
таблицы. Он является производным от таблицы, но не использу-
ет память, но с ним можно работать так же, как и с таблицей.
E Объединение (join) F
1. Запрос, возвращающий данные из двух и более таблиц; 2. ус-
ловие, которое Вы определяете для определения того, какие
строки должны быть выбраны.
E Объединяющий столбец (join column) F
Столбец, используемый для объединения одной таблицы с дру-
гой. Вы специфицируете объединяющий столбец, используя фразу
WHERE, которая определяет отношение между объединяющими
столбцами в двух таблицах.
E Объект базы данных (database object) F
Нечто созданное и хранящееся в базе данных. К объектам базы
данных относятся: таблицы, обзоры, синонимы, индексы, после-
довательности, кластеры, столбцы.
E Ограничение (constraint) F
См. "Ограничение целостности".
Ограничение для столбца (column constraint)
Ограничение целостности, относящееся к определенному столбцу
в таблице.
E Ограничение для таблицы (table constraint) F
Ограничение целостности, применяемое для нескольких столбцов
одной таблицы. См. "Ограничение для столбца".
E Ограничение целостности (integrity constraint) F
Правило, ограничивающее диапазон действительных значений
столбца. Помещается в момент создания столбца. См. также
"Ограничение для столбца" и "Ограничение для таблицы".
-- 305 --
E Оператор (statement) F
Инструкция для системы ORACLE на языке SQL, состоящая из
фраз.
Справочное руководство по языку SQL Глоссарий - 6
E Операция (operator) F
Символ или зарезервированное слово, используемое, используе-
мое для выполнения операции, такой как сложение или сравне-
ние, над элементами выражения. Приведем примеры некоторых
операций: * (умножение), > (сравнение "больше чем"), ANY
(сравнение некоторого значения с каждым значением, выдавае-
мым подзапросом).
E Операционная система (operating system) F
Программа, управляющая ресурсами компьютера и являющаяся
связующим звеном между аппаратурой и прикладными программами.
E Основной ключ (primary key) F
Столбец (столбцы), используемый для уникального идентифици-
рования строк в таблице.
E Относительная целостность F
Свойство, гарантирующее что значения из одного столбца зави-
сят от значений из другого столбца. Это свойство обеспечива-
ется с помощью "Ограничений целостности".
E Отношение (relation) F
См. таблица.
W1 П W0
E Пароль (password) F
Строка символов, которую Вы должны ввести при регистрации в
операционной системе и при подключении к системе ORACLE. Па-
роль необходимо хранить в тайне.
E Подзапрос (subquery) F
Запрос, заключенный в кавычки и располагающийся внутри фразы
SQL - оператора. См. также "Коррелированный запрос".
E Поле (field) F
В общем случае - синоним понятия столбца, но обычно исполь-
зуется для обозначения действительного значения столбца.
E Последовательность (sequence) F
Объект базы данных, позволяющий генерировать уникальные чис-
ла для использования в качестве основных ключей.
E Правило относительной целостности (referential integrity
rule) F
"Ограничение целостности", которое обеспечивает относитель-
ную целостность.
-- 306 --
E Привилегия (privilege) F
Любое действие над таблицей, на которое создатель таблицы
может дать разрешение другому пользователю. ORACLE распозна-
ет следующие привилегии: ALTER, DELETE, INDEX, INSERT,
REFERENCE, SELECT, UPDATE. Ключевое слово ALL означает пре-
доставление всех привилегий, что и у создателя объекта.
Глоссарий - 7
E Присоединение, подключение (connect) F
Используется системой ORACLE для идентифицирования Вас как
пользователя путем ввода имени пользователя (username) и па-
роля(password).
E Последовательность слияния (collating sequence) F
Последовательность символов, в который каждый символ либо
больше, либо меньше остальных символов. Последовательность
слияния используется для упорядочения и группировки символь-
ных столбцов. Последовательность слияния зависит от операци-
онной системы и основывается на используемом символьном на-
боре. Большинство операционных систем используют символьные
наборы либо ASCII, либо - EBCDIC. На последовательность сли-
яния влияет также параметр LANGUAGE файла INIT.ORA; различ-
ные языки имеют разные последовательности слияния.
E Псевдостолбец (pseudo-column) F
"Столбец", который при обращении выдает значение, но не яв-
ляется реальным столбцом таблицы. (Например - ROWID).
W1 Р W0
E Разделяемая блокировка (share lock) F
Блокировка, разрешающая другим пользователям запрашивать
данные, но не модифицировать их.
E Родительский запрос (parent query) F
Самый внешний запрос (который выдает окончательный резуль-
тат) в запросе, содержащем подзапрос.
W1 С W0
E Сеанс (session) F
События, происходившие между моментом подключения пользова-
теля к системе и отключением.
E Сегмент отката (rollback segment) F
Часть памяти табличного пространства, в которой хранится ин-
формация, используемая для гарантирования целостности в
процессе отката и обеспечения согласованного чтения для нес-
кольких транзакций.
E Сеть (network) F
Связь между двумя и более компьютерами, позволяющая им нап-
рямую обмениваться информацией.
-- 307 --
E Синоним (synonym) F
Имя, назначаемое таблице или обзору для более удобной ссылки
на него. Если у Вас есть доступ к таблице другого пользова-
теля, ей можно назначить синоним и обращаться только по си-
нониму, не включая имени пользователя.
E Синтаксис (syntax) F
Набор правил, определяющий как конструировать правильные
операторы на язык компьютера (например - на SQL).
Справочное руководство по языку SQL Глоссарий - 8
-- 308 --
E Система управления реляционной базой данных (Relational
Database Management System - RDBMS) F
Компьютерная программа общего назначения, обеспечивающая
хранение и выборку данных, организованных в таблицы, состоя-
щие из одного или нескольких элементов информации, называе-
мых строками, каждая из которых - в свою очередь содержит
одинаковый набор элементов данных (столбцы). ORACLE - систе-
ма управления реляционной базой данных.
E Словарь Данных (Data Dictionary) F
Набор таблиц и обзоров, содержащих информацию об объектах
базы данных, пользователях, привилегиях, событиях и об ис-
пользовании базы данных.
E Согласованность чтения (read consistency) F
Состояние, гарантирующее, что все данные, с которыми сталки-
вается оператор (или транзакция) представляют собой согласо-
ванное множество в течение всего времени работы оператора
(транзакции). См. оператор SET TRANSACTION.
E Составной ключ (composite key) F
Основной или внешний ключ, состоящий из двух и более столб-
цов.
E Спецификация базы данных (database specification) F
Буквенноцифровой код, идентифицирующий базу данных ORACLE и
использующийся для специфицирования базы данных для работы в
SQL*Net и для определения межбазовой связи.
E Старшинство операций (precedence) F
Умалчиваемый порядок, в котором ORACLE выполняет операции в
выражении. В выражении "2+3*X" сперва три умножается на X, а
к результату добавляется 2, так как умножение старше сложения.
E Столбец (column) F
(1) Поля, представляющие в таблице определенного рода дан-
ные. Например - поля, содержащие жалование в таблице EMP.
(2) Поля, представляющие определенного рода выходные данные,
полученные в результате запроса.
E Страница (page) F
Единица дисковой памяти. См. "Блок".
E Сущность (entity) F
Лицо, место или вещь, представляемые с помощью таблицы. В
таблице каждая строка представляет собой сущность.
E Строка (row) F
(1) Один полный набор полей таблицы. Например - поля, предс-
тавляющие одного служащего в таблице EMP. (2) Один элемент
множества, составляющего выходные результаты запроса.
-- 309 --
Глоссарий - 9
W1 Т W0
E Таблица (table) F
Базовая структура памяти в системе управления реляционной
базой данных. Таблица содержит один и более элементов инфор-
мации (строк), которые, в свою очередь, состоят из значений
одинакового типа (столбцов).
E Таблицы алиас (table alias) F
Временная подстановка для имени таблицы, определенная во
фразе FROM оператора SELECT.
E Таблицы столбец (table column) F
Столбец, принадлежащий таблице. См. "Столбец".
E Табличное пространство (tablespace) F
Файл или группа файлов, используемых для хранения данных.
База данных ORACLE состоит из табличного пространства SYSTEM
и, возможно, других табличных пространств.
E Тип данных (datatype) F
Любая из стандартных форм данных, которые ORACLE может хра-
нить и обрабатывать. К стандартным типам данных ORACLE отно-
сятся: CHAR, DATE, NUMBER, LONG, RAW и LONG RAW.
E Точка сохранения (savepoint) F
Точка внутри транзакции, к которой Вы можете выполнить от-
кат. Точки сохранения позволяют Вам откатить часть текущей
транзакции. См. оператор ROLLBACK.
E Транзакция (transaction) F
Последовательность SQL - операторов, трактуемая системой
ORACLE как один элемент. Набор модификаций становится посто-
янным после выдачи оператора COMMIT. Транзакция может быть
полностью или частично откачена с помощью оператора ROLLBACK.
E Тупиковая ситуация (deadlock) F
(Буквально - смертельная блокировка). Ситуация, когда каждый
из двух пользователей исключительно заблокировал ресурс,
с которым необходимо продолжить работать другому пользовате-
лю. Такая ситуация возникает, например, в случае, когда два
пользователя заблокировали различные таблицы, а затем каждый
из них пытается обратиться к таблице, заблокированную дру-
гим. ORACLE способен автоматически избегать и разрешать ту-
пиковые ситуации.
W1 У W0
E Удаленная база данных (remote database) F
База данных, расположенная на "удаленном компьютере"; в
частности так называется база, используемая через межбазовую
связь.
-- 310 --
E Удаленный компьютер (remote computer) F
Термин, использующийся для обозначения любого, кроме Вашего,
компьютера в сети.
Справочное руководство по языку SQL Глоссарий - 10
E Узел (node) F
1. отдельная строка в древовидной таблице; 2. в сети - мес-
тоположение отдельного компьютера.
E Умолчание (default) F
Фраза или значение опции, используемое в случае, когда ниче-
го другого не указано.
E Уникальный ключ (unique key) F
Один или несколько столбцов, которые должны быть уникальными
для каждой строки таблицы. См. "Ключ", "Основной ключ".
Уровень (level)
В древовидной таблице количество строк между данной и корне-
вой. Корневая строка имеет уровень 1, ее потомок 2, и т.д.
E Условие (condition) F
Выражение, чьим результатом является TRUE или FALSE. Напри-
мер: X > 100.
W1 Ф W0
E Физический блок (physical block) F
Место на диске, обычно размером в 512 К. Отличается об блока
системы ORACLE. См. "Блок".
E Фраза (clause) F
Одно или несколько зарезервированных слов, использующихся
как часть SQL - оператора и иногда сопровождающихся парамет-
ром. Например, оператор:
SELECT DISTINCT SAL FROM EMP
содержит фразы SELECT и FROM.
E Функция (function) F
Заранее определенная операция (например - "преобразовать в
верхний регистр", которая может быть выполнена путем помеще-
ния ее имени и аргументов в SQL - оператор.
W1 Э W0
E Экстент (extent) F
Часть непрерывного участка памяти, занимаемой таблицей или
индексом и распределяемая единовременно либо во время перво-
начального создания таблицы или индекса, либо при запросе
ими дополнительного места.
-- 311 --
Глоссарий - 11
W1 A W0
E ASCII F
Соглашение по использованию числовых данных для представле-
ния печатаемых символов. ASCII - это аббревиатура от
American Standard Code for Information Interchange (амери-
канский стандартный код для обмена информацией).
E audit (ревизия, регистрация) F
Используется для указания системе ORACLE собирать информацию
по различным аспектам. Например - регистрация доступа к оп-
ределенной таблице.
W1 C W0
E CHAR - тип данных F
Один из типов данных системы ORACLE, который может включать
в себя любой печатаемый символ, например "А", "3" или "про-
бел". Он может иметь размерность от нуля символов до макси-
мально возможной размерности, определенной для столбца. Мак-
симальный размер столбца CHAR - 255 символов.
E CONNECT BY F
Необязательная фраза оператора SELECT.
W1 D W0
E DATE - тип данных F
Один из стандартных типов данных. Столбец с данными типа
DATE может содержать дату в диапазоне от 1 января 4712 г. до
н.э. до 31 декабря 4712 г. н.э.
E DBA F
См. "Администратор базы данных".
W1 E W0
E equi-join F
Объединение, в котором в качестве операции объединения выс-
тупает равенство, например:
WHERE EMP.DEPTNO = DEPT.DEPTNO
W1 H W0
E host F
Компьютер, на котором работает ORACLE RDBMS.
W1 L W0
E LONG - тип данных F
Стандартный тип данных системы ORACLE, который может содер-
жать любой "печатный" символ, например "A","3","&" или
"пробел". Может иметь длину от 0 до 65535 символов. В табли-
це может быть определен только один столбец типа LONG.
-- 312 --
Столбцы такого типа не могут использоваться как аргументы
функций, в выражениях, фразах WHERE, а также имеют некоторые
дополнительные ограничения.
Справочное руководство по языку SQL Глоссарий - 12
E LONG RAW - тип данных F
Столбец такого типа может содержать необработанные двоичные
данные, но с другой стороны он подобен столбцу LONG. Значе-
ния в столбец LONG RAW вводятся в шестнадцатеричной нотации.
W1 N W0
E non-equi-join F
Объединение, условие которого описывается отношением,
отличным от равенства (=).
E null F
Значение, означающее: "значение неприменимо" или "значение
неизвестно". Запрос может выбирать или игнорировать значения
null в некоторых полях. Групповые функции обычно игнорируют
такие значения. Null не равен какому-либо значению, сравне-
ние с ним всегда дает FALSE.
E NUMBER - тип данных F
Один из стандартных типов данных ORACLE, который может со-
держать числовые данные как с десятичной точкой и знаком,
так и без них. Может быть определено от 1 до 105 позиций для
десятичных чисел, причем только 38 являются значащими.
W1 P W0
E public F
1) Нечто видимое или доступное всем пользователям. public
могут быть синонимы и межбазовые связи. Объекты этого типа
может создавать только DBA. Любой пользователь может предос-
тавить право доступа public только к своим объектам. 2)
Группа, к которой принадлежит любой пользователь базы данных
- имя этой группы.
W1 R W0
E RAW - тип данных F
Столбцы типа RAW содержат данные независимо от того, какой
компьютер их записал. Такие столбцы используются для хране-
ния двоичных (не символьных) данных.
E RDBMS F
См. "Система управления реляционной базой данных".
E ROWID F
Внутренний адрес строки в таблице. ROWID строки может быть
выбран с помощью команды SELECT из псевдостолбца ROWID. Его
можно преобразовывать с помощью функций ROWIDTOCHAR и
CHARTOROWID.
-- 313 --
W1 S W0
E soundex F
Символьная функция, представляющая в символьном виде звуча-
ние слова. Она может помочь в поиске слов, написанных нес-
колько иначе, например вместо "SMITH" найти "SMYTHE".
-- 314 --
Глоссарий - 13
E SQL F
Промышленный стандарт языка, используемого для работы с
реляционными базами данных. Этот язык используется в систе-
мах ORACLE и DB2. Произносится "сикюэл".
E SQL*Net F
Необязательный продукт, который позволяет системе ORACLE ра-
ботать на нескольких компьютерах и модифицировать базы через
сеть.
|