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

номер строки 1, вторая - номер 2 и так далее. Например, следующий

запрос включает R0WNUM при получении строк из таблицы customers:

□ SELECT ROWNUM, customer_id, first_name, last_name

FROM customers;

CUSTOMER_ID

FIRST_NAME

LAST_NAME

DOB

NOT NULL NUMBER(38)

NOT NULL VARCHAR2(10)

NOT NULL VARCHAR2(10)

PHONE

DATE

VARCHAR2(12)

Номера строк

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

ROWNUM CUSTOMER_ID FIRST_NAME LAST_NAME

1 1 John Brown

2 2 Cynthia Green

3 3 Steve White

4 4 G a il Black

5 5 Doreen Blue

Вот ещё один пример:

□ SELECT ROWNUM, customer_id, first_name, last_name

FROM customers

WHERE customer_id = 3;

ROWNUM CUSTOMER_ID FIRST_NAME LAST_NAME

1 3 Steve White

Выполнение арифметических операций

Oracle позволяет выполнять в операторах SQL арифметические действия,

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

операторы: сложение, вычитание, умножение и деление. Арифметические

выражения состоят из двух операндов - чисел или дат - и

арифметического оператора. В приведенной ниже таблице приведены

эти четыре арифметических оператора:

Оператор Описание

+ Сложение

Вычитание

* Умножение

/ Деление

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

(* ) для вычисления произведения чисел 2 и 6 (числа 2 и б являются

операндами):

□ SELECT 2*6

FROM dual;

2*6

12

Как видно из этого примера, на экране отображается правильный результат

- 12. Использование в этом операторе SQL конструкции 2*6 является

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

комбинацию столбцов, литералов и операторов.

Арифметические действия с датами

Операторы сложения и вычитания можно использовать с датами. Например,

можно прибавить к дате число, представляющее количество дней.

34 Глава 2

В следующем примере к дате 25 июля 2007 года прибавляется 2 дня, а получающаяся

в результате дата выводится на экран:

□ SELECT T0_DATE('25—JUL—2007') + 2

FROM dual;

T0_DATE(

27-JUL-07

Примечание Использованная в операторе конструкция T0_DATE() является функцией, конвертирующей

строку в дату (подробнее см. в главе 5).

Таблица dual

Следует обратить внимание на использование в предыдущем примере

таблицы dual. Я уже упоминал таблицу dual в предыдущей главе - это

таблица, содержащая всего одну строку. Приведенные ниже выходные

данные команды DESCRIBE знакомят вас со структурой таблицы dual, а

оператор SELECT показывает строку из таблицы duaclass="underline"

DESCRIBE dual;

Name N ull? Type

DUMMY VARCHAR2(1)

SELECT *

FROM dual;

D

X

Следует обратить внимание, что в таблице dual всего один столбец

VARCHAR2, который называется DUMMY (пустышка), где хранится всего одна

строка со значением X.

В следующем примере из даты 2 августа 2007 г. вычитаются три дня:

□ SELECT T0_DATE('02-AUG-2007') - 3

FROM dual;

T0_DATE('

30-JUL-07

Можно также вычитать одну дату из другой, что даст количество дней

между этими двумя датами. В следующем примере из даты 2 августа 2007 г.

вычитается дата 25 июля 2007 г.:

□ SELECT T0_DATE('02-AUG-2007') - T0_DATE('25-JUL-2007')

FROM dual;

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

TO_DATE(' 02-AUG-2007’ ) - ТО_ОАТЕ(' 25-JUL-2007')

8

Использование столбцов в арифметических действиях

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

быть столбцами таблицы. В следующем примере из таблицы products

выбираются столбцы name и price. Обратите внимание, что к столбцу

p r ice при помощи оператора сложения (+) прибавляется число 2, в результате

получается выражение p r ic e + 2.

SELECT name, price + 2

FROM products;

NAME PRICE + 2

Modern Science 21.95

Chemistry 32

Supernova 27.99

Tank War - ' 15.95

Z F i le s 51.99

2412: The Return 16.95

Space Force 9 15.49

From Another Planet 14.99

C la s s i c a l Music 12.99

Pop 3 17.99

C re a tive Y e l l 16.99

My Front Line 15.49

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

примере значение столбца p r ic e умножается на 3, а затем к результату

прибавляется 1.

SELECT name, price * 3 + 1

FROM products;

NAME PRICE* 3+1

Modern Science 60.85

Chemistry 91

Supernova 78.97

Tank War 42.85

Z F i le s 150.97

2412: The Return 45.85

Space Force 9 41.47

From Another Planet 39.97

C la s s i c a l Music 33.97

Pop 3 48.97

C re a tive Y e l l 45.97

My Front Line 41.47

Обычные правила старшинства арифметических операций применимы

и в SQL: сначала выполняются операции умножения и деления, а за-

36 Глава 2

тем - сложения и вычитания. Если встречаются операции одного старшинства,

они выполняются слева направо. Например, в выражении