
- •Лабораторная работа 4
- •Цели лабораторной работы
- •Описание и примеры
- •Основные фразы запроса: select и from Фраза select
- •Фраза from
- •Фраза where
- •Использование простых условий Использование операторов сравнения
- •Логические операторы
- •Выражение над столбцами во фразе where
- •Специальные операторы Оператор in
- •Оператор between
- •Оператор like
- •Операторы is null и is not null.
- •Варианты заданий
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Контрольные вопросы
- •Приложения Приложение a. Операторы sql Oracle
- •Унарные и бинарные операторы
- •Старшинство операторов
- •Арифметические операторы
- •Оператор конкатенации
- •Операторы сравнения
- •Логические операторы
- •Теоретико-множественные операторы
- •Приложение b. Выражения
- •Простые выражения
Операторы сравнения
Операторы сравнения сравнивают одно выражение с другим. Результатом сравнения может быть TRUE, FALSE или UNKNOWN. Для получения дополнительной информации относительно условий см. Приложение А лабораторной работы 2. Далее в таблице приводятся операторы сравнения SQL.
Оператор |
Назначение |
Пример |
= |
Проверка на равенство |
SELECT * FROM DEPARTMENT WHERE Fund = 15000; |
!=, ^=, <>, ¬= |
Проверка на неравенство. |
SELECT * FROM DEPARTMENT WHERE Fund != 15000; |
>, < |
Проверка на "больше" и "меньше" |
SELECT * FROM FACULTY SELECT * FROM FACULTY WHERE Fund > 1500; WHERE Fund < 1500; |
>=, <= |
Проверка на "больше или равно" и "меньше или равно" |
SELECT * FROM FACULTY SELECT * FROM FACULTY WHERE Fund >= 1500; WHERE Fund <= 1500; |
IN |
Проверка на "вхождение элемента во множество ". Эквивалентно "= ANY" |
SELECT Name, Post FROM TEACHER WHERE UPPER(Post) IN ('PROFESSOR', 'ASSISTANT'); |
NOT IN |
Эквивалентно !=ALL. Дает FALSE хотя бы один элемент множества равен NULL |
SELECT * FROM FACULTY WHERE Fund NOT IN (SELECT Fund FROM FACULTY WHERE Building IN ('3','5')}; |
ANY, SOME |
Сравнивает значение с каждым значение в списке или возвращаемым запросом. Им должен предшествовать один из символов =, !=, >, <, <=, >=. Дает FALSE , если запрос не возвращает строк. |
SELECT * FROM TEACHER WHERE Salary = ANY (SELECT Salary FROM TEACHER WHERE UPPER(Post) = 'PROFESSOR'); |
ALL |
Сравнивает значение с каждым значение в списке или возвращаемым запросом. Ему должен предшествовать один из символов =, !=, >, <, <=, >=. Дает TRUE, если запрос не возвращает строк. |
SELECT * FROM TEACHER WHERE Salary >= ALL (350, 400, 420); |
[NOT] BETWEEN x AND y |
[НЕ] больше или равно x и меньше или равно y. |
SELECT * FROM TEACHER WHERE Salary BETWEEN 350 AND 420; |
EXISTS |
TRUE, если подзапрос возвращает хотя бы одну строку. Это унарный оператор. |
SELECT Name FROM TEACHER WHERE EXISTS (SELECT * FROM LECTURE WHERE LECTURE.TchNo=TEACHER. TchNo); |
x [NOT] LIKE y [ESCAPE ‘z’] |
TRUE, если x [не] соответствут шаблону y. В шаблоне y, символ "%" соответствует произвольной строке ноль или более символов за исключением. Символ "_" соответствует одному произвольному символу. Если символу (%) или (_) предшествует escape-символ, то он воспринимается буквально. |
SELECT Name FROM TEACHER WHERE UPPER(Name) LIKE 'ИВ%'; |
IS [NOT] NULL |
Проверка на null. Это единственный оператор, который делает проверку на null. |
SELECT Name, Tel FROM TEACHER WHERE Commission IS NULL; |
Логические операторы
Логический оператор выдает логическое значение на основании логических значений его операнодов. Далее приводится таблица логических операторов.
Оператор |
Назначение |
Пример |
NOT |
Унарный оператор. Возвращает TRUE, если условие равно FALSE. Возвращает FALSE , если условие TRUE. Если условие UNKNOWN, то возвращает UNKNOWN. |
SELECT * FROM TEACHER WHERE NOT (Salary BETWEEN 450 AND 500); |
AND |
Бинарный оператор. Возвращает TRUE, если оба операнда TRUE. Возвращает FALSE, если хотя бы один операнд FALSE. В противном случае возвращает UNKNOWN. |
SELECT * FROM TEACHER WHERE Hiredate < TO_DATE('01-JAN-2000', 'DD-MMM-YYYY') AND Salary > 500; |
OR |
Бинарный оператор. Возвращает TRUE, если хотя бы один из операндов TRUE. Возвращает FALSE, если оба операнда FALSE. В противном случае возвращает UNKNOWN. |
SELECT * FROM TEACHER WHERE UPPER(Post)='ASSISTANT' AND Salary > 500; |
Логические операторы имеют следующую истинностную таблицу:
AND |
TRUE |
FALSE |
UNKNOWN |
|
OR |
TRUE |
FALSE |
UNKNOWN |
|
NOT |
|
TRUE |
TRUE |
FALSE |
UNKNOWN |
|
TRUE |
TRUE |
TRUE |
UNKNOWN |
|
TRUE |
FALSE |
FALSE |
FALSE |
FALSE |
UNKNOWN |
|
FALSE |
TRUE |
FALSE |
UNKNOWN |
|
FALSE |
TRUE |
UNKNOWN |
UNKNOWN |
UNKNOWN |
UNKNOWN |
|
UNKNOWN |
UNKNOWN |
UNKNOWN |
UNKNOWN |
|
UNKNOWN |
UNKNOWN |