С какими типами данных можно использовать конструкцию IN в языке SQL?
С любыми перечислимыми типами данных; исключения, наверное, составляют CLOB, BLOB.
Если в списке IN будет некоторое значение, а в таблице его не будет, что произойдет в этом случае?
Будут выбраны только те значения, которые есть в списке IN.
Контрольные вопросы и задания для самостоятельного выполнения
1. Выбрать из таблицы AUTO, где REGNUM — 111114, 111115, 111116.
2. Выбрать из таблицы MAN * людей с именами (FIRSTNAME) Андрей, Максим, Алиса.
3. Выбрать из таблицы CITY * города (CITYNAME) Москва, Владимир, Казань.
4. Выбрать из таблицы CITY * города с кодами (CITYCODE) 1, 3, 5, 7.
Шаг 29. Объединение нескольких таблиц в запросе
Важным достоинством языка SQL является возможность вывести на экран данные в одном запросе сразу из нескольких таблиц.
Давайте рассмотрим записи из таблицы города CITY, записи из таблицы MAN нашей схемы.
Мы видим, что и в одной, и в другой таблице есть колонка «код города» (CITYCODE).
Рисунок 75. Связи между таблицами
Если посмотреть значения этой колонки (CITYCODE) и в той, и в другой таблице, то мы увидим, что числа, значения в этих колонках совпадают.
Например, в MAN есть записи с CITYCODE = 1 и в CITY есть записи CITYCODE = 1, то есть эта колонка является колонкой связи для таблиц CITY и MAN. По этим значениям мы можем выбрать данные из указанных таблиц, поэтому, используя эту колонку, мы можем извлечь данные из обоих таблиц.
Делается это следующим образом.
Первый вариант синтаксиса
Запомните, как объединяются таблицы в нашей схеме:
AUTO — > MAN = PHONENUM
CITY — > MAN = CITYCODE
Примеры
Объединим MAN и CITY по колонке CITYCODE, выведем значения всех колонок из этих таблиц *.
Рисунок 76. Запрос к таблицам CITY и MAN: объединение таблиц
Объединим MAN и CITY по колонке CITYCODE, выведем наименование и население (CITYNAME, PEOPLES) из таблицы CITY и имя и фамилию из таблицы MAN (FIRSTNAME, LASTNAME).
Рисунок 77. Объединение таблиц MAN, CITY
Этот синтаксис объединения двух таблиц является правильным, но существует еще и другая, более классическая форма записи для объединения двух таблиц — это объединение двух таблиц посредством конструкции JOIN.
Вариант синтаксиса c JOIN:
Пример
Объединим MAN и CITY по колонке CITYCODE, выведем все колонки из этих таблиц * с использованием JOIN.
Рисунок 78. Объединение таблиц MAN и CITY: запрос
Объединим MAN и CITY по колонке CITYCODE, выведем код, наименование и население из таблицы CITY и имя и фамилию из таблицы MAN, используем JOIN.
При объединении нескольких в таблиц в запросе необходимо обязательно учитывать наличие пустых (NULL) значений в объединяемых колонках, а также возможность выводить записи, значения которых есть в одной из таблиц в ключевых полях, а в другой нет. Такие объединения мы рассмотрим в следующем шаге.
Как объединить сразу три таблицы?
Несложно, вот пример.
Вывести данные из таблиц AUTO, CITY, MAN.
Рисунок 80. Объединение таблиц с JOIN
Или с JOIN:
Необходимы ли первичные ключи и вторичные ключи для объединения JOIN?
Желательны, но это не является обязательным условием.
Контрольные вопросы и задания для самостоятельного выполнения
1. Можно ли сделать объединение таблиц по нескольким полям?
2. Вывести все значения из таблицы MAN, из таблицы AUTO, объединить эти две таблицы посредством поля «номер телефона» (PHONENUM).
3. Вывести все значения из таблицы MAN, из таблицы CITY, объединить таблицы по коду города.
4. Вывести имя и фамилию из таблицы MAN, а также марку из таблицы AUTO, объединить две таблицы по номеру телефона (PHONENUM).
Шаг 30. Правое и левое объединение таблиц
В языке SQL существуют более сложные типы объединения таблиц. В этом шаге рассмотрим правое и левое объединение.
Если внимательно присмотреться, то можно заметить, что в таблице CITY есть коды городов, которых нет в таблице MAN.
Точно так же и в таблице MAN есть номера телефонов, которых нет в таблице AUTO.
А что если нам необходимо выбрать из таблицы CITY все записи, а из таблицы MAN только те записи, которые совпадают с таблицей CITY по коду города (CITYCODE)?
Разумеется, в запросе, который объединяет обе эти таблицы.
Для этого в SQL ORACLE диалекта предусмотрен синтаксис правого и левого объединения таблиц, или RiGHT JOIN и LEFT JOIN.
Читать дальше
Конец ознакомительного отрывка
Купить книгу