Ключевое слово left [outer]. При использовании ключевого слова left в результат будут включены все строки левой таблицы, независимо от того, есть для них соответствующая строка в правой таблице или нет. В случае отсутствия строки в правой таблице для столбцов правой таблицы, включенных в результат выборки, устанавливается значение null. В приведенном ниже примере иллюстрируется использование ключевого слова left [OUTER] для выборки данных.
SELECT Наименование, Семестр, Отчетность FROM Дисциплины LEFT OUTER JOIN Учебный_план ON Учебный_план.ID_Дисциплина = Дисциплины.ID_Дисциплина WHERE (Наименование LIKE '%информатик%')
Будет возвращен набор строк, изображенный на рис. 4.11.
Рис. 4.11. Использование ключевого слова LEFT [OUTER]. Все дисциплины, названия которых содержат подстроку «информатик»
Как видно, по сравнению с использованием ключевого слова inner в результат запроса добавлена строка из таблицы дисциплины, которая удовлетворяет сформулированному условию отбора, но для которой не существует соответствующей строки в таблице Учебный_план. В столбцах Семестр и Отчетность (относящихся к таблице Учебный_план) для этих строк установлено значение null.
Ключевое слово RIGHT [OUTER]. При использовании этого ключевого слова в результат будут включены все строки правой таблицы, независимо от того, есть ли для них соответствующая строка в левой таблице. Для соответствующих столбцов левой таблицы, включенных в запрос, устанавливается значение null. Приведем пример такого запроса:
SELECT Отчетность, Семестр, Наименование
FROM Учебный_план RIGHT OUTER JOIN Дисциплины
ON Учебный_план.ID_Дисциплина =
Дисциплины.ID_Дисциплина
WHERE (Наименование LIKE '%информатик%')
Этот пример основывается на тех же данных, что и предыдущий, но связь таблиц устанавливается в обратном порядке. После выполнения приведенной инструкции будет получен следующий результат (рис. 4.12).
Рис. 4.12. Использование ключевого слова right [OUTER]. Связь таблиц Дисциплины и Учебный_план
Ключевое слово full [OUTER]. При использовании ключевого слова full в результат будут включены все строки как правой, так и левой таблиц. Применение ключевого слова full [outer] можно рассматривать как одновременное применение ключевых слов left [outer] и right [outer] .
Раздел WHERE
Раздел where предназначен для наложения вертикальных фильтров на данные, обрабатываемые запросом. Другими словами, с помощью раздела where можно сузить набор строк, включаемых в результат выборки. Для этого указывается логическое условие, от которого зависит, будет ли строка включена в выборку по запросу или нет. Строка включается в результат выборки, только если логическое выражение возвращает значение TRUE.
В общем случае логическое выражение содержит имена столбцов таблиц, с которыми работает запрос. Для каждой строки, возвращенной запросом, вычисляется логическое выражение путем подстановки вместо имен столбцов конкретных значений из соответствующей строки. Если при вычислении выражения возвращается значение true, т. е. выражение истинно, то строка будет включена в конечный результат. В противном случае строка в результат не включается. При необходимости можно указать более одного логического выражения, объединив их с помощью логических операторов or и and.
Рассмотрим синтаксис раздела where:
WHERE <условие отбора> | <имя столбца> {= | *= | =*} <имя_столбца>
В конструкции <условие_отбора> можно определить любое логическое условие, при выполнении которого строка будет включена в результат. Хотя и было сказано, что обычно логическое условие содержит имена столбцов, оно может быть и произвольным, в том числе и совсем не связанным с данными. Например, в следующей команде условие where никогда не выполнится и ни одна строка не будет возвращена:
SELECT * FROM Дисциплины WHERE 3=5
Приведенный пример демонстрирует логику работы раздела where. Более удачное использование логического условия приведено в следующем примере:
SELECT Фамилия, Имя, Отчество, Номер_Группы,
Год_поступления
FROM Студенты
WHERE Год_поступления < 2000
В результате будет возвращен список всех студентов, поступивших на факультет ранее 2000 г. (рис. 4.13).
Рис. 4.13. Логика раздела where. Студенты, поступившие на факультет ранее 2000 г.
Помимо операций сравнения (=, >, <, >=, <=) и логических операторов or, and, not при формировании условия отбора могут быть использованы дополнительные логические операторы, расширяющие возможности по управлению данными. Рассмотрим некоторые из этих операторов.
Достарыңызбен бөлісу: |