Операция выборки в языке SQL

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

Выборка осуществляется оператором SELECT.

Синтаксис оператора:

SELECT [предикат] { * | таблица.* | [таблица.]поле_1
[AS псевдоним_1] [, [таблица.]поле_2 [AS псевдоним_2] [, ...]]}
FROM выражение [, ...] [IN внешняяБазаДанных]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]

 

Аргументы оператора SELECT

предикат Один из следующих предикатов отбора: ALL, DISTINCT, DISTINCTROW или TOP. Предикаты используются для ограничения числа возвращаемых записей. Если они отсутствуют, по умолчанию используется предикат ALL. ALL – все записи DISTINCT Исключает записи, которые содержат повторяющиеся значения в выбранных полях DISTINCTROW – полностью различающиеся записи по всем полям TOP n – возврат заданного числа или процента записей в диапазоне, соответствующего фразе ORDER BY
псевдоним_1, псевдоним_2 Имена, которые станут заголовками столбцов вместо исходных названий столбцов в таблице.
FROM Указывает таблицы или запросы, которые содержат поля, перечисленные в инструкции SELECT (обязательно присутствует в каждом запросе)
GROUP BY Объединяет записи с одинаковыми значениями в указанном списке полей в одну запись
HAVING Определяет, какие сгруппированные записи отображаются при использовании инструкции SELECT с предложением GROUP BY. После того как записи будут сгруппированы с помощью предложения GROUP BY, предложение HAVING отберет те из полученных записей, которые удовлетворяют условиям отбора, указанным в предложении HAVING.
ORDER BY Сортирует записи, полученные в результате запроса, в порядке возрастания или убывания на основе значений указанного поля или полей.

 

Более грубо синтаксис оператора SELECT можно представить в виде:

SELECT список полей FROM таблица
[WHERE условия отбора]
[GROUP BY условия объединения записей]
[HAVING ...]
[ORDER BY условия сортировки]

 

Пример.

SELECT Имя, Фамилия FROM Студент – выбираются все записи из таблицы Студент из полей Имя и Фамилия

 

SELECT TOP 5 Фамилия FROM Студент – первые 5 записей из таблицы Студент из поля Фамилия

 

SELECT TOP 5 Фамилия FROM Студент ORDER BY Группа – первые 5 записей из таблицы Студент из поля Фамилия, упорядоченных по группам

 

SELECT DISTINCT Дата_рождения AS Юбилей FROM Студент – неповторяющиеся даты рождения из таблицы Студент, причем поле Дата_рождения станет называться Юбилей

 

SELECT Фамилия & ‘ ‘ & Имя AS ФИО, Дата_рождения AS Год FROM Студент – все записи, но вместо Дата_рождения – Год, вместо Фамилия и Имя – ФИО (Фамилия и Имя соединенные через пробел).

 

Предложение WHERE может содержать следующие операторы для построения условий:

AND – и

Or – или

NOT – не

LIKE – сравнение строковых значений

BETWEEN... AND – проверка на диапазон значений

IN – проверка на совпадение с любым элементом из списка

IS – проверка на значение Null

 

Если вместо списка полей после слова SELECT стоит *, то это значит, что информация будет выбираться из всех полей.

 

SELECT * FROM Студент WHERE Дата_рождения >= #1/1/83# – выбираются все записи из таблицы Студент из всех полей у которых в поле Дата_рождения стоит дата старше чем 1.1.1983

 

SELECT * FROM Студент WHERE Дата_рождения >= #1/1/83# AND Группа IN (930381, 930481) – выбираются все записи из таблицы Студент из все полей у которых в поле Дата_рождения стоит дата старше чем 1.1.1983 и которые обучаются в группе 930381 или 930481

 

SELECT * FROM Студент WHERE Дата_рождения BETWEEN #1/1/83# AND #1/1/85# AND Группа IN (930381, 930481) – выбираются все записи из таблицы Студент из все полей у которых в поле Дата_рождения стоит дата в диапазоне от 1.1.1983 до 1.1.1985 и которые обучаются в группе 930381 или 930481

 

SELECT * FROM Студент WHERE Фамилия LIKE ‘Иванов’ AND Группа IN (930381, 930481) – выбираются все записи из таблицы Студент из все полей у которых в поле Фамилия указано Иванов и которые обучаются в группе 930381 или 930481