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

выполнив следующий оператор SELECT:

П SELECT *

FROM customers;

CUST0MER_ID FIRST_NAME LAST_NAME DOB PHONE

1 John Brown 0 1 - JAN-6 5 80 0-5 5 5-1 21 1

2 C y n t h ia Green 0 5 -F E B -6 8 80 0 -5 5 5 -1 2 1 2

3 S te v e Wh ite 16-MAR-71 8 0 0 -5 5 5 -1 2 1 3

4 G a i l B la c k 8 0 0 -5 5 5 -1 2 1 4

5 Doreen B lu e 20-MAY-70

6 Fred Brown 0 1 - JAN-7 0 8 0 0 -5 5 5 -1 2 1 5

Обратите внимание: в таблицу была добавлена новая строка.

Пропуск списка столбцов

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

можно опустить:

□ INSERT INTO c u s tom e r s

VALUES ( 7 , ’ J a n e ’ , ‘ G r e e n ’ , ‘ 01 - JA N -1 9 7 0 ’ , ‘ 8 0 0 -5 5 5 - 1 2 1 6 ’ );

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

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

данных команды DESCRIBE.

Задание пустого значения для столбца

Используя ключевое слово NULL, можно задать пустое значение для столбца.

Следующий оператор INSERT задаёт пустое значение для столбцов dob

и phone:

□ INSERT INTO c u s tom e r s

VALUES (8, ‘ S o p h i e ’ , ‘ W h i t e ’ , NULL, NULL);

Если просмотреть эту строку с помощью запроса, в ней не будет значений

для столбцов dob и phone, потому что они содержат пустые значения:

□ SELECT *

FROM customers

WHERE customer_id = 8;

CUST0MER_ID FIRST_NAME LAST_NAME DOB PHONE

8 S o p h ie Wh i te

Обратите внимание на пробелы в столбцах dob и phone.

264 Глава 8

Включение в значения столбца одинарных и двойных кавычек

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

Следующий оператор INSERT задает для фамилии нового покупателя значение

O'Malley; обратите внимание на использование в фамилии двух одиночных

кавычек после буквы О:

□ INSERT INTO c u s tom e r s

VALUES(9, ‘ K y l e ’ , ‘ 0 ” M a l l e y ’ , NULL, NULL);

В следующем примере для нового товара задаётся название The “Great”

Gatsby ( “Великий Гэтсби”):

□ INSERT INTO p r o d u c t s (

p r o d u c t _ id , p r o d u c t _ t y p e _ id , name, d e s c r i p t i o n , p r i c e

) VALUES (

13, 1, ‘ The “ G r e a t ” G a t s b y ’ , NULL, 1 2 .9 9

);

Копирование строк из одной таблицы в другую

Можно копировать строки из одной таблицы в другую, используя для этого

запрос вместо списка значений столбцов в операторе INSERT. Число и

типы столбцов таблицы-источника и целевой таблицы должны совпадать.

Следующий пример иллюстрирует использование оператора SELECT для

извлечения столбцов first_name и last_name для покупателя № 1 и передачи

этих значений в оператор INSERT:

□ INSERT INTO c u s tom e r s ( c u s t om e r _ id , f i r s t _ n am e , la s t_ n ame )

SELECT 10, f i r s t _ n am e , la s t_ n ame ,

FROM c u s tom e r s

WHERE c u s t om e r _ id = 1;

Обратите внимание: значение столбца c u s tome r i d для новой строки устанавливается

на 10 .

Примечание В 0racle9i появился новый оператор MERGE, позволяющий сливать строки из

одной таблицы с другими. Для копирования строк из одной таблицы в другую оператор MERGE

намного более гибок, чем комбинация операторов INSERT и SELECT. Более подробно об операторе

MERGE см. ниже в разделе «Слияние строк с использованием MERGE».

Модификация строк с использованием оператора UPDATE

Оператор UPDATE используется для изменения строк в таблице. Обычно

при использовании оператора UPDATE указывается следующая информация:

■ Таблица, содержащая подлежащие обновлению строки

■ Фраза WHERE, которая определяет, какие именно строки подлежат изменению

■ Список названий столбцов вместе с их новыми значениями, заданными

с помощью фразы SET

Изменение содержимого таблиц 265

Используя один оператор UPDATE, можно изменить значения нескольких

строк. Если задано более одной строки, одни и те же изменения будут

применены для всех указанных строк. Следующий оператор UPDATE обновляет

столбец last_name, изменяя его значение на Orange для тех строк, в

которых c u s tom e r _ id равно 2 :

□ UPDATE c u s tom e r s

SET la s t_ n ame = ‘ O ra n g e ’

WHERE c u s tom e r _ id = 2;

1 row updated.

SQI?Plus подтверждает, что была обновлена одна строка. Если опустить

фразу WHERE, будут обновлены все строки таблицы. Фраза SET используется в

операторе UPDATE для указания столбца и его нового значения. Следующий

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

□ SELECT *

FROM customers

WHERE customer_id = 2;

CUSTOMER_ID FIRSTlNAME LAST_NAME DOB PHONE

2 C y n t h ia Orange 0 5 -F E B -6 8 8 0 0 -5 5 5 -1 2 1 2

С помощью одного оператора UPDATE можно изменить несколько строк

и несколько столбцов. Следующий оператор UPDATE повышает на 20 процентов

цену на все товары, цена которых в настоящий момент равна или

превышает $20. Кроме того, этот же оператор UPDATE переводит названия

этих товаров на нижний регистр: