
- •Лабораторная работа 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. Выражения
- •Простые выражения
Теоретико-множественные операторы
Теоретико-множественные операторы (или просто операторы над множествами) объединяют результаты двух запросов в единый результат. Запросы, составляющие операнды операторов, называются составными запросами. В таблице ниже приводятся эти операторы.
Оператор |
Назначение |
Пример |
UNION |
Возвращает все строки из обоих операнодов. Дубликаты строк удаляются. |
SELECT Building FROM DEPARTMENT UNION SELECT Building FROM FACULTY; |
UNION ALL |
Возвращает все строки из обоих операнодов. Дубликаты строк не удаляются. |
SELECT Building FROM DEPARTMENT UNION ALL SELECT Building FROM ROOM; |
INTERSECT |
Возвращает строки, принадлежащие обоим. |
SELECT Building FROM FACULTY INTERSECT SELECT Building FROM ROOM; |
MINUS |
Возвращает все различные строки первого операнда, не принадлежащие второму операнду. |
SELECT Building FROM ROOM MINUS SELECT Building FROM FACULTY; |
Все операторы имеют одинаковое старшинство
. Если имеется несколько подряд следующих операторов этого класса, то огни вычисляются слева направо.
Соответствующие списки фраз SELECT запросов должны иметь одинаковое количество элементов и типы данных. Если составляющие запросы выбирают данные строкового типа, то возвращаемое значение устанавливается следующим образом:
Если оба запроса имеют во фразе select значения типа CHAR, то в результате значение будет иметь тип CHAR.
Если один из запросов во фразе select имеет значения типа VARCHAR2, то в результате значение будет иметь тип VARCHAR2.
Приложение b. Выражения
Выражение – это комбинация одного или более значений, операторов и SQL-функций, которое принимает некоторое значение. Выражение в общем случае имеет тип значения, совпадающее с его компонентами.
Выражение “2*2” дает в результате 4 и имеет тип NUMBER (тот же, что и его компоненты).
Следующее выражение является более сложным и использует как функции, так и операторы. Это выражение добавляет 7 дней к текущей дате, удаляет из даты компоненту времени и преобразует результат в тип CHAR:
TO_CHAR(TRUNC(SYSDATE+7))
Выражения можно использовать:
В списке фразы SELECT предложения SELECT
В условии фразы WHERE и фразы HAVING
ВофразахCONNECT BYиORDER BY
Во фразе VALUES предложения INSERT
Во фразе SET предложения UPDATE
Например, вы можете использовать выражение вместо строки 'smith' во фразе SET предложения UPDATE, которое приведено ниже:
SET ename = 'smith';
Так следующаф фраза SET содержит выражение LOWER(ename) вместо 'smith':
SET ename = LOWER(ename);
Выражения имеют несколько форм, которые приведены ниже:
expr::=
Oracle не допускает использования всех возможных форм выражений во всех допустимых частях всех SQL-предложений. Если в синтаксисе описания того или предложения присутствует фраза expr, то вы можете использовать только выражения подходящего вида.
Простые выражения
Просые выражения специфицируют столбец, константу или NULL.
simple_expression::=
Примеры простых выражений:
emp.ename
'this is a text string'
10
Составные выражения
Составные выражения специфицируют комбинацию других выражений.
compound_expression::=
Отметим, что некоторые комбинации функций не допустимы и будут отвергнуты. Например, функция LENGTH не может использоваться в агрегатных функциях.
Примеры составных выражений:
('CLARK' || 'SMITH')
LENGTH('MOOSE') * 57
SQRT(144) + 72
my_fun(TO_CHAR(sysdate,'DD-MMM-YY')
Выражения переменных
Этот тип выражений не обсуждается здесь.
Выражения встроенных функций
Выражение встроенной функции специфицирует обращение к SQL-функции, действующей над строками.
built_in_function_expression::=
Примеры выражений встроенных функций:
LENGTH('BLAKE')
ROUND(1234.567*43)
SYSDATE
Для получения информации о встроенных функциях см. Приложение лабораторной работы 5.
Выражения функций, определенных пользователями
Выражения функций, определенных пользователями специфицирует обращение к функции, определенной пользователем. Синтаксис таких функций не обсуждается здесь.
Выражения конструктора типа
Выражения конструктора типа специфицирует обращение к конструктору типа. The Аргумент to конструктора типа является выражением или подзапросом. Синтаксис этого выражения не обсуждается здесь.
CAST Expressions
Выражение CAST преобразует один встроенный тип или значение типа коллекции в другой встроенный тип или значение типа коллекции. Синтаксис не обсуждается здесь.
SELECT * FROM t1 WHERE CAST (ROWID AS VARCHAR2) = '01234';
CURSOR Expressions
Выражение CURSOR возвращает вложенный курсор. Синтаксис не обсуждается здесь.
Выражение доступа к объекту
Этот тип выражения не обсуждается здесь.
Выражения DECODE
Этот тип выражения не обсуждается здесь.
Список выражений
Список віражений – єто список последовательности віражений, разделенніх запятой. Весь список заключается в круглые скобки.
expression_list::=
Ограничение на размер списка - 1000 выражений. Примеры списков выражений:
(10, 20, 40)
('SCOTT', 'BLAKE', 'TAYLOR')
(LENGTH('MOOSE') * 57, -SQRT(144) + 72, 69)
Приложение C. Комментарии в SQL
Комментарии в SQL не влияют на выполнение предложений. Комментарий может стоять между любыми ключевыми словами, параметрами или знаками пунктуации в предложении. Существуют следующие способы использования комментариев:
Начало комментария фиксируется косой чертой со звездочкой (/*). Затем следует текст комментария. Текст может занимать несколько строк. Завершается комментарий звездочкой и косой чертой (*/).
Комментарий начинается с двух знаков минус (--). Далее следует текст комментария, который может располагаться только на одной строке. Конец комментария – символ конца строки.
Предложение SQL может содержать комментарии обоих типов.
Пример:
Приводимые далее предложения содержат различные варианты использования комментариев:
SELECT ename, sal + NVL(comm, 0), job, loc
/* Select all employees whose compensation is
greater than that of Jones.*/
FROM emp, dept
/*The DEPT table is used to get the department name.*/
WHERE emp.deptno = dept.deptno
AND sal + NVL(comm,0) > /* Subquery: */
(SELECT sal + NLV(comm,0)
/* total compensation is sal + comm */
FROM emp
WHERE ename = 'JONES');
SELECT ename, -- select the name
sal + NVL(comm, 0), -- total compensation
job, -- job
loc -- and city containing the office
FROM emp, -- of all employees
dept
WHERE emp.deptno = dept.deptno
AND sal + NVL(comm, 0) > -- whose compensation
-- is greater than
(SELECT sal + NVL(comm,0) -- the compensation
FROM emp
WHERE ename = 'JONES'); -- of Jones.