Лекции по дисциплине «Базы данных»

Вид материалаЛекции

Содержание


Управление данными
Раздел SELECT
Подобный материал:
1   ...   11   12   13   14   15   16   17   18   19

УПРАВЛЕНИЕ ДАННЫМИ

Извлечение данных — команда SELECT


Основным инструментом выборки данных в языке 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


Основное назначение раздела SELECT — задание набора столбцов, возвращаемых после выполнения запроса, т. е. внешнего вида результата. В простейшем случае возвращается столбец одной из таблиц, участвующих в запросе. В более сложных ситуациях набор значений в столбце формируется как результат вычисления выражения. Такие столбцы называются вычисляемыми и по умолчанию им не присваивается никакого имени. Пользователь может указать для столбца, возвращаемого после выполнения запроса, произвольное имя. Та­кое имя называется псевдонимом (alias). Наиболее часто это требуется при работе с раз­делом INTO, в котором каждый из возвращаемых столбцов должен иметь имя, и это имя должно быть уникально.

Синтаксис раздела SELECT следующий:

SELECT [ALL | DISTINCT]

[TOP n [PERCENT] [WITH TIES]]

< Список_выбора >


Ключевые слова ALL| DISTINCT

При указании ключевого слова ALL в результат запроса выводят­ся все строки, удовлетворяющие сформулированным условиям, тем самым разрешается включение в результат одинаковых строк. Параметр ALL используется по умолчанию.

Если в запросе SELECT указывается ключевое слово DISTINCT, то в результат выборки не будет включаться более од­ной повторяющейся строки. Таким образом, каждая возвращенная строка будет уникальной.

Ключевое слово TOP n [PERCENT] [WITH TIES]

Использование ключевого слова ТОР n, где n — числовое значе­ние, позволяет отобрать в результат не все строки, а только n пер­вых. При этом выбираются первые строки результата выборки, а не исходных данных. Поэтому набор строк в результате выборки при указании ключевого слова ТОР может меняться в зависимости от порядка сортировки. Если в запросе используется раздел WHERE, то ключевое слово ТОР работает с набором строк, возвращенных после применения логического условия, определенного в разделе WHERE.

Продемонстрируем использование ключевого слова ТОР:


SELECT TOP 5 * FROM Студенты


Из таблицы Студенты было выбрано 5 первых строк.

Можно также выбирать не фиксированное количество строк, а определенный процент от всех строк, удовлетворяющих условию. Для этого необходимо добавить ключевое слово PERCENT:


SELECT TOP 10 PERCENT FROM Студенты


Если указанное количество процентов строк представляет собой нецелое число, то всегда выполняется округление в большую сторону.

При указании вместе с предложением ORDER BY ключевого слова WITH TIES в результат будут включены строки, совпадающие по значению колонки сортировки с последними выведен­ными строками запроса SELECT TOP n [PERCENT].

Использование ключевого слова WITH TIES в следующем примере позволит обеспечить выдачу в ответ на запрос информации обо всех студентах первой по порядку группы:

SELECT TOP 10 PERCENT WITH TIES *

FROM Студенты

ORDER BY Номер_группы


Предложение <Список_выбора>

Синтаксис предложения <Список_выбора> следующий:

<Список выбора>::=

{*

|{<Имя_таблицы> | <Псевдоним_таблицы>}.*

|{<Имя_столбца> | <Выражение>}

[[AS] <Псевдоним_столбца>]

|<Псевдоним_столбца> = <Выражение>

} [,…,n]


Символ «*» означает включение в результат всех столбцов, имеющихся в списке таблиц раздела FROM.

Если в результат не нужно включать все столбцы всех таблиц, то можно явно указать имя объекта, из которого необходимо выбрать все столбцы (<Имя_таблицы>.* или <Псевдоним_таблицы>.*).

Отдельный столбец таблицы в результат выборки включается явным указанием имени столбца (параметр <Имя_столбца>). Стол­бец должен принадлежать одной из таблиц, указанных в разделе FROM. Если столбец с указанным именем имеется более чем в од­ном источнике данных, перечисленных в разделе FROM, то необхо­димо явно указать имя источника данных, к которому принадлежит столбец в формате <Имя_таблицы>.<Имя_столбца>. В противном случае будет выдано сообщение об ошибке.

Например, попробуем выбрать данные из столбца ID_Дисциплина, который имеется в таблицах «Дисциплина» и «Учебный_план»:


SELECT ID_Дисциплина, Наименование, Семестр

FROM Дисциплина, Учебный_план


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

То есть в этом случае необходимо явно указать имя источника данных, которому принадлежит столбец, например:


SELECT Дисциплина.ID_Дисциплина, Наименование, Семестр

FROM Дисциплина, Учебный план


Столбцам, возвращаемым как результат выполнения запроса, могут быть присвоены псевдонимы. Псевдонимы позволяют изме­нить имя исходного столбца или поименовать столбец, содержимое которого получено как результат вычисления выражения. Имя псев­донима указывается с помощью параметра [AS] <Псевдоним_столбца>. Ключевое слово AS необязательно при задании псевдонима.

В общем случае не требуется уникальности имен столбцов ре­зультата выборки, поэтому разные столбцы могут иметь одинаковые имена или псевдонимы.

Столбцы в результате выборки могут быть не только копией столбца одной из исходных таблиц, но и формироваться на основе вычисления выражения. Такой столбец в списке выбора задается с помощью конструкции <Выражение> [[AS] <Псевдоним_столбца>]. Выражение при этом может содержать константы, имена столбцов, функции, а также их комбинации. Дополнительно столбцу, форми­руемому на основе вычисления выражения, можно присвоить псев­доним, указав его с помощью параметра [AS] <Псевдоним_столбца>. По умолчанию вычисляемый столбец не имеет имени.

Другой способ формирования вычисляемого столбца состоит в использовании конструкции со знаком равенства: <Псевдоним_столбца> = <Выражение>. Единственным отличием этого спо­соба от предыдущего является необходимость обязательного задания псевдонима. В простейшем случае выражение является именем столбца, константой, переменной или функцией. Если в качестве выражения выступает имя столбца, то получаем еще один способ задания псевдонима для столбца.

Рассмотрим следующий пример. Пусть для таблицы «Студенты» необходимо построить запрос, представляющий фамилию, имя и отчество в одной колонке. Используя операцию конкатенации (сло­жения) символьных строк и значение ФИО в качестве псевдонима столбца, построим запрос:

SELECT ТОР 10 Фамилия + ' ' + Имя + ' ' + Отчество as ФИО, Номер_Группы

FROM Студенты