В таблицу можно вводить данные, полученные в результате запроса к другой таблице, воспользовавшись комбинацией операторов INSERT и SELECT. Коротко говоря,
Синтаксис оператора для ввода данных из одной таблицы в другую следующий:
insert into имя_схемы.имя_таблицы [('столбец!', 'столбец2')] select [*|('столбец!', 'столбец2')] from имя_таблицы
[where условия] ;
Здесь вы видите три новых ключевых слова SELECT, FROM и WHERE. SELECT является основной командой для построения запросов в SQL. С помощью FROM в запросе указываются имена таблиц, в которых необходимо отыскать данные. С помощью WHERE в запросах задаются условия, определяющие суть запроса. Таким условием может быть, например, WHERE NAME = 'SMITH'. Использование этих трех ключевых слов подробно обсуждается в ходе уроков 7 и 8.
В следующем примере используется простой запрос, чтобы увидеть все данные таблицы PRODUCTS_TBL. Здесь SELECT * говорит серверу базы данных, что необходимо получить информацию из всех столбцов таблицы. А отсутствие ключевого слова WHERE означает, что необходимо показать все записи таблицы.
select * from products_tbl;
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
222 ПЛАСТИКОВЫЕ ТЫКВЫ 7.75
13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1
90 ФОНАРИ 14.5
15 КОСТЮМЫ В АССОРТИМЕНТЕ 10
9 СЛАДКАЯ КУКУРУЗА 1.35
6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45
87 ПЛАСТИКОВЫЕ ПАУКИ 1.05
119 МАСКИ В АССОРТИМЕНТЕ 4.95
1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95
2345 ПОЛОЧКА ИЗ ДУБА 59.99
11 строк выбраны.
Теперь данные, полученные в результате этого запроса, введем в таблицу PRODUCTS TMP. Вы увидите, что в этой временной таблице будут созданы 11 строк.
INSERT INTO PRODUCTSJTMP
SELECT * FROM PRODOCTS_TBL;
11 строк создано,
Результат следующего запроса показывает все данные только что созданной таблицы PRODUCTSJTMP.
SELECT * FROM PRODUCTSJTMP;
PROD_ID PROD_DESC COST
Ц235 КОСТЮМ ВЕДЬМЫ 29.99
222 ПЛАСТИКОВЫЕ ТЫКВЫ 7.75
13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1
90 ФОНАРИ 14-5
15 КОСТЮМЫ В АССОРТИМЕНТЕ 10
9 СЛАДКАЯ КУКУРУЗА 1.35
6 ТЫКВЕННЫЕ КОНФЕТЫ 1-45
87 ПЛАСТИКОВЫЕ ПАУКИ 1.05
119 МАСКИ В АССОРТИМЕНТЕ 4.95
1234 ЦЕПОЧКА ДПЯ КЛЮЧЕЙ 5.95
2345 ПОЛОЧКА ИЗ ДУБА 59.99
11 строк выбраны.
Ввести значение NULL в таблицу просто. Это бывает нужно, в частности, когда значение соответствующего столбца не известно. Например, не каждый человек имеет пейджер, и было бы некорректно вводить для этих людей неверные номера пейджера - не говоря уж о напрасном расходовании дискового пространства. Значение NULL можно ввести в столбец с помощью ключевого слова NULL.
Синтаксис оператора для ввода значения NULL следующий.
insert into имя_схемы.имя_таблицы
values ('значение!', NULL, 'значениеЗ'};
В результате в соответствующий столбец таблицы будет введено значение NULL. Столбец, в который вводится NULL, не будет содержать данных. В рамках вышеприведенного синтаксиса значение NULL будет введено на место второго столбца.
Рассмотрим следующие два примера.
INSERT INTO ORDERS_TBL
(ORD_NUM,CUST_ID,PROD_ID,QTY,ORD_DATE) VALUES ('23A16','109','7725',2,NULL);
1 строка создана.
Здесь в списке столбцов перечислены все столбцы таблицы ORDERS_TBL. В столбец ORD_DATE вводится значение NULL, означающее, что дата заказа в данный момент либо не известна, либо не доступна.
INSERT INTO ORDERSJTBL
VALUES ('23A16',409','7725',2, 1');
1 строка создана.
Использованный в этом примере оператор отличается от оператора из первого примера, но результаты их выполнения одинаковы Обратите внимание на то, что здесь, во-первых, отсутствует список столбцов - он не обязателен, если данные'вводятся во все столбцы таблицы. Во-вторых, вместо ввода в последний столбец значения NULL, вводятся ' ' (два идущие подряд знака кавычек), что тоже символизирует значение NULL (ввиду отсутствия чего бы то ни было между ними).
Уже существующие в таблице данные можно изменить с помощью команды UPDATE. Команда UPDATE не добавляет новых записей в таблицу и не удаляет их, а только дает возможность изменить данные. С помощью одной такой команды можно изменить данные только одной таблицы, но одновременно можно менять данные нескольких столбцов. Одним таким оператором можно изменить и одну строку данных и целый набор строк.
В своей простейшей форме оператор UPDATE изменяет один столбец таблицы. При изменении одного столбца можно изменить и только одну запись, и сразу несколько Синтаксис оператора для изменения данных в одном столбце следующий
update имя_таблицы