Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
1.63 Mб
Скачать

Разделы SELECT и FROM являются обязательными, все другие разделы являются необязательными.

Выбрать все поля из таблицы Студент

SELECT Студенты.*

FROM Студенты;

Выбрать два поля из таблицы Студенты

SELECT NOM_ZACH, FIO FROM Студенты;

Декартово произведение таблиц Студенты и Экзамены

SELECT Студенты.*, Экзамены.* FROM Студенты, Экзамены;

При этом выбираются все поля из таблицы

Предикаты сравнения (=, <>, >, >=, <, <=), которые имеют традиционный смысл.

Выбрать из таблицы Экзамен все поля для записей, где оценка 5:

SELECT Экзамен.* FROM Экзамен

WHERE Оценка = 5;

Предикат BETWEEN A AND B – принимает значения между А и В.

Выбрать из таблицы Продажа все поля для записей, где поле Количество попадает в интервал от 10 до 50:

SELECT Продажа.* FROM Продажа

WHERE Количество between 10 and 50;

Предикат вхождения в множество IN (множество) истинен тогда, когда сравниваемое значение входит в множество заданных значений.

Выбрать из таблицы Группы все поля для записей, где поле Шифр_группы имеет значение ИВТ-01, ИВТ-02, ИВТ-03:

SELECT Группы.* FROM Группы

WHERE Шифр_группы In (“ИВТ-01”, “ИВТ-02”, “ИВТ-03”);

Предикат сравнения с образцом LIKE и NOT LIKE. Предикат LIKE требует задания шаблона, с которым сравнивается заданное значение, предикат истинен, если сравниваемое значение соответствует шаблону, и ложен в противном случае. Предикат NOT LIKE имеет противоположный смысл.

Шаблон может содержать % (* для Access) для обозначения любого

числа символов; _ (? для Access) для обозначения любого одного символа.

Выбрать из таблицы Студенты все поля для записей, где поле Фамилия начинается с буквы «С» или «М»:

SELECT Студенты.* FROM Студенты

WHERE Фамилия Like “С%” or Фамилия = Like “М%”;

Предикат существования EXIST и несуществования NOT EXIST.

В условиях поиска могут быть использованы все рассмотренные предикаты.

Рассмотрим БД, которая моделирует сдачу сессии в некотором учебном заведении. Пусть она состоит из трех отношений R1, R2, R3, представленных таблицами R1, R2, R3 соответственно.

R1 = (ФИО, Дисциплина, Оценка);

R2 = (ФИО, Группа);

R3 = (Группа, Дисциплина);

Приведем несколько примеров использования оператора SELECT.

Вывести список всех групп (без повторений), где должны пройти экзамены:

SELECT DISTINCT Группа FROM R3;

Результат

Найти студентов, пришедших на экзамен, но не сдавших его с указанием названия дисциплины:

SELECT ФИО, Дисциплина

FROM R1

WHERE Оценка Is null;

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

SELECT ФИО, Дисциплина

FROM R2, R3

WHERE R2.Группа = R3.Группа;

Результат

Оператор SELECT может содержать вычисляемые поля.

Для вычисляемого поля можно задать имя после слова

AS.

Вывести все поля из таблицы Продажа и добавить вычисляемое поле Стоимость_покупки:

SELECT П.*, Цена_за_единицу*Количество AS Стоимость_покупки FROM Продажа П;

Даны две таблицы Товары (Код, Название, Розничная_цена), Продажа (Чек, Код, Дата_продажи, Количество). Выбрать поля Название и Розничная_цена из таблицы Товары и поля Чек, Дата_продажи и Количество из таблицы Продажа. Добавить вычисляемое поле Стоимость_покупки.

SELECT Т.Название, Т.Розничная_цена, П.Чек, П.Дата_продажи, П.Количество, Т.Розничная_цена*П.Количество AS Стоимость_покупки

FROM Товары Т, Продажа П WHERE Т.Кода = П.Код;

Применение агрегатных функций и группировки

Агрегатные функции применяются подобно именам полей в операторе SELECT, но они используют имя поля как аргумент. С функциями SUM и AVG могут использоваться только числовые поля. С функциями COUNT, MAX, MIN могут использоваться как числовые, так и символьные поля. При использовании с символьными полями MAX и MIN будут транслировать их в эквивалент ASCII кода и обрабатывать в алфавитном порядке.

Например, можно вычислить количество студентов, сдавших экзамены по каждой дисциплине. Для этого надо выполнить запрос с группировкой по полю «Дисциплина» и вывести в качестве результата название дисциплины и количество строк в группе по данной дисциплине. Применение символа * в качестве аргумента функции COUNT означает подсчет всех строк в группе..

SELECT R1.Дисциплина, COUNT(*) FROM R1

GROUP BY R1.Дисциплина;

Результат

Соседние файлы в папке Лекции ПрБД, 2 курс 3 семестр (для ИВТ и т.п.)