Операция выборки в языке 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