Выбрать главу

Вы не говорите программному обеспечению системы управления базами

данных, как именно должен осуществляться доступ к требующейся информации.

Вы просто указываете, что желаете получить, а затем предоставляете

программному обеспечению самому решать, как это лучше сделать.

В более общем случае элементы, следующие за ключевым словом

SELECT, не обязаны всегда быть только именами столбцов таблицы. Они

могут быть любыми допустимыми выражениями. Вы увидите примеры выражений

далее в этой главе.

Если после ввода оператора SQL нажать ENTER, оператор будет выполнен,

а результаты его выполнения будут возвращены в SQL*Plus для отображения

на экране:

Cl)STOMER_ID FIRST.NAME LAST_NAME DOB PHONE

1 John Brown 01-JAN-65 800-555-1211

2 Cynthia Green 05-FEB-68 800-555-1212

3 Steve White 16-MAR-71 800-555-1213

4 G a il Black 800-555-1214

5 Doreen Blue 20-MAY-70

Возвращенные из базы данных строки принято называть результирующим

множеством (result set). Как видно из примера, база данных Oracle

преобразует имена столбцов в верхний регистр. Буквенные столбцы и

столбцы с датами выравниваются влево; числовые столбцы - вправо. По

умолчанию база данных Oracle отображает даты в формате DD-M0N-YY, где

DD - это номер дня, M0N - первые три символа названия месяца (в верхнем

регистре), a YY - две последние цифры года. В базе данных на самом деле

Выборка информации из таблиц базы данных 31

хранятся все четыре цифры года, но по умолчанию на экран выводятся

только две последние.

Примечание Ваш АВД может изменить формат отображения даты по умолчанию, изменив

значение параметра инициализации базы данных Oracle NLS_DATE_FORMAT (см. подробнее

о датах в главе 5).

Хотя имена столбцов и таблиц можно записывать как в верхнем, так и

нижнем регистрах, все-таки лучше придерживаться единого стиля. В этой

книге в примерах символы верхнего регистра используются для обозначения

ключевых слов SQL и Oracle, а для всего остального используется нижний

регистр.

Выборка из таблицы всех столбцов

Если требуется получить из таблицы все ее столбцы, то вместо того, чтобы

в длинном списке перечислять имена всех этих столбцов, можно использовать

символ звездочки (* ). В следующем примере в операторе SELECT используется

символ звездочки, чтобы указать, что нужно получить значения

всех столбцов таблицы customers:

П SELECT *

FROM customers;

CUSTOMER_ID FIRST_NAME LAST_NAME DOB PHONE

1 John Brown 01-JAN-65 800-555-1211

2 Cynthia Green 05-FEB-68 800-555-1212

3 Steve White 16—MAR—71 800-555-1213

4 G a il Black 800-555-1214

5 Doreen Blue 20-MAY-70

Видно, что в выходных данных показаны все столбцы таблицы customers.

Использование ключевого слова WHERE для указания

строк, которые нужно выбрать

Вы можете использовать ключевое слово WHERE в запросе для указания

строк, которые нужно получить. Это очень важно, поскольку Oracle может

хранить в базе данных большое число строк, в то время как вам, скорее

всего, нужно лишь небольшое подмножество из них. Ключевое слово WHERE

размещают после слова FROM:

□ SELECT список элементов

FROM список таблиц

WHERE список условий;

В следующем запросе ключевое слово WHERE используется для получения

строки из таблицы custome rs, для которой значение в столбце custome г_

id равно 2:

П SELECT *

FROM customers

32 Глава 2

WHERE customer_id = 2;

CUSTOMER_ID FIRST_NAME LAST_NAME DOB PHONE

2 Cynthia Green 05-FEB-68 800-555-1212

Идентификаторы строк

Каждая строка в базе данных Oracle имеет уникальный идентификатор

строки (или rowid), который используется внутри базы данных Oracle для

хранения физического адреса строки. Идентификатор строки - это 18-

значное число, которое представлено как число по основанию 64. Если в

операторе SELECT указать в списке столбцов имя R0WID, то можно увидеть

значения этого столбца для каждой строки. Представленный в следующем

примере запрос производит выборку столбцов R0WID и customer id из таблицы

customers. В этом примере в выходных данных использовано основание

64.

□ SELECT ROWID, customer_id

FROM customers;

ROWID OUSTOMER_ID

AAAF4yAABAAAHeKAA 1

AAAF4yAABAAAHe KAB 2

AAAF4yAABAAAHeKAC 3

AAAF4yAABAAAHeKAD 4

AAAF4yAABAAAHeKAE 5

При описании таблицы с помощью команды DESCRIBE столбец R0WID не

появляется в выходных данных команды, так как он используется базой

данных только внутри нее. R0WID принято называть псевдостолбцом. В следующем

примере описана таблица customers; обратите внимание, что R0WID

нет в списке:

□ DESCRIBE customers

Name N ull? Type

Ещё один псевдостолбец - это R0WNUM, который возвращает номер строки

в результирующем наборе. Первая строка, возвращаемая запросом, имеет