Порядок выбора условий может быть изменен использованием круглых скобок, например:
SELECT * FROM sales_person
WHERE ( town LIKE ‘Stoke%’ OR town = ‘London’ )
AND dept = 4
NULL-значения и арифметика
Правило управления NULL-значением в арифметическом выражении логически соответствует математическим правилам. Если вы берете неизвестное значение и добавляете к нему 5, логически вы получаете неизвестное значение.
EXISTS
SELECT fname, lname, emp_no
FROM sales_person
WHERE EXISTS
(
SELECT * FROM sale
WHERE sales_person.emp_no = sp_no
)
Результат предиката – “истина”, если результирующее множество, возвращаемое подзапросом содержит хотя бы одну строку, и “ложь” – в противном случае.
Выше – пример коррелированного подзапроса.
UNION
Customers1992
MailShot
Customers1993
Предложение UNION может использоваться для объединения двух или более результирующих таблиц. Результирующие таблицы для каждого из SELECT операторов должны иметь одинаковое количество столбцов и типы данных соответствующих столбцов должны быть совместимы. При этом:
Пример:
SELECT NAME, ADDRESS, PHONE FROM CUST92
UNION
SELECT NAME, ADDRESS, PHONE FROM CUST93
Результат будет содержать строки из обеих таблиц.
Пример использования SELECT в операторе INSERT
INSERT INTO Dept (Dept_No, Dept_Name)
(
SELECT Dno, Dname
FROM NewDepts
WHERE agreed = ‘Y’
)
Вложенные подзапросы могут использоваться также для передачи данных в INSERT предложение. Каждому столбцу в списке INSERT, должен соответствовать столбец в списке SELECT. Каждая возвращаемая из SELECT строка вставляется в таблицу.
Это свойство может быть использовано для создания новых таблиц на основании существующих данных или копирования содержимого таблиц.
Алиасы таблиц
SELECT *
FROM sales_person, sales_person
? ?
Sales_Person Sales_Person
Иногда возникает необходимость включить некоторую таблицу в запрс дважды. Самоссылающиеся соединения и коррелированные подзапросы (оба рассматриваются позднее) – типичные примеры.
Таблице может быть дано новое имя, известное только в рамках жизни запроса, где это имя определяется. Это имя называется корреляционным именем таблицы.
Это имя может быть задано в предложении FROM после реального имени таблицы, например:
FROM sales_person SP1, sales_person SP2
Это имя можно затем использовать как префикс к имени столбца, что позволит системе воспринимать его как принадлежащий другой таблице, например:
SELECT SP1.sp_no ….
Эта техника позволит также упростить создание запроса, обращающегося к таблице с длинным именем, например:
FROM Sales_Targets_1993Q1 X
Упорядочивание данных
· По столбцу
ORDER BY company_no
· По номеру столбца
FROM sales_person
ORDER BY 2
Вы можете запросить упорядочивание строк результирующего множества с помощью предложения ORDER BY. Имя столбца, по которому выполняется упорядочивание может быть задано по имени или по номеру столбца в списке столбцов выборки.
Вы можете например запросить информацию из всех столбцов таблицы в возрастающем или убывающем порядке, например:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.