выполнив следующий оператор 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 переводит названия
этих товаров на нижний регистр: