Раздел SELECT
Извлечение данных — команда SELECT
Управление данными
Целью любой системы управления базами данных в конечном счете является ввод, изменение, удаление и выборка данных. Рассмотрим методы управления данными с помощью языка SQL.
Основным инструментом выборки данных в языке SQL является команда SELECT. С помощью этой команды можно получить доступ к данным, представленным как совокупность таблиц практически любой сложности.
Чаще всего используется упрощенный вариант команды SELECT, имеющий следующий синтаксис:
SELECT <Список выбора>
[ INTO <Новая_таблица>]
FROM <Исходная_таблица>
[WHERE <Условие_отбора>]
[GROUP BY <Ключи группировки>]
[HAVING <Условие_отбора>]
[ORDER BY <Ключи сортировки> ASC|DESC] ]
Инструкция SELECT разбивается на отдельные разделы, каждый из которых имеет свое назначение. Из приведенного синтаксического описания видно, что обязательными являются только разделы SELECT и FROM, а остальные разделы могут быть опущены. Полный список разделов следующий:
SELECT
INTO
FROM
WHERE
GROUP BY
HAVING
UNION
ORDER BY
COMPUTE
FOR
OPTION
Основное назначение раздела SELECT (одного из двух обязательных разделов, которые должны указываться в любом запросе) задание набора столбцов, возвращаемых после выполнения запроса т. е. внешнего вида результата. В простейшем случае возвращается столбец одной из таблиц, участвующих в запросе. В более сложных ситуациях набор значений в столбце формируется как результат вычисления выражения. Такие столбцы называются вычисляемыми и по умолчанию им не присваивается никакого имени.
При необходимости пользователь может указать для столбца, возвращаемого после выполнения запроса, произвольное имя. Такое имя называется псевдонимом (аliаs). В обычной ситуации назначение псевдонима необязательно, но в некоторых случаях требуется явное его указание. Наиболее часто это требуется при работе с разделом INTO, в котором каждый из возвращаемых столбцов должен иметь имя, и это имя должно быть уникально.
Помимо сказанного, с помощью раздела SELECT можно ограничить количество строк, которое будет включено в результат выборки. Синтаксис раздела SELECT следующий:
SELECT [ ALL| DISTINT]
[ТОР n [PERCENT]]
<Список_выбора>
Рассмотрим назначение параметров.
При указании ключевого слова ALL в результат запроса выводятся все строки, удовлетворяющие сформулированным условиям, тем самым разрешается включение в результат одинаковых строк (одинаковость строк определяется на уровне результата отбора, а не на уровне исходных данных). Параметр ALL используется по умолчанию.
Если в запросе SELECT указывается ключевое слово DISTINCT, то в результат выборки не будет включаться более одной повторяющейся строки. Таким образом, каждая возвращенная строка будет уникальной. Уникальность строки при этом определяется на уровне строк результата выборки, а не на уровне исходных данных. Если в результат выборки включаются два столбца, уникальность будет определяться по значениям обоих этих столбцов. В отдельности значения в первом и втором столбцах могут повторяться, но комбинация значений в обоих столбцах должна быть уникальна. Аналогичные правила действуют и в отношении больше го количества столбцов.
Ключевое слово TOP n [PERSENT]
Использование ключевого слова TOP n, где n-числовое значение, позволяет отобрать в результат не все строки, а только первые n. При этом отбираются первые строки результата выборки, а не исходных данных. Если в запросе используется раздел WHERE, то ключевое слово TOP работает с набором строк, возвращенных после применения логического условия, определенного в разделе WHERE.
Можно выбрать не фиксированное количество строк, а определенный процент от всех строк, удовлетворяющих условию. Для этого необходимо добавить ключевое слово PERSENT.
Предложение <Список_выбора>
Синтаксис:
<Список_выбора>::={*|{<Имя_таблицы>|<Псевдоним_таблицы>}.*
|{<Имя_столбца>|<Выражение>}|
[[AS],<Псевдоним_столбца>]
|<Псевдоним_столбца>=<Выражение>
}[,…,n]
Символ * означает включение в результат всех столбцов, имеющихся в списке таблиц раздела FROM.
Если в результат не нужно включать все столбцы всех таблиц, то можно явно указать имя объекта, из которого необходимо выбрать все столбцы (<Имя_таблицы>.* или <Псевдоним_таблицы>.*)
SELECT Дисциплина.ID_Дисциплина, Наименование, Семестр
FROM Дисциплина, Учебный_план