Раздел FROM
С помощью раздела FROM определяются источники данных, с которым будет работать запрос.
Синтаксис раздела FROM следующий:
FROM {<Источник_данных>}[,…, n]
в основном работа с разделом FROM- это перечисление через запятую источников данных, с которыми должен работать запрос.
Синтаксис: {<Источник_данных>::=<имя_таблицы>[[AS]<псевдоним_таблицы>]|<связка_таблиц>
Конструкция <связка_таблиц> реализует один из наиболее сложных методов задания источника данных. С помощью нее можно связать данные двух и более таблиц в единый набор данных, указав критерии связывания. Синтаксис конструкции <связка_таблиц> следующий:
<связка_таблиц>::=<левая_таблица><тип_связывания><правая_таблица>ON <условие_связывания>
Конструкция <тип_связывания> описывает тип связывания двух таблиц. Исходная таблица указывается слева от конструкции <тип_связывания> (<левая-таблица>), а справа указывается зависимая таблица (<правая_таблица>)
Общий синтаксис конструкции следующий:
|
|
<тип_связывания>::=[INNER | {{LEFT| RIGHT | FULL} [OUTER]}] JOIN
Обязательным является ключевое слово JOIN.
Конструкция ON<условие связывания> задает логическое условие связывания двух таблиц. Допустимы операторы сравнения (=, <,>,<=,>=,<>). Например
ON Учебный_план.ID_Дисциплина = Дисциплины.ID_Дисциплина.
В этом примере устанавливается связь между двумя таблицами «Учебный_план» и «Дисциплины» по столбцу ID_Дисциплина, имеющемуся в каждой из таблиц.
Этот тип связи используется по умолчанию. Указание словосочетания INNER JOIN равносильно указанию только ключевого слова JOIN. В качестве кандидатов на включение в результат запроса рассматриваются пары строк, удовлетворяющие критерию связывания в обеих таблицах. Затем строки из левой таблицы, для которых не имеется пары в связанной таблице, в результат не включаются. Также не включаются в результат и строки правой таблицы, для которых нет соответствующей строки в левой таблице.
Пример.
SELECT Наименование, Семестр, Количество_часов
FROM Учебный_план INNER JOIN Дисциплины ON
Учебный_план. ID_Дисциплина = Дисциплины.ID_Дисциплина
WHERE Количество_часов > 60
Ключевое слово LEFT [OUTER]
При использовании ключевого слова LEFT в результат будут включены все строки левой таблицы, независимо от того, есть для них соответствующая строка в правой таблице или нет. В случае отсутствия строки в правой таблице для столбцов правой таблицы, включенных в результат выборки, устанавливается значение NULL.
SELECT Наименование, Семестр, Отчетность
FROM Дисциплины LEFT OUTER JOIN Учебный_план ON
Учебный_план.ID_Дисциплина = Дисциплины.ID_Дисциплина
|
|
WHERE (Наименование LIKE ‘%информатик%’)
Ключевое слово RIGHT [OUTER]
При использовании ключевого слова RIGHT в результат будут включены все строки правой таблицы, независимо от того, есть для них соответствующая строка в левой таблице или нет. Для соответствующих столбцов левой таблицы, включенных в запрос, устанавливается значение NULL.
SELECT Отчетность, Семестр, Наименование
FROM Учебный_план RIGHT OUTER JOIN Дисциплины ON
Учебный_план.ID_Дисциплина = Дисциплины.ID_Дисциплина
WHERE (Наименование LIKE ‘%информатик%’)
Ключевое слово FULL [OUTER]
При использовании ключевого слова FULL в результат будут включены все строки как правой, так и левой таблицы. Применение ключевого слова FULL [OUTER] можно рассматривать как одновременное применение ключевых слов LEFT [OUTER} и RIGHT [OUTER].