Вы не говорите программному обеспечению системы управления базами
данных, как именно должен осуществляться доступ к требующейся информации.
Вы просто указываете, что желаете получить, а затем предоставляете
программному обеспечению самому решать, как это лучше сделать.
В более общем случае элементы, следующие за ключевым словом
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, который возвращает номер строки
в результирующем наборе. Первая строка, возвращаемая запросом, имеет