Определение выражения довольно просто: выражение возвращает значение. Типы выражений довольно разнообразны, включая различные типы данных: строки, числа, логические значения. По сути говоря, конструкция SELECT FROM WHERE также является выражением, не говоря уже о простом вхождении имени столбца во фразе SELECT, которая возвращает значение столбца. Конструкция Post = 'professor' также является выражением, так как в результате получается истинностное значение.
Условие - это выражение, возвращающее истинностное значение TRUE или FALSE. Условные выражения обязательно используются во фразе FROM, а также могут использоваться и в других фразах, например, SELECT.
Операторы - это конструкции, используемые в выражениях для указания некоторых операций над ними. Имеются следующие типы операторов: арифметические, над строками, логические, сравнения, теоретико-множественные. В конкретных системах списки этих операторов могут расширяться.
· Операторы над строками - укажем только на один - сцепление строк - ||.
· Теоретико-множественные операторы - это UNION, INTERSECT, MINUS.
· Логические операторы - это AND, OR, NOT.
· Операторы сравнения. Их список приведен ниже в таблице.
Оператор
Назначение
Пример
=
Проверка на равенство.
SELECT * FROM emp
WHERE sal = 1500
!=, ^=,<>, =
Проверка на неравенство.
SELECT * FROM emp
WHERE sal != 1500
>
<
"Проверка на больше или меньше.
SELECT * FROM emp
WHERE sal > 1500
SELECT * FROM emp
WHERE sal < 1500
>=
<=
Проверка на больше или равно и меньше или равно.
SELECT * FROM emp
WHERE sal >= 1500
SELECT * FROM emp
WHERE sal <= 1500
IN
Проверка на вхождение элемента во множество.
SELECT * FROM emp
WHERE job IN
('CLERK','ANALYST')
SELECT * FROM emp
WHERE sal IN
(SELECT sal FROM emp
WHERE deptno = 30)
NOT IN
Эквивалентен "!=ALL". Проверка на то, что элемент не входит во множество.
SELECT * FROM emp
WHERE sal NOT IN
(SELECT sal FROM emp
WHERE deptno = 30)
SELECT * FROM emp
WHERE job NOT IN
('CLERK', 'ANALYST')
ANY
SOME
Следует за одним из предикатов =, !=, >, <, <=, >=. Проверяет, выполняется ли этот предикат на хотя бы одном значении множества, заданного в правой части, по отношению к элементу, заданному в левой части
SELECT * FROM emp
WHERE sal = ANY
(SELECT sal FROM emp
WHERE deptno = 30);
ALL
Следует за одним из предикатов =, !=, >, <, <=, >=. Проверяет, выполняется ли этот предикат на всех значениях множества, заданного в правой части, по отношению к элементу, заданному в левой части
SELECT * FROM emp
WHERE sal >=
ALL ( 1400, 3000);
EXISTS
Дает TRUE, если подзапрос, к которому оператор применяется, содержит хотя бы одну строку.
SELECT ename, deptno
FROM dept
WHERE EXISTS
(SELECT * FROM emp
WHERE dept.deptno
= emp.deptno);
IS [NOT] NULL
Проверяет на значение NULL столбца.
SELECT ename, deptno
FROM emp
WHERE comm IS NULL;
Рассмотрим ряд примеров использования этих операторов.
Получить список номеров групп, в которых количество студентов между 40 и 50
SELECT Num, Course, Quantity
FROM GROUP
WHERE Quantity >= 40 AND Quantity <= 50
Выдать имена только профессоров и ассистентов
SELECT Name, Post SELECT Name, Post
FROM TEACHER FROM TEACHER
WHERE Post = 'professor' OR WHERE Post IN ('professor', 'assistant')
Post = 'assistant'
Дальнейшие примеры можно найти в последующих подразделах.