Операторы in, between, like, is NULL 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Операторы in, between, like, is NULL



При задании логического условия в предложении WHERE могут быть использованы операторы IN, BETWEEN, LIKE, ISNULL.

Операторы IN (равен любому из списка) и NOT IN (не равен ни одному из списка) используются для сравнения проверяемого значения поля с заданным списком. Этот список значений указывается в скобках справа от оператора IN.

Построенный с использованием IN предикат, считается истинным, если значение поля, имя которого указано слева от IN, совпадает (подразумевается точное совпадение) с одним из значений, перечисленных в списке.

Предикат, построенный с использованием NOT IN, считается истинным, если значение поля не совпадает ни с одним из значений, перечисленных в списке.

Пример: Получить из таблицы EXAM_MARKS сведения о студентах, имеющих экзаменационные оценки только 4 и 5:

SELECT *

FROM EXAM_MARKS

WHERE MARK IN (4,5);

Пример: Получить сведения о студенах, не имеющих ни одной оценки, равной 4 и 5.

SELECT *

FROM EXAM_MARKS

WHERE MARK NOT IN (4,5);

Оператор BETWEEN используется для проверки условия вхождения значения поля в заданный интервал, то есть вместо списка значений атрибута этот оператор задает границы его изменения.

Пример, вывести информацию о предметах, на изучение которых отводится количество часов, находящееся в пределах между 30 и 40:

SELECT *

FROM SUBJECT

WHERE HOUR BETWEEN 30 AND 40;

Замечание! Граничные значения входят во множество значений, с которыми производится сравнение.

Оператор LIKE применим только к символьным полям. Этот оператор просматривает строковые значения полей с целью определения, входит ли заданная в операторе LIKE строка (образец поиска) в символьную строку-значение проверяемого поля.

Для выборки строковых значений по заданному образцу подстроки можно применять шаблон искомого образца строки, использующий следующий символ:

§ «_» - определяет возможность наличия в указанном месте одного любого символа;

§ «%» - допускает присутствие в указанном месте проверяемой строки последовательности любых символов произвольной длины.

Пример: написать запрос, выбирающей информацию о студентах, фамилии которых начинаются с буквы «Р».

SELECT *

FROM STUDENT

WHERE SURNAME LIKE ‘P%’;

В случае необходимости включения в образец самих символов «_» и «%» применяют так называемые escape -символы.

Например, можно задать образец поиска с помощью следующего выражения:

LIKE ‘_\_P’ ESCAPE ‘_\’

В этом выражении символ '\' с помощью ключевого слова ESCAPE объявляется escape -символом. Первый символ «_» будет соответствовать, как и ранее, любому символу в проверяемой строке. Однако второй символ «_», следующий после символа «\», объявленного escape -символом, уже будет интерпретироваться буквально как обычный символ.

Внимание! Рассмотренные выше операторы сравнения и операторы IN, BETWEEN, LIKE ни в коем случае нельзя использовать для проверки содержимого поля на пустое значение!

3. Преобразование вывода и встроенные функции

В SQL реализованы операторы преобразования данных и встроенные функции, предназначенные для работы со значениями столбцов и/или константами в выражениях. Использование этих операторов допустимо в запросах везде, где допустимы выражения.

3.1. Числовые и символьные константы

Несмотря на то, что SQL работает с данными в понятии строк и столбцов таблиц, имеется возможность применения значений выражений, построенных с использованием встроенных функций, констант, имен столбцов, определяемых как своего рода виртуальные столбцы. Они помещаются в списке столбцов и могут сопровождаться псевдонимами.

Если в запросе вместо спецификации столбца SQL обнаруживает число, то оно интерпретируется как числовая константа.

Символьные константы должны указываться в одинарных кавычках.

Пример.

SELECT 'Фамилия', SURNAME, 'Имя', NAME, 100

FROMSTUDENT;

3.2 Арифметические операции для преобразования числовых данных

Можно использоваться следующие арифметические операции: унарный минус, +, -, *, /.

Например:

SELECT SURNAME, NAME, STIPEND, -(STIPEND*KURS)/2

FROM STUDENT

WHERE KURS=4 AND STIPEND>0;

3.3. Операция конкатенации строк

Операция конкатенации «||» позволяет соединять значения двух или более столбцов символьного типа или символьных констант в одну строку. В СУБД Access для этой цели в запросах SQL применяется символ «&»

Пример:

SELECT SURNAME || ‘_’ || NAME, STIPEND

FROM STUDENT

WHERE KURS=4 AND STIPEND>0

3.4 Функции преобразования символов в строке

LOWER (строка) = LCASE(строка) – перевод в строчные символы

UPPER(строка) = UCASE(строка) – перевод в прописные буквы

INITCAP(строка) – перевод первой буквы каждого слова строки в прописную.

Агрегирование и групповые функции. Упорядочение выходных полей

Агрегирующие функции позволяют получать из таблицы сводную (агрегированную) информацию, выполняя операции над группой строк таблицы. Для задания в SELECT-запросе агрегирующих операций используются следующие ключевые слова:

COUNT – определяет количество строк или значений поля, выбранных посредством запроса и не являющихся NULL-значениями;

SUM – вычисляет арифметическую сумму всех выбранных значений поля;

AVG – вычисляет среднее значение для всех выбранных значений данного поля (в некоторых реализациях - AVERAGE);

MAX – вычисляет наибольшее из всех выбранных значений данного поля;

MIN – вычисляет наименьшее из всех выбранных значений данного поля;

В SELECT-запросе агрегирующие функции используются аналогично именам полей, при этом имена полей используются в качестве аргументов этих функций.

5. Пустые значения в агрегирующих функциях

Если аргументом функции COUNT является столбец, содержащий пустое значение, то COUNT вернет число строк, которые не содержат пустые значения и к которым применено определенное в COUNT условие или группирование.

Поведение функции COUNT(*) не зависит от пустых значений. Она возвратит общее количество строк в таблице.

Функция AVG вычисляет среднее значение всех известных значений множества элементов, то есть эта функция подсчитывает сумму известных значений и делит ее на количество этих значений, а не на общее количество значений, среди которых могут быть NULL-значения. Если столбец состоит только из пустых значений, то функция возвратит NULL.

6. Результат действия трехзначных условных операторов

При отсутствии пустых значений условные операторы возвращают либо TRUE либо FALSE. Если в столбце присутствуют пустые значения, то может быть возвращено третье значение: UNKNOWN.

Пустые значения оказывают влияние на использование логических операторов NOT, AND, OR.

Оператор NOT:

Обычный унарный оператор NOT обращает оценку FRUE в FALSE и наоборот, но NOT NULL по прежнем у будет возвращать пустое значение NULL. Следует отличать проверку IS NULL (ISNOTNULL).

Оператор AND:

Ü Если результат двух условий, объединенных AND известен, то применяются правила булевой логики;

Ü Если результат одного из утверждений UNKNOWN, а второго – TRUE, то состояние неизвестного утверждения является определяющим (т.е. результат будет UNKNOWN);

Ü Если результат одного из утверждений UNKNOWN, а второго – FALSE, то результат будет FALSE;

Ü Если результат обоих утверждений неизвестен, то и результат будет UNKNOWN.

Оператор OR:

Ü Если результат двух условий, объединенных OR известен, то применяются правила булевой логики;

Ü Если результат одного утверждения TRUE, а второго – неизвестен, то результат будет TRUE;

Ü Если результат одного утверждения FALSE, а второго – неизвестен, то результат будет неизвестен;

Ü Если результат обоих утверждений неизвестен, то и результат будет UNKNOWN.

7. Упорядочение выходных полей

Записи в реляционной БД не упорядочены, однако в результате выполнения запроса, данные можно упорядочить. Для этого используется оператор ORDER BY, который позволяет упорядочивать выводимые записи в соответствии со значениями одного или нескольких выбранных столбцов. При этом можно задать возрастающую (ASC) или убывающую (DESC) последовательность сортировки.

 



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 2558; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.0.25 (0.014 с.)