You are here

SELECT - опрашивать данные

-- english, deutsch, russian --

Синтаксис

Описание:

    SELECT возвращает как результат строки данных, которые создаются из данных, содержащихся в указанных исходных таблицах данных. С помощью SELECT можно, например, выбирать определенные строки из одной таблицы данных, или суммировать элементы этой таблицы, или же создавать новую таблицу-результат из многих исходных.

DISTINCT

    DISTINCT указывает базе данных исключать дупликаты из результата команды SELECT.

    Пример:

SELECT DISTINCT vnum
FROM torder;

Здесь выбираются все различные (без дупликатов) элементы столбца vnum таблицы torder.

FROM { таблица [ псевдоним ] } [,...]

    С помощью FROM сообщают базе данных из каких таблиц выбирать данные.

    Пример:

SELECT vnum
FROM torder;

Здесь выбираются все элементы поля vnum таблицы torder.

WHERE условие

    С помощью WHERE ограничивают выбор данных из указанных таблиц.

    Пример:

SELECT tkunden.knum, tverkauf.vnum, tverkauf.prov
FROM tkunden, tverkauf
WHERE tkunden.vnum=tverkauf.vnum; 

Результатом является здесь таблица из строк, состоющих из поля knum таблицы tkunden и полей vnum и prov таблицы tverkauf, где с помощью WHERE указывается как находить строки таблицы tverkauf соответствующие строкам из таблицы tkunden.

GROUP BY { поле | Integer } [,...]

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

    Пример:

SELECT vnum, MAX(preis)
FROM torder
GROUP BY vnum;

Здесь выбираются в качестве результата все максимальные значения поля preis про найденную группу строк с идентичным значением поля vnum.

HAVING условие

    HAVING используется вместе с GROUP для того чтобы выбирать только определенные группы строк данных, которые удовлетворяют указанному условию.

    Пример:

SELECT vnum, MAX(preis)
FROM torder
GROUP BY vnum
HAVING AVG(preis) > 10

Здесь выбираются все максимальные значения поля preis про найденную группу строк данных с идентичным vnum, удовлетворяющию дополнительному условию, что средняя величина preis больше 10.

ORDER BY { поле | Integer [ ASC|DESC ] } [,...]

    ORDER BY сортирует строки результирующей таблицы данных. Если ORDER BY используется внутри GROUP BY, то строки сортируются внутри каждой группы результирующих строк. Вместо имен полей могут быть использованы их порядковые номера в списке полей результирующей таблицы. ASC сортирует данные в восходящем порядке, DESC - в обратном.

    Пример:

UNION [ALL] SELECT-команда

    UNION используется для того, чтобы объединять результаты двух или более команд SELECT. Поля всех результирующих таблиц должны быть совместимыми. Если ALL не использовано, то дупликаты исключаются из объединения результатов.

    Пример:

SELECT vnum, vname
FROM tverkauf
WHERE stadt='Berlin'
UNION
SELECT knum, kname
FROM tkunden
WHERE stadt='Berlin'
ORDER BY 1;

Здесь результатом является таблица, содержащая все vnum и knum таблицы tverkauf так же, как и всеv num и kname таблицы tkunden, где поле stadt имеет значение 'Berlin'. Результат сортируется по первому столбцу и дупликаты исключаются.

INTERSECT [ALL] SELECT-команда

    ANSI DB2 Informix Oracle SQL Server Interbase
    нет да да да ? ?

    INTERSECT используется для того, чтобы объединять результаты двух или более команд SELECT, при этом в резултат включаются только строки содержащиеся в первой команде SELECT, как и во второй. Поля всех результирующих таблиц должны быть совместимыми. Если ALL не использовано, то дупликаты исключаются из объединения результатов.

    Пример:

SELECT vnum, vname
FROM tverkauf
WHERE stadt='Berlin'
INTERSECT
SELECT knum, kname
FROM tkunden
WHERE stadt='Berlin'
ORDER BY 1; 

Здесь интересуют все строки первой результирующей таблицы, которые так же содержатся и во второй. Дупликаты исключаются из результата.

EXCEPT [ALL] SELECT-команда

    Важно: в некоторых диалектах SQL используется вместо EXCEPT MINUS или DIFFERENCE, синтаксис же от этого не меняется

    ANSI DB2 Informix Oracle SQL Server Interbase
    нет да ? ? ? ?

    EXCEPT используется для того, чтобы объединять результаты двух или более команд SELECT, при этом в результат включаются только строки, содержащиеся в первой команде SELECT и не содержащиеся во второй. Поля всех результирующих таблиц должны быть совместимыми. Если ALL не использовано, то дупликаты исключаются из объединения результатов.

    Пример:

SELECT vnum, vname
FROM tverkauf
WHERE stadt='Berlin'
EXCEPT
SELECT knum, kname
FROM tkunden
WHERE stadt='Berlin'
ORDER BY 1; 

Здесь интересуют все строки первой результирующей таблицы, которые не имеют дупликатов во второй.

INTO { TEMP | SCRATCH } таблица

    ANSI DB2 Informix Oracle SQL Server Interbase
    нет да да ? нет нет

    INTO TEMP используется для создания вспомогательных таблиц в активной базе данных, которые автоматически удаляются из последней после окончания связи с ней. Часто используется для оптимизации команд SQL. INTO SCRATCH отличается от INTO TEMP тем, что временная таблица фрагментируется по всем дискам.