- •Состав языка sql
- •Список полей
- •Все поля
- •Все поля в произвольном порядке
- •Вычисления
- •Литералы
- •Работа с датами
- •Агрегатные функции
- •Операции сравнения
- •Логические операторы
- •Преобразование типов (cast)
- •Изменение порядка выводимых строк (order by)
- •Упорядочивание с использованием имен столбцов
- •Упорядочивание с использованием номеров столбцов
- •Устранение дублирования (модификатор distinct)
- •Соединение (join)
- •Внутренние соединения
- •Самосоединения
- •Внешние соединения
- •Назад | Содержание
Логические операторы
К логическим операторам относятся известные операторы AND, OR, NOT, позволяющие выполнять различные логические действия: логическое умножение (AND, "пересечение условий"), логическое сложение (OR, "объединение условий"), логическое отрицание (NOT, "отрицание условий"). В наших примерах мы уже применяли оператор AND. Использование этих операторов позволяет гибко "настроить" условия отбора записей.
Оператор AND означает, что общий предикат будет истинным только тогда, когда условия, связанные по "AND", будут истинны.
Оператор OR означает, что общий предикат будет истинным, когда хотя бы одно из условий, связанных по "OR", будет истинным.
Оператор NOT означает, что общий предикат будет истинным, когда условие, перед которым стоит этот оператор, будет ложным.
В одном предикате логические операторы выполняются в следующем порядке: сначала выполняется оператор NOT, затем - AND и только после этого - оператор OR. Для изменения порядка выполнения операторов разрешается использовать скобки.
SELECT first_name, last_name, dept_no,
job_code, salary
FROM employee
WHERE dept_no = 622
OR job_code = "Eng"
AND salary <= 40000
ORDER BY last_name
получить список служащих, занятых в отделе 622 или на должности "инженер" с зарплатой не выше 40000
FIRST_NAME |
LAST_NAME |
DEPT_NO |
JOB_CODE |
SALARY |
Jennifer M. |
Burbank |
622 |
Eng |
53167.50 |
Phil |
Forest |
622 |
Mngr |
75060.00 |
T.J. |
Green |
621 |
Eng |
36000.00 |
Mark |
Guckenheimer |
622 |
Eng |
32000.00 |
John |
Montgomery |
672 |
Eng |
35000.00 |
Bill |
Parker |
623 |
Eng |
35000.00 |
Willie |
Stansbury |
120 |
Eng |
39224.06 |
SELECT first_name, last_name, dept_no,
job_code, salary
FROM employee
WHERE (dept_no = 622
OR job_code = "Eng")
AND salary <= 40000
ORDER BY last_name
получить список служащих, занятых в отделе 622 или на должности "инженер", зарплата которых не выше 40000
FIRST_NAME |
LAST_NAME |
DEPT_NO |
JOB_CODE |
SALARY |
T.J. |
Green |
621 |
Eng |
36000.00 |
Mark |
Guckenheimer |
622 |
Eng |
32000.00 |
John |
Montgomery |
672 |
Eng |
35000.00 |
Bill |
Parker |
623 |
Eng |
35000.00 |
Willie |
Stansbury |
120 |
Eng |
39224.06 |
Преобразование типов (cast)
В SQL имеется возможность преобразовать значение столбца или функции к другому типу для более гибкого использования операций сравнения. Для этого используется функция CAST.
Типы данных могут быть конвертированы в соответствии со следующей таблицей:
Из типа данных |
В тип данных |
NUMERIC CHAR, |
VARCHAR, DATE |
CHAR, VARCHAR |
NUMERIC, DATE |
DATE CHAR, |
VARCHAR, DATE |
SELECT first_name, last_name, dept_no
FROM employee
WHERE CAST(dept_no AS char(20))
CONTAINING "00"
получить список сотрудников, занятых в отделах, номера которых содержат "00"
FIRST_NAME |
LAST_NAME |
DEPT_NO |
Robert |
Nelson |
600 |
Terri |
Lee |
000 |
Stewart |
Hall |
900 |
Walter |
Steadman |
900 |
Mary S. |
MacDonald |
100 |
Oliver H. |
Bender |
000 |
Kelly |
Brown |
600 |
Michael |
Yanowski |
100 |
