Использование SQL для выбора данных из информационных систем. Синтаксическая диаграмма оператора SELECT.
Синтаксическая диаграмма оператора, показанная на рисунке 13.1, представляет собой описание его конструкции, дает представление о том, какие элементы могут содержаться в операторе и в каком порядке они могут следовать друг за другом.Как видно из рисунка 13.1, оператор SELECT может состоять из шести предложений, только два из которых являются обязательными (SELECT и FROM). Необязательные предложения следует записывать в том порядке, как указано на рисунке 13.1: WHERE, GROUP BY, HAVING, ORDER BY. Предложение SELECT содержит список возвращаемых столбцов.Предложение FROM содержит список источников данных, необходимых для получения конечного результата.Предложение WHERE служит для отбора строк из указанных в предложении FROM источников, удовлетворяющих заданному условию.Предложение GROUP BY позволяет сформировать из строк группы по одинаковым значениям в указанных столбцах группировки. Группировка строк используется в итоговых запросах (будут рассмотрены позже).Предложение HAVING служит для отбора групп строк, сформированных предложением GROUP BY.Предложение ORDER BY позволяет отсортировать результаты запроса.
Примечание. Очень часто в различных предложениях оператора SELECT могут использоваться так называемые выражения. В качестве выражения могут выступать имена столбцов таблиц, константы, а также их комбинации с математическими действиями.
Предложения SELECT и FROM оператора SELECT языка SQL. Оформление таблицы результатов запроса. Соединение таблиц в операторе FROM. Способы соединения таблиц.
Предложение SELECT После служебного слова SELECT перечисляются имена столбцов, значения которых будут входить в результат выполнения запроса. Столбцы в результирующей таблице размещаются в том порядке, в котором они были указаны в предложении SELECT. Имена столбцов указываются через запятую. Если имя столбца содержит пробелы или разделители, то его необходимо заключить в квадратные скобки. При обработке данных из разных таблиц может возникнуть ситуация, когда столбцы разных таблиц имеют одинаковые имена. В этом случае имя столбца необходимо записывать как составное, указывая перед ним имя соответствующей таблицы: <Имя таблицы>.<Имя столбца> Предложение FROM В предложении FROM перечисляются имена таблиц, которые содержат столбцы, указанные после слова SELECT.
Соединение таблиц – это набор результатов от операции соединения, выполненной над двумя или несколькими таблицами. При выполнении соединения имена таблиц перечисляются в предложении запроса FROM, результатом запроса будет декартово произведение таблиц, т.к. не определены связи между таблицами. SELECT список_полей
FROM таблица_1 , таблица_2
15. Предложение WHERE оператора SELECT языка SQL. Условия отбора строк. Проверки простого и многократного сравнения, проверка на принадлежность диапазону значений,
Предложение WHERE содержит предикат, который может включать одно или несколько выражений и принимать одно из трех значений: TRUE, FALSE или UNKNOWN. Сравнение значения NULL с другим значением (в том числе и NULL) дает результат UNKNOWN. Другие значения сравниваются в соответствии с последовательностями сортировки для строк текста, с порядком числовых значений для числовых типов, хронологическим порядком для данных типа дата-время или по величине значения (для данных типа INTERVAL). Сравнения осуществляются с помощью операторов =, <, <=, >, >= и <> (не равно). Применение таких операторов, как * (умножение) или | (конкатенация), зависит от типа данных. В большинстве случаев вместо простых выражений можно использовать конструкторы значений строк.
B BETWEEN A AND CЭто выражение эквивалентно: (A<=B) AND (B<=C). ПараметрA должен быть меньшеC. ВыражениеB BETWEEN С AND A будет интерпретироваться как (C<=B) AND (B<=A), и оно имело бы значениеFALSE при значении выражения (A<=B) AND (B<=C) равномTRUE, за исключением случая, когда все три величины одинаковы. Если один из параметров равенNULL, значение предиката не определено.
A IN (C, D, …)Это выражение будет истинным, если A равняется одному из значений, включенных в список.
A LIKE ‘строка’В этом случае подразумевается, что A – строка символов, и операция заключается в поиске указанной подстроки. При этом можно использовать строку фиксированной длины или строку с шаблоном подстановки.
AISNULLЭто выражение проверяет, является ли A значением NULL, В отличие от большинства других предикатов результат данного предиката может быть только TRUE или FALSE (не UNKNOWN).
Aоператор_сравненияSOME|ANYподзапросSOME и ANY имеют одинаковый смысл. Результатом подзапроса является набор величин. Если для какого-нибудь значения X, получаемого из подзапроса, результат операции «А оператор_сравненияX» равняется TRUE, то предикат ANY также равен TRUE.
Aоператор_сравненияALLподзапросИсполняется так же, как и ANY, но для всех значений X, получаемого из подзапроса, результат операции «А оператор_сравненияX» должен равняться TRUE.
EXISTS подзапросЕсли в результате подзапросанайдена хотя бы одна строка, предикат равняетсяTRUE, в противном случае –FALSE. Результат никогда не может бытьUNKNOWN. Это выражение имеет смысл только для зависимого подзапроса.
UNIQUE подзапросЕсли подзапросне находит идентичных строк, то значениеUNIQUE равняетсяTRUE, в противном случае –FALSE. В этом предикате подразумевается, что идентичные строки не содержат значенияNULL. В противном случае строки не идентичны.