В SQL поддерживается ряд операций для решения различных задач, наподобие сравнения значений столбцов и проведения логических вычислений. В этом статье блога будут кратко описаны наиболее важные из этих операций — операции сравнения, логические операции и операции над
множествами.
Операции сравнения
Операции сравнения позволяют сравнивать одно определенное значение столбца с несколькими другими значениями. Ниже перечислены основные операции сравнения.
BETWEEN
. Позволяет проверять, находится ли значение между двумя другими значениями.IN
. Позволяет проверять, присутствует ли значение в списке значений.LIKE
. Позволяет проверять, соответствует ли значение определенному образцу, как показано ниже:
SQL> SELECT employee_id from employees WHERE dept LIKE 'FIN%';
Логические операции
Логические операции, также называемые булевскими, позволяют логическим образом сравнивать два или более значений. Главные логические операции выглядят так: AND
(И), OR
(ИЛИ), NOT
(НЕ), GE
(БОЛЬШЕ ИЛИ РАВНО) и LE
(МЕНЬШЕ ИЛИ РАВНО). Ниже приведен пример, иллюстрирующий применение некоторых из этих операций:
SQL> SELECT last_name, city WHERE salary GT 100000 and LE 200000;
В случае использования сразу нескольких операций внутри одного оператора необходимо помнить об их старшинстве. Oracle всегда вычисляет арифметические операции вроде умножения, деления, сложения и вычитания перед вычислением условий. Ниже показан порядок старшинства операций в Oracle, причем самая важная операция идет первой:
=, !=, <, >, <=, >= IS NULL, LIKE, BETWEEN, IN, EXISTS NOT AND OR
Операции над множествами
Иногда бывает необходимо, чтобы запрос предусматривал объединение результатов из нескольких SQL-операторов. Такой запрос называется составным. Операции над множествами облегчают написание и выполнение составных запросов. Наиболее важные из этих операций перечислены ниже.
UNION
. ОперацияUNION
объединяет результаты нескольких операторовSELECT
, но сначала удаляет из них любые дублированные строки. В случае ее применения Oracle сортирует результирующий набор данных. Ниже приведен пример использования этой операции:
SQL> SELECT emp_id FROM old_employees UNION SELECT emp_id FROM new_employees;
UNION ALL
. ОперацияUNION ALL
похожа на операциюUNION
, но не предусматривает удаления дублированных строк. В случае ее применения Oracle не выполняет сортировку результирующего набора данных, как это делается в случае операцииUNION
.INTERSECTION
. ОперацияINTERSECTION
получает общие значения из двух или более результирующих наборов, происходящих от разных операторовSELECT
. Эти значения имеют в конечном результирующем наборе уникальный и отсортированный вид.MINUS
. ОперацияMINUS
возвращает те строки из результатов первого запроса, которых нет в результатах второго запроса. Эти строки имеют в конечном результирующем наборе уникальный и отсортированный вид.