- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Таблица A
- •Таблица A
- •Таблица A
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
Элементы языка SQL
Оператор SELECT: использование подзапросов
Дополнительные возможности
Предложение SINGULAR. Требуется выбрать лишь те записи, для которых подзапрос возвращает только одно значение.
SINGULAR (<подзапрос>)
Пример.
Составить список покупателей, купивших только один товар:
SELECT P.*
FROM POKUPATELI P
WHERE SINGULAR (SELECT *
FROM RASHOD R
WHERE R.POKUP = P.POKUP )
Элементы языка SQL
Оператор SELECT: использование подзапросов
Дополнительные возможности
Использование ALL, SOME (ANY). Если в условиях поиска необходимо указать , что сравниваемое значение должно находиться в определенных отношениях со всеми или некоторыми значениями из множества значений, возвращаемых подзапросом, применяют выражение:
<сравниваемое_значение> [NOT] <оператор> {ALL | SOME | ANY } (<подзапрос>)
ALL указывает, что условие поиска будет истинно только тогда, когда сравниваемое значение находится в нужном отношении со ВСЕМИ значениями, возвращаемыми подзапросом.
WHERE STOLBEZ > ALL (SELECT POLE FROM TABLIZA)
SOME (или ANY) условие истинно, когда сравниваемое значение находится в нужном отношении ХОТЯ БЫ С ОДНИМ значением, возвращаемым подхвпросом.
WHERE STOLBEZ > SOME (SELECT POLE FROM TABLIZA)
Элементы языка SQL
Оператор SELECT: использование подзапросов
Дополнительные возможности
Использование ALL, SOME (ANY) Пример.
Определим все факты отгрузки товара со склада, в которых количество единиц отгружаемого товара превышает среднее значение.
SELECT * FROM RASHOD R1 WHERE R1.KOLVO > ALL
(SELECT AVG(R2.KOLVO) FROM RASHOD R2 GROUP BY POKUP)
Определим все факты отгрузки товара со склада, в которых количество единиц отгружаемого товара превышает среднее значение отгрузки хотя бы одного товара.
SELECT * FROM RASHOD R1
WHERE R1.KOLVO > SOME
(SELECT AVG(R2.KOLVO) FROM RASHOD R2 GROUP BY POKUP)
Элементы языка SQL
Оператор SELECT: использование подзапросов
Использование HAVING и агрегатных функций для вложенных подзапросов
Если в условиях поиска для вложенного запроса нужно указать агрегатную функцию, используется предложение HAVING.
Пример.
Определим покупателя, у которого средняя покупка больше средней покупки других покупателей. .
SELECT R1.POKUP, AVG(R1.KOLVO) FROM RASHOD R1 GROUP BY R1.POKUP
HAVING AVG(R1.KOLVO) >= ALL
(SELECT AVG(R2.KOLVO) FROM RASHOD R2 GROUP BY POKUP)
Элементы языка SQL
Оператор SELECT
Внешние соединения
Внешнее соединение таблиц определяется в предложении FROM согласно следующей спецификации:
SELECT { * | <значение1> [, <значение2> …]}
FROM <таблица1> <вид_соединения> JOIN <таблица2> ON <условие_поиска>
Внешнее соединение отличается от внутреннего тем, что в результирующий НД включаются также записи ведущей таблицы соединения, которые объединяются с пустым множеством записей другой таблицы. Какая из таблиц будет ведущей, определяет вид соединения:
LEFT – (левое внешнее соединение), когда ведущей являются таблица1 (расположена СЛЕВА от вида соединения).
RIGHT – (правое внешнее соединение), когда ведущей являются таблица2 (расположена СПРАВА от вида соединения).
FULL – (полное внешнее соединение), когда ведущими являются и таблица1, и таблица2.
Таблица A |
|
|
Ст. P1 |
Ст.P2 |
Ст.P3 |
a |
x |
400 |
b |
x |
200 |
c |
y |
500 |
d |
|
|
Таблица B |
|
Ст. P1 |
Ст.P2 |
x |
1 |
y |
2 |
z |
3 |
Элементы языка SQL
Оператор SELECT
Внешние соединения
SELECT A.P1, A.P2, B.P2
FROM A
LEFT JOIN B ON A.P2 = B.P1
Результирующий НД |
|
|
Ст. A. P1 |
Ст. A.P2 |
Ст. B.P2 |
a |
x |
1 |
b |
x |
1 |
c |
y |
2 |
d |
|
|
Таблица A |
|
|
Ст. P1 |
Ст.P2 |
Ст.P3 |
a |
x |
400 |
b |
x |
200 |
c |
y |
500 |
d |
|
|
Таблица B |
|
Ст. P1 |
Ст.P2 |
x |
1 |
y |
2 |
z |
3 |
Элементы языка SQL
Оператор SELECT
Внешние соединения
SELECT A.P1, A.P2, B.P2
FROM A
RIGHT JOIN B ON A.P2 = B.P1
Результирующий НД |
|
|
Ст. A. P1 |
Ст. A.P2 |
Ст. B.P2 |
a |
x |
1 |
b |
x |
1 |
c |
y |
2 |
|
|
3 |
Таблица A |
|
|
Ст. P1 |
Ст.P2 |
Ст.P3 |
a |
x |
400 |
b |
x |
200 |
c |
y |
500 |
d |
|
|
Таблица B |
|
Ст. P1 |
Ст.P2 |
x |
1 |
y |
2 |
z |
3 |
Элементы языка SQL
Оператор SELECT
Внешние соединения
SELECT A.P1, A.P2, B.P1, B.P2
FROM A
FULL JOIN B ON A.P2 = B.P1
|
Результирующий НД |
|
|
Ст. A. P1 |
Ст. A.P2 |
Ст. B.P1 |
Ст. B.P2 |
a |
x |
x |
1 |
b |
x |
x |
1 |
c |
y |
y |
2 |
d |
|
|
|
|
|
z |
3 |
Элементы языка SQL
Оператор SELECT
Внешние соединения
Пример 1. Несколько последовательных внешних соединений
SELECT R.DAT_RASH, R.TOVAR, T.ED_IZM, R.KOLVO, P.ADRES FROM RASHOD R
LEFT JOIN POKUPATELI P ON R.POKUP = P.POKUP LEFT JOIN TOVARY T ON R.TOVAR = T.TOVAR
Пример 2. Комбинирование внешних и внутренних соединений
SELECT P.POKUP, R.DAT_RASH, R.TOVAR, T.ED_IZM, R.KOLVO FROM POKUPATELI P
P LEFT JOIN RASHOD R ON R.POKUP = P.POKUP
INNER JOIN TOVARY T ON R.TOVAR = T.TOVAR
Элементы языка SQL
Оператор SELECT
Объединение запросов – UNION
Иногда бывает полезным объединить два или более результирующих наборов данных. Результирующие наборы должны иметь одинаковую структуру (состав столбцов).
Если в результирующих наборах имеется одна и та же запись, в сводном наборе она не дублируется.
SELECT R.*
FROM RASHOD R
WHERE R.TOVAR CONTAINING ‘Сахар’
UNION
SELECT R.*
FROM RASHOD R
WHERE R.KOLVO >= 100