- •Базы данных
- •Литература
- •1. Введение в базы данных
- •1.1. Данные, информация, знания
- •1.2. Банки и базы данных (основные компоненты и понятия)
- •1.3. Архитектура информационной системы клиент-сервер
- •1.4. Классификация и основные функции субд
- •1.5. Обмен данными при работе с бд в локальной ис
- •2. Модели и типы данных
- •2.1. Иерархическая модель
- •2.2. Сетевая модель
- •2.3. Реляционная модель
- •2.4. Типы данных в субд
- •3. Реляционная модель данных
- •3.1. Определение реляционной модели
- •3.2. Связывание таблиц; основные виды связи
- •3.3. Связь таблиц вида 1:1
- •3.4. Связь таблиц вида 1:м
- •3.5. Связь таблиц вида м:1
- •3.6. Связь таблиц вида м:м
- •3.7. Контроль целостности связей
- •3.8. Введение в язык запросов qbe
- •3.9. Основные объекты субд ms Access
- •3.10. Общая характеристика языка qbe субд ms Access
- •3.11. Построение условий в запросах на выборку в субд ms Access
- •3.12. Запросы на выборку в субд ms Access (вычисления по горизонтали и вертикали, группирование записей)
- •3.13. Структурированный язык запросов sql (общая характеристика, инструкции)
- •3.14. Структурированный язык запросов sql (имена, типы данных, встроенные функции)
- •3.15. Язык sql: команда создания таблицы (create table)
- •Описание столбцов
- •Пример создания таблицы
- •3.16. Язык sql: команда извлечения данных (select) и отдельные разделы этой команда
- •3.17. Примеры использования команды select
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