Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД ЛЕКЦИИ 1 (Т 1 - 3).doc
Скачиваний:
9
Добавлен:
04.05.2019
Размер:
998.91 Кб
Скачать

3.16. Язык sql: команда извлечения данных (select) и отдельные разделы этой команда

Основным инструментом выборки данных в языке SQL является команда SELECT. С помощью этой команды можно получить дос­туп к данным, представленным как совокупность таблиц практиче­ски любой сложности.

Чаше всего используется упрошенный вариант команды SELECT, имеющий следующий синтаксис:

SELECT [ALL | DISTINKT]

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

[ INTO <Новая_таблица> ]

FROM <Исходная_таблица>

[WHERE <Условие_отбора> ]

[ GROUP BY < Ключи_группировки> ]

[ HAVING <Условие_отбора> ]

[ ORDER BY <Ключи_сортировки> ]

Инструкция SELECT разбивается на отдельные разделы, каж­дый из которых имеет свое назначение. Из приведенного синтакси­ческого описания видно, что обязательными являются только разде­лы SЕLECT и FROM, а остальные разделы могут быть опушены (заключенные в [ ]). Примерный список разделов следующий:

SELECT OPTION HAVING INTO ORDFR BY

FROM GROUP BY WHERE

Команда (оператор) SELECT позволяет производить выборку и вычисления над данными из одной или нескольких таблиц. Результатом выполнения оператора является ответная таблица, которая может иметь (ALL), или не иметь (DISTINCT) повторяющиеся строки. По умолчанию в ответную таблицу включаются все строки, в том числе и повторяющиеся. В отборе данных участвуют записи одной или нескольких таблиц, перечисленных в списке раздела (операнда) FROM.

Список данных может содержать имена столбцов, участвующих в запросе, а так же выражения над столбцами. В простейшем случае в выражениях можно записывать имена столбцов, знаки арифметических операций (+, - , *, /), константы и круглые скобки. Если в списке данных записано выражение, то на-

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

попадают в новый (создаваемый) столбец ответной таблицы.

При использовании в списках данных имен столбцов нескольких таблиц для указания принадлежности столбца некоторой таблице применяют

конструкцию вида: <имя таблицы>, <имя столбца>.

Операнд WHERE задает условия, которым должны удовлетворять записи

в результирующей таблице. Выражение <условие выборки> является логическим. Его элементами могут быть имена столбцов, операции сравнения, арифметические операции, логические связки (И, ИЛИ, НЕТ), скобки, специальные функции (NULL) и т.д.

Операнд GROUP BY позволяет выделять в результирующем множестве записей группы. Группой являются записи с совпадающими значениями в столбцах, перечисленных за ключевым словом GROUP BY.

В логических и арифметических выражениях можно использовать следующие групповые операции (функции): AVG (среднее значение в группе), MAX (максимальное значение в группе), MIN (минимальное значение в группе), SUM (сумма значений в группе), COUNT (число значений в группе).

3.17. Примеры использования команды select

Рассмотрим примеры применения оператора SELECT, используя таблицу СЛУЖАЩИЕ (рис. 3.19).

Пример 1. Выбор записей с вычислениями и переименованием поля. Для таблицы СЛУЖАЩИЕ требуется вывести имена сотрудников и размер их зарплаты, увеличенный на 500 единиц. Оператор выбора можно записать следующим образом:

Рис. 3.19. Таблица СЛУЖАЩИЕ

SELECT СЛУЖАЩИЕ.ФИО, [Зарплата]+500 AS Зарплата_Новая

FROM СЛУЖАЩИЕ;

Запрос на SQL создаем открыв объект Запросы, выбрать в меню Создать запрос в режиме конструктора. В этом режиме закрываем Добавление таблицы и на панели инструментов выбираем Вид | Режим SQL.

Результат выполнения рассмотренного запроса показан на рис. 3.20.

Рис. 3.20. Результат выполнения запроса из примера 1

Пример 2. Выбор с условием. Вывести названия таких отделов таблицы СЛУЖАЩИЕ, в которых в данный момент отсутствуют руководители. Оператор SELECT для этого запроса можно записать так:

SELECT Служащие.Отдел, Служащие.Руководитель

FROM Служащие

WHERE (((Служащие.Руководитель) Is Null));

Результат выполнения рассмотренного запроса показан на рис. 3.21.

Рис. 3.21. Результат выполнения запроса из примера 2

Пример 3. Выбор с группированием. Пусть требуется найти минимальную и максимальную зарплаты для каждого из отделов (по таблице СЛУЖАЩИЕ). Оператор SELECT для этого запроса имеет вид:

SELECT Min(Служащие.Зарплата) AS [Min-Зарплата],

Max(Служащие.Зарплата) AS [Max-Зарплата], Служащие.Отдел

FROM Служащие

GROUP BY Служащие.Отдел;

Результат выполнения рассмотренного запроса показан на рис. 3.22.

Рис. 3.22. Результат выполнения запроса из примера 3

Пример 4. Выбор с условием в виде неравенства. Необходимо выбрать сотрудников из таблицы СЛУЖАЩИЕ, у которых зарплата находится в диапазоне от 16000 руб. до 20000 руб. включительно. Оператор SELECT для этого запроса имеет вид:

SELECT Служащие.ФИО, Служащие.Зарплата

FROM Служащие

WHERE (((Служащие.Зарплата)>=16000 And (Служащие.Зарплата)<=20000));

Результат выполнения рассмотренного запроса показан на рис. 3.23.

Рис. 3.23. Результат выполнения запроса из примера 4