Объединение таблиц

Содержание

Слайд 2

Синтаксис операции объединения таблиц SELECT список_выбора FROM таблица_1, таблица_2[, …, таблица_N]

Синтаксис операции объединения таблиц
SELECT список_выбора
FROM таблица_1, таблица_2[, …, таблица_N]
WHERE [таблица_1].столбец


оператор_объединения
[таблица_2].столбец
AND …другие_условия…
Если столбцы, по которым выполняется объединение, имеют одинаковые имена, то в списке_выбора и в предложении WHERE нужно указать соответствующие им таблицы
Слайд 3

Типы объединения таблиц EQUIJOIN NONEQUIJOIN OUTER JOIN SELF JOIN CROSS JOINS

Типы объединения таблиц
EQUIJOIN
NONEQUIJOIN
OUTER JOIN
SELF JOIN
CROSS JOINS
NATURAL JOINS
USING CLAUSE
Full or two sided

OUTER JOINS
Arbitrary JOIN conditions for OUTER JOINS
Слайд 4

EQUIJOIN – объединение по равенству (простое объединение) Синтаксис этого объединения: SELECT

EQUIJOIN – объединение по равенству
(простое объединение)
Синтаксис этого объединения:
SELECT TABLE1.COLUMN, TABLE2.COLUMN
FROM

TABLE1, TABLE2
WHERE TABLE1.COLUMN = TABLE2.COLUMN
Для объединения N-таблиц необходимо как минимум
(N-1) условие.
Слайд 5

Основные моменты объединения: Желательно возле имя столбца в разделе SELECT указывать

Основные моменты объединения:
Желательно возле имя столбца в разделе SELECT указывать
также

имя (аллиас - синоним)
2. Если в разных таблицах используется одно и тоже имя
столбца, то необходимо в качестве префикса указать имя
используемой таблицы или её аллиас
Св-ва аллиаса:
Длина названия не должна превышать 30 символов
Аллиасы должны быть подобраны со смысловой нагрузкой
Аллиасы допустимы лишь для текущего запроса
Пример объединения по равенству:
SELECT T1.COLUMN, T2.COLUMN
FROM TABLE1 T1, TABLE2 T2
WHERE T1.COLUMN = T2.COLUMN
Слайд 6

NONEQUIJOIN – объединение по неравенству Образуется объединением столбцов при помощи любого

NONEQUIJOIN – объединение по неравенству
Образуется объединением столбцов при помощи любого
оператора(LIKE,

BETWEEN, IN, >, <, >=, <=)
соединения отличным от знака равенства
OUTER JOINS – внешнее соединение
Можно получить строки, которые нельзя получить из-за
отсутствия соответствующих строкв другой таблице
Этот механизм реализован при помощи операнда (+), который
ставится после имени столбца таблицы, в которой есть
недостаток строк.
(+) – можно ставить только в одной части выражения
SELECT table1.column, table2.column FROM table1, table2
WHERE table1.column(+) = table2.column
Слайд 7

SELF JOIN – самообъединение SELECT allias1.column, allias2.column FROM table1 allias1, table1 allias2 WHERE allias1.column = allias2.column

SELF JOIN – самообъединение
SELECT allias1.column, allias2.column
FROM table1 allias1, table1 allias2
WHERE

allias1.column = allias2.column
Слайд 8

Объединения таблиц при помощи SQL стандарта ANSI SELECT table1.column, table2.column FROM

Объединения таблиц при помощи SQL стандарта ANSI
SELECT table1.column, table2.column FROM table1
[CROSS

JOIN table2]|
[NATURAL JOIN table2]|
[JOIN table2 USING(column_name)]|
[JOIN table2 ON
(table1.column_name = table2.column_name)]|
[INNER|{LEFT|RIGHT|FULL} JOIN table2 ON
(table1. column_name = table2.column_name)];
Слайд 9

Таблица CITY (Города) Таблица Person (Люди) INNER JOIN – оператор внутреннего

Таблица CITY (Города) Таблица Person (Люди)

INNER JOIN – оператор внутреннего соединения
SELECT

* FROM Person INNER JOIN City ON Person.CityID = City.ID
Результат:
Слайд 10

LEFT OUTER JOIN – оператор левого внешнего соединения, соединяет две таблицы.

LEFT OUTER JOIN – оператор левого внешнего соединения,
соединяет две таблицы.
Порядок

таблиц важен, т.к. оператор не является симметричным.
SELECT * FROM Person
LEFT OUTER JOIN City ON Person.CityID = City.ID
Результат:
Слайд 11

RIGHT OUTER JOIN – оператор правого внешнего соединения соединяет две таблицы

RIGHT OUTER JOIN – оператор правого внешнего соединения
соединяет две таблицы
Порядок

таблиц – важен.
SELECT * FROM Person
RIGHT OUTER JOIN City ON Person.CityID = City.ID
Результат:
Слайд 12

FULL OUTER JOIN – оператор полного внешнего соединения соединяет две таблицы

FULL OUTER JOIN – оператор полного внешнего соединения
соединяет две таблицы
Порядок

таблиц – не важен.
SELECT * FROM Person
FULL OUTER JOIN City ON Person.CityID = City.ID
Результат: