193
•
Название отделения, в котором был открыт счет («Quincy Branch»)
•
Имя и фамилия операциониста, открывшего счет («Frank Portman»)
Прежде чем можно будет создать строку в таблице
account
, понадобит
ся найти значения ключей всех этих элементов данных, чтобы запол
нить столбцы внешних ключей таблицы
account
. Сделать это можно
двумя способами: выполнить четыре запроса для извлечения значений
первичных ключей и поместить эти значения в выражение
insert
или
получить значения четырех ключей с помощью подзапросов внутри
выражения
insert
. Вот пример второго подхода:
INSERT INTO account
(account_id, product_cd, cust_id, open_date, last_activity_date,
status, open_branch_id, open_emp_id, avail_balance, pending_balance)
VALUES (NULL,
(SELECT product_cd FROM product WHERE name = 'savings account'),
(SELECT cust_id FROM customer WHERE fed_id = '555555555'),
'20050125', '20050125', 'ACTIVE',
(SELECT branch_id FROM branch WHERE name = 'Quincy Branch'),
(SELECT emp_id FROM employee WHERE lname = 'Portman' AND fname = 'Frank'),
0, 0);
Единственное SQLвыражение позволяет вам одновременно создать
строку в таблице
account
и найти четыре значения столбцов внешнего
ключа. Однако у этого подхода есть один недостаток. Если с помощью
подзапросов заполнять столбцы, допускающие значения
null
, выраже
ние выполнится успешно, даже если один из подзапросов не возвратит
значение. Например, если в четвертом подзапросе в имени Frank Port
man сделана опечатка, строка в таблице
account
будет все равно созда
на, но столбцу
open_emp_id
будет присвоено значение
null
.
Краткий обзор подзапросов
В этой главе рассмотрено множество тем, поэтому, пожалуй, не лишне
вкратце повторить их. Примеры данной главы продемонстрировали
подзапросы, которые:
Достарыңызбен бөлісу: |