W Cat - SQL за 24 часа
- Название:SQL за 24 часа
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - SQL за 24 часа краткое содержание
SQL за 24 часа - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Нет, но не следует забывать, что от порядка перечисления таблиц в выражении ключевого слова FROM и от порядка, в котором связаны таблицы, может зависеть скорость выполнения запроса.
При использовании связующей таблицы для связывания пары таблиц, не имеющих общих столбцов, обязательно ли выбирать в запросе хотя бы один из ее столбцов?
Нет, использование в операторе запроса связующей таблицы не обязывает отображать данные ее столбцов.
Можно ли связывать в запросе не один, а несколько столбцов таблиц?
Да, чтобы обеспечить необходимое соответствие данных, вполне вероятно, что в запросе может понадобиться связывание нескольких столбцов таблиц.
Задания практических занятий разделены на тесты и упражнения. Тесты предназначены для проверки общего уровня понимания рассмотренного материала. Упражнения дают возможность применить на практике идеи, обсуждавшиеся в ходе текущего урока, в комбинации с идеями из предыдущих уроков. Мы рекомендуем ответить на тестовые вопросы и выполнить упражнения прежде, чем продолжать дальнейшее чтение книги. Ответы можно проверить по Приложению Б, "Ответы".
1. Какой тип связывания таблиц используется в запросе тогда, когда необходимо извлечь записи одной таблицы независимо от наличия или отсутствия соответствующих записей в другой?
2. Какая часть оператора SQL задает условия связывания таблиц?
3. Какой тип связывания используется тогда, когда необходимо задать эквивалентность строк связываемых таблиц?
4. Что будет, если в запросе указать выборку из двух таблиц, но не связать их?
5. Рассмотрите следующие таблицы.
ORDERS_TBL
ORD_NUM VARCHAR2(10) NOT NULL Ключевое поле
CUST_ID VARCHAR2(10) NOT NULL
PROD_ID VARCHAR2(10) NOT NULL
QTY NUMBER(6) NOT NULL
ORD_DATE DATE
PRODUCTS TBL
PROD_ID VARCHAR2CLO) NOT NULL Ключевое поле
PROD_DESC VARCHAR2(40) NOT NULL
COST NUMBER (6,2) NOT NULL
Правильно ли составлен следующий оператор, если предполагалось внешнее связывание этих таблиц?
SELECT C.CUST_ID, C.CUST_NAME, О.ORD_NUM
FROM CUSTOMERJTBL С, ORDERS_TBL 0
WHERE C.CUST_ID{+) = O.CUST_ID(+)
Выполните упражнения для следующих таблиц.
EMPLOYEE TBL |
EMP ID VARCHAR2(9) NOT NULL Ключевое поле LAST NAME VARCHAR2(i5) NOT NULL FIRST NAME VARCHAR2(15) NOT NULL MIDDLE NAME VARCHAR2 ( 15 } ADDRESS VARCHAR2(30) NOT NULL CITY VARCHAR2(15) NOT NULL STATE CHAR (2) NOT NULL ZIP NUMBER (5) NOT NULL PHONE CHAR (10) PAGER CHAR (10) |
EMPLOYEE PAY TBL |
EMP ID VARCHAR2O) NOT NULL Ключевое поле POSITION VARCHAR2U5) NOT NULL DATE HIRE DATE PAY RATE NUMBER (4,2) NOT NULL DATE LAST-RAISE DATE SALARY NUMBER (6,2) BONUS NUMBER (4,2) |
CONSTRAINT EMP FK FOREIGN KEY (EMP ID) REFERENCED EMPLOYEE TBL (EMP ID) |
CUSTOMERS TBL |
|||
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 |
Ключевое поле |
ORDERS TBL |
|||
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 |
Ключевое поле |
PRODUCTS TBL |
|||
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 другого запроса с целью дополнительных ограничений на выводимые данные. Подзапросы называют также вложенными запросами. Подзапрос в содержащем его запросе используют для наложения условий на выводимые данные. Подзапросы могут использоваться с операторами SELECT, INSERT, UPDATE или DELETE.
В некоторых случаях подзапрос можно использовать вместо связывания таблиц, тем самым связывая данные таблиц неявно. При использовании в запросе подзапроса сначала выполняется подзапрос, а только потом - содержащий его запрос, причем с учетом условий выполнения подзапроса. Результаты выполнения подзапроса используются при обработке условий в выражении ключевого слова 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 в операторе с подзапросом.
Читать дальшеИнтервал:
Закладка: