Практическая работа
Тема: «Создание простых SQL-запросы на выборку данных.
Синтаксис оператора SELECT.
Выборка с помощью оператора SELECT — наиболее частая команда при работе с реляционной базой данных. Этот оператор обладает большими возможностями по заданию структуры выходной информации, указанию источников входной информации, способа упорядочения выходной информации, формированию новых значений и т. п. .
При выполнении выборки могут формироваться и новые данные, так называемые вычисляемые поля, являющиеся результатом обработки исходных данных. Возможно упорядочение выводимых данных, формирование групп записей, подсчет групповых итогов, формирование подмножеств данных (записей), являющихся основой для формирования условий по обработке следующего этапа — вложенных запросов.
Аргумент | Назначение |
Предикат | Предикаты используются для ограничения числа возвращаемых записей: ALL — все записи; DISTINCT — записи, различающиеся в указанных для вывода полях; DISTINCTROW — полностью различающиеся записи ; по всем полям; ТОР — возврат заданного числа или процента записей в диапазоне, соответствующем фразе ORDER BY |
Таблица | Имя таблицы, поля которой формируют выходные данные |
Поле1, Поле2 | Имена полей, используемых при отборе (порядок их следования определяет выходную структуру выборки данных) |
Псевдоним1, Псевдоним2 | Новые заголовки столбцов результата выборки данных |
FROM | Определяет выражение, используемое для задания источника формирования выборки (обязательно присутствует в каждом операторе) |
Внешняя база данных | Имя внешней базы данных — источника данных для выборки |
[WHERE ...] | Определяет условия отбора записей (необязательное) |
[GROUP BY...] | Указание полей (максимум — 10) для формирования групп, по которым возможно вычисление групповых итогов; порядок их следования определяет виды итогов (старший, промежуточный и т. п.) — необязательное |
[HAVING ...] | Определяет условия отбора записей для сгруппированных данных (задан способ группирования GROUP BY ...) — необязательное |
[ORDER BY ...] | Определяет поля, по которым выполняется упорядочение выходных записей; порядок их следования соответствует старшинству ключей сортировки. Упорядочение возможно как по возрастанию (ASC), так и по убыванию (DESC) значения выбранного поля |
[WITH OWNERACCESS OPTION] | При работе в сети в составе защищенной рабочей группы для указания пользователям, не обладающим достаточными правами, возможности просматривать результат запроса или выполнять запрос |
Универсальный оператор SELECT имеет следующую конструкцию:
Оператор SELECT реализует сложные алгоритмы запросов. Слово SELECT определяет структуру выводимой информации, это могут быть поля таблиц, вычисляемые выражения. Вычисляемое выражение состоит из:
полей таблиц;
констант;
знаков операций;
встроенных функций;
групповых функций SQL.
В первом случае выбираются все записи таблицы СТУДЕНТ в составе указанных полей. Если отбираются все поля в том же самом порядке, что и в структуре таблицы, можно указать символ точки. Во втором случае отбирается пять первых фамилий студентов, в третьем случае выбирается пять первых фамилий студентов, упорядочение записей осуществлено по учебным группам.
Если используются одноименные поля из нескольких таблиц, включенных в предложение FROM, следует указать перед именем такого поля имя таблицы через . (точку): [Студент заочник].[Группа] и [Студент].[Группа] — два одноименных поля из разных таблиц.
Для изменения заголовка столбца с результатами выборки используется служебное слово AS.
В первом случае будут выведены неповторяющиеся даты рождения студентов, которые имеют новое наименование — Юбилей. Во втором случае в результирующей таблице присутствуют все записи, но вместо [Дата рождения] указан Год и вместо Фамилия и Имя, соединенных вместе через пробел, — ФИО.
Наиболее часто слово AS применяется для именования вычисляемых полей.
Задание 1.
Выбрать все записи таблицы «Студенты» в составе полей «Имя» и «Фамилия».
Выбрать 3 первых фамилии студентов из таблицы «Студенты».
Выбрать 4 первых фамилии студентов из таблицы «Студенты», осуществить упорядочение записей по группам.
Из таблицы «Студент» вывести неповторяющиеся даты рождения студентов.
Из таблицы «Студент» вывести все записи, но вместо [Дата рождения] указать Год и объединить Фамилия и Имя.
Задание условий выборки
Предложение WHERE может содержать выражения, связанные логическими операторами, с помощью которых задаются условия выборки (табл. 1).
Таблица 1. Логические условия для построения условий выборки
Оператор | Назначение | Оператор | Назначение | Оператор | Назначение |
AND | Логическое И или коньюнкция (логическое умножение) | Imp | Логическая импликация выражений | Or | Логическое ИЛИ, дизъюнкция (включающее Or) |
Eqv | Проверка логической эквивалентности выражений | Not | Отрицание | Хог | Логическое ИЛИ (исключающее Or) |
Кроме того, могут использоваться операторы для построения условий:
LIKE — выполняет сравнение строковых значений;
BETWEEN...AND — выполняет проверку на диапазон значений;
IN — выполняет проверку выражения на совпадение с любым из элементов списка;
IS — проверка значения на Null;
Условие обеспечивает «горизонтальную» выборку данных, т. е. результатом запроса будут только те записи, которые удовлетворяют сформулированным условиям.
P.S. вместо 01.01.79 писать в запросах SQL 01/01/79
В первом случае выбираются студенты, дата рождения которых позже 1.1.79. Во втором случае будут отобраны все студенты, обучающиеся в группах 1212 или 1213 и дата рождения которых позже 1.1.79. В третьем случае выбираются студенты, дата рождения которых находится в заданном диапазоне, и они обучаются в любой из указанных групп. В четвертом случае выбираются студенты, которые обучаются в тех же группах, что и студенты-заочники, дата рождения которых позже 01.01.79.
Задание 2.
Используя оператор WHERE выбрать всех студентов из таблицы «Студенты» дата рождения которых позже xx/xx/xxxx (выбрать из своей таблицы)
Выбрать всех студентов обучающихся в гуппе xx (выбрать из своей таблицы) «Студенты» дата рождения которых позже xx/xx/xxxx (выбрать из своей таблицы)
Выбрать всех студентов из таблицы «Студенты» дата рождения которых в диапазоне xx/xx/xxxx- xx/xx/xxxx (выбрать из своей таблицы).
Выбрать студентов, которые обучаются в тех же группах, что и студентыы, дата рождения которых позже 01 xx/xx/xxxx- xx/xx/xxxx (выбрать из своей таблицы).