Средства манипулирования данными

Оператор SELECT

Позволяет производить выборки из таблиц БД и преобразовывать к нужному виду полученные результаты.

Общий формат оператора SELECT

SELECT [DISTINCT | ALL ] {* | <значение1> [,<значение2> …]}

FROM <таблица1> [ , <таблица2> … ]

[ WHERE <условия_поиска> ]

[ GROUP BY столбец [, столбец1 … ]

[ HAVING < условия_поиска> ]

[ UNION <оператор_select>]

[ PLAN <план_выполнения_запроса>]

[ ORDER BY <список_столбцов>]

Простейший формат:

SELECT { * | <значение1>, <значение1> [,<значение2> …]}

FROM <таблица1> [ , <таблица2 … ]

 

Например:

SELECT *

FROM RASHOD

Или так:

SELECT N_RASH, DAT_RASH, KOLVO, TOVAR, POKUP

FROM RASHOD

Использование предложения WHERE для задания условия отбора

Предложение WHERE используется для включения в НД лишь нужных записей.

В этом случае имеем следующий формат:

 

SELECT {* | <значение1> [,<значение2> …]}

FROM <таблица1> [ , <таблица2> … ]

[ WHERE <условия_поиска> ]

 

Сравнение значения столбца с константой При сравнении столбца с константой условие имеет вид:

<условия поиска > = <оператор> <константа>

Где <оператор> - одна из следующих операций отношения:

<оператор> = { = | < | > | <= | >= | != | !< | !> | <> }

Пример:

SELECT * FROM RASHOD WHERE KOLVO = 20

Использование предложения WHERE. Внутреннее соединение таблиц.

При сравнении значения одной таблицы с со значением столбца другой таблицы условие поиска имеет следующий вид:

<условия поиска > = <имя столбца 1> <оператор> <имя столбца 2>

Пример:

Чтобы выбрать все записи о расходе товара из таблицы RASHOD и для каждого товара указать его цену из таблицы TOVARY, можно использовать такой оператор:

SELECT RASHOD.*, TOVARY.ZENA

FROM RASHOD, TOVARY

WHERE RASHOD.TOVAR = TOVARY.TOVAR

 

Такой способ соединения называется внутренним соединением.

При внутреннем соединении двух таблиц A и B логический порядок формирования результирующего набора данных можно представить следующим образом.

1. Из столбцов, которые указаны после слова SELECT, составляется промежуточный набор данных путем сцепления результирующих столбцов каждой записи из таблицы А и результирующих столбцов записи из таблицы В.

2. Из получившегося НД отбрасываются все записи , не удовлетворяющие условию в предложении WHERE.

Замечание:

Фактический порядок выполнения запроса для конкретного SQL-сервера может быть другим.

Пример:

Таблица A

Ст. P1 Ст. P2 Ст. P3
a x
b x
c y
d    

 

Таблица B

Ст. P1 Ст. P2
x
y
z

 

SELECT A.P1, A.P2, B.P2

FROM A, B

WHERE A.P2 = B.P1

Промежуточный набор

Ст. A.P1 Ст. A.P2 Ст. B.P1 Ст. B.P2
a x x
a x y
a x z
b x x
b x y
b x z
c y x
c y y
c y z

Окончательный набор

Ст. A.P1 Ст. A.P2 Ст. B.P2
a x
b x
c у

Использование псевдонимов таблиц

SELECT …

FROM < таблица1 псевдоним1> [, таблица2 псевдоним 2 … ]

WHERE …

Пример:

SELECT R.*, P.ADRES

FROM RASHOD R, POKUPATELI P

WHERE P.POKUP = R.POKUP

3.4.1.5. Предложение ORDER BY – определение сортировки

Результирующий набор данных можно отсортировать с помощью предложения:

ORDER BY <список_столбцов>

Пример:

SELECT POKUP, DATRASH, TOVAR, KOLVO

FROM RASHOD

WHERE TOVAR = “Кока-кола”

ORDER BY POKUP, DATARASH

Устранение повторяющихся значений

Часто в результирующий НД необходимо включать не все записи с одинаковым значением комбинации столбцов. Для этого используется ключевое слово

DISTINCT

Пример:

SELECT DISTINCT TOVAR

FROM RASHOD

Замечание:

Использование DISTINCT может существенно замедлить выполнение запроса, т.к. сервер будет тратить дополнительные ресурсы на проверку каждой записи. Обычно применяется в запросах, использующих агрегатные функции.