Теоретические сведения. В SQL имеется единственный оператор, который предназначен для выборки данных из базы данных

В SQL имеется единственный оператор, который предназначен для выборки данных из базы данных. Как и операторы INSERT, DELETE и UPDATE он относится к подмножеству DML.

Ниже приведен почти полный синтаксис оператора SELECT.

SELECT [DISTINCT | ALL]

{* | <величина> [, <величина>...]}

[INTO:Переменная [,:Переменная...]]

FROM <tableref> [, <tableref>...]

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

[GROUP BY Колонка [, Колонка...]]

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

[UNION [ALL] <select_expr>]

[ORDER BY <список сортировки>];

<величина> = {Колонка |:Переменная | <константа> | <выражение>

| <функция> | udf ([<величина> [, <величина>...]]) | NULL | USER}

[AS Псевдоним]

<константа> = Число | 'Строка'

<выражение> = SQL выражение, возвращающее единичное значение

<функция> =

COUNT (* | [ALL] <величина> | DISTINCT <величина>)

| SUM ([ALL] <величина> | DISTINCT <величина>)

| AVG ([ALL] <величина> | DISTINCT <величина>)

| MAX ([ALL] <величина> | DISTINCT <величина>)

| MIN ([ALL] <величина> | DISTINCT <величина>)

| CAST(<величина> AS <тип данных>)

| UPPER(<величина>)

| GEN_ID(Имя_Генератора, <величина>)

<tableref> = {<joined_table> | table | view

| procedure[(<величина> [, <величина>...])]} [Псевдоним]

<joined_table> = <tableref> <join_type> JOIN <tableref>

ON <условие поиска> | (<joined_table>)

<join_type> = [INNER] | {LEFT | RIGHT | FULL } [OUTER]

<условие поиска> =

<величина> <оператор сравнения>

{<величина> | (<select_one>)}

| <величина> [NOT] BETWEEN <величина> AND <величина>

| <величина> [NOT] LIKE <величина>

| <величина> [NOT] IN

(<величина> [, <величина>...] | <select_list>)

| <величина> IS [NOT] NULL

|<величина> {>= | <=} <величина>

| <величина> [NOT] {= | < | >} <величина>

| {ALL | SOME | ANY} (<select_list>)

| EXISTS (<select_expr>)

| SINGULAR (<select_expr>)

| <величина> [NOT] CONTAINING <величина>

| <величина> [NOT] STARTING [WITH] <величина>

| (<условие поиска>)

| NOT <условие поиска>

| <условие поиска> OR <условие поиска>

| <условие поиска> AND <условие поиска>

<оператор сравнения> = {= | < | > | <= | >= |!< |!> | <> |!=}

<select_one> = оператор SELECT, выбирающий одну колонку и возвра щающий ровно одно значение

<select_list> = оператор SELECT, выбирающий одну колонку, возвра щающий ноль или много значений

<select_expr> = оператор SELECT, выбирающий несколько величин и возвращающий ноль или много значений

<список сортировки> =

{Колонка | Номер}

[ASC | DESC]

[, <список сортировки>...]

Некоторые параметры, входящие в этот оператор, описаны в табл. 1

Таблица 1 - Описание параметров оператора SELECT

Параметр Описание
DISTINCT | ALL DISTINCT – предотвращает дублирование данных, которые будут извлечены. ALL (по умолчанию) – приведет к извлечению всех данных
{* | <величина> [, <величина>...]} Звездочка (*) означает, что надо извлекать все колонки из указанных таблиц. <величина> [, <величина>...] – извлекает список указанных колонок, переменных или выражений
INTO:Переменная [,:Переменная...] Используется только в триггерах и хранимых процедурах для операторов SELECT, возвращающих не более одной строки. Указывается список переменных, в которые извлекаются величины
FROM <tableref> [, <tableref>...] Указывает список таблиц, просмотров и хранимых процедур, из которых извлекаются данные. Список может включать соединения и соединения могут быть вложенными
table Имя существующей в базе данных таблицы
view Имя существующего базе данных просмотра
procedure Имя существующей хранимой процедуры, предназначенной для использования в операторе SELECT
Псевдоним Короткое альтернативное имя для таблицы, просмотра или колонки. После описания в <tableref>, псевдоним может использоваться для ссылок на таблицу или просмотр
join_type Задает тип соединения, которое может быть внутренним или внешним

Как видно из синтаксиса оператора SELECT, обязательными являются только предложение SELECT с перечнем выдаваемых колонок и предложение FROM.

Пример простейшего оператора SELECT:

Выдать перечень всех служащих:

SELECT * FROM Employee;

Ниже приведено несколько упрощенных вариантов синтаксиса оператора SELECT, помогающих научиться составлять простые запросы.

Упрощенный синтаксис внутреннего соединения (стандарт SQL-92):

SELECT Колонка [, Колонка...] | *

FROM <tableref_left> [INNER] JOIN <tableref_right>

[ON <условие поиска>]

[WHERE <условие поиска>];

Упрощенный синтаксис внешнего соединения:

SELECT Колонка [, Колонка...] | *

FROM <tableref_left>

{LEFT | RIGHT | FULL} [OUTER] JOIN

<tableref_right>

[ON <условие поиска>]

[WHERE <условие поиска>];

Упрощенный синтаксис использования подзапроса:

SELECT [DISTINCT] Колонка [, Колонка...]

FROM <tableref> [, <tableref>...]

WHERE

{expression {[NOT] IN | <оператор сравнения>}

| [NOT] EXISTS

}

(SELECT [DISTINCT] Колонка [, Колонка...]

FROM <tableref> [, <tableref>...]

WHERE <условие поиска>

);


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: