CUST ID CUST NAME CUST ADDRESS CUST CITY CUST STATE CUST ZIP CUST PHONE CUST_FAX | VARCHAR2 (10) VARCHAR2 (30) VARCHAR2 (20) VARCHAR2 (15) CHAR ( 2 ) NUMBER (5) NUMBER (10) NUMBER (10) | NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL | Ключевое поле |
ORD NUM CUST ID PROD ID QTY ORD DATE | VARCHAR2 (10) VARCHAR2 (10) VARCHAR2(10) NUMBER (6) DATE | NOT NULL NOT NULL NOT NULL NOT NULL | Ключевое поле |
PROD ID PROD DESC COST | VARCHAR2 (10) VARCHAR2 (40) NUMBER (6, 2) | NOT NULL NOT NULL NOT NULL | Ключевое поле |
1. Запишите оператор SQL, возвращающий EMP_ID, LAST_NAME и FIRST NAME из таблицы EMPLOYEE_TBL; SALARY и BONUS из таблицы EMPLOYEE_PAYJTBL.
2. Выберите из таблицы CUSTOMERS_TBL столбцы CUST_ID и CUST "NAME из таблицы PRODUCTS_TBL - столбцы PROD_ID и COST, а из таблицы ORDERS_TBL - ORD_NUM и QTY. Объедините три эти таблицы в одном оператопе SOL.
14-й час Использование подзапросов
В ходе этого урока мы ознакомимся с концепцией использования подзапросов, делающих работу с базой данных более эффективной Основными на этом уроке будут следующие темы.
• Что такое подзапрос?
• Выравнивание выводимых данных с помощью подзапросов
• Примеры типичных подзапросов к базе данных
• Использование подзапросов с операторами языка манипуляций данными
• Вложенные подзапросы
В некоторых случаях подзапрос можно использовать вместо связывания таблиц, тем самым связывая данные таблиц неявно. При использовании в запросе подзапроса сначала выполняется подзапрос, а только потом - содержащий его запрос, причем с учетом условий выполнения подзапроса. Результаты выполнения подзапроса используются при обработке условий в выражении ключевого слова WHERE основного запроса Подзапрос можно использовать либо в выражении ключевого слова WHERE, либо в выражении ключевого слова HAVING главного запроса. Логические операции и операции сравнения типа =, >, <, о, IN, NOT IN, AND, OR и т п. можно использовать как в подзапросе, так и для обработки результатов подзапроса в выражениях ключевых слов WHERE и HAVING.
Все, что применимо к обычному запросу, применимо и к подзапросу Операции связывания, функции, преобразования данных и многое другое можно использовать и в подзапросах
При составлении подзапросов необходимо придерживаться следующих правил.
• Подзапрос необходимо заключить в круглые скобки.
• Подзапрос может ссылаться только на один столбец в выражении своего ключевого слова SELECT, за исключением случаев, когда в главном запросе используется сравнение с несколькими столбцами из подзапроса.
• Ключевое слово ORDER BY использовать в подзапросе нельзя, хотя в главном запросе ORDER BY использоваться может. Вместо ORDER BY в подзапросе можно использовать GROUP BY.
• Подзапрос, возвращающий несколько строк данных, можно использовать только в операторах, допускающих множество значений, например в IN.
• В списке ключевого слова SELECT не допускаются ссылки на значения типа
BLOB, ARRAY, CLOB ИЛИ NCLOB.
• Подзапрос нельзя непосредственно использовать как аргумент допускающей множество значений функяии.
• Операцию BETWEEN по отношению к подзапросу использовать нельзя, но ее можно использовать в самом подзапросе. Базовый синтаксис оператора с подзапросом выглядит следующим образом.
SELECT имя_столбиа
FROM таблица
WHERE имя_столбца = (SELECT имя__столбца
FROM таблица
WHERE условия);
Обратите внимание на отступы в примерах Отступы используются исключительно в целях оформления. Практика показывает, что чем аккуратнее выглядят операторы SQL, тем проще они для понимания и тем легче искать и исправлять в них ошибки, если таковые вдруг обнаруживаются.
Рассмотрим примеры правильного и неправильного использования операции BETWEEN в операторе с подзапросом.
Вот пример правильного использования BETWEEN:
SELECT имя_столбца
FROM таблица
WHERE имя_столбца ОПЕРАЦИЯ (SELECT имя_столбца
FROM таблица
WHERE значение BETWEEN значение);
Вот пример неправильного использования BETWEEN:
SELECT имя_столбца FROM таблица
WHERE имя_столбца BETWEEN значение AND (SELECT имя_столбца
FROM таблица);