Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД-Лабораторные работы / БД-Практическая работа№10.docx
Скачиваний:
56
Добавлен:
04.06.2015
Размер:
37.45 Кб
Скачать

БД

Практическая работа № 10

ЦЕЛЬ

Научиться создавать запросы на выборку в режиме SQL.

Теоретический материал:

Запрос на выборку.

Синтаксис оператора SЕLЕСТ.

SЕLЕСТ [Distinct/ALL]<имя поля 1>,< имя поля 2>, …

FRОМ <таблица1>, <таблица2>,…

[WHERE <условие1>,<условие2>,…

GROUP BY< имя поля 1>,< имя поля 2>, …

HAVING <предикат-условие для группы>

ORDER BY< имя поля 1>,< имя поля 2>, …]

SЕLЕСТ задает список полей.

ALL означает, что в результате отобразятся все строки, что может привести к появлению одинаковых строк.

Distinct предполагает отсутствие дублирующих строк.

При многотабличных запросах имена полей записываются с указанием таблицы, в следующем виде Таблица.Поле

*- включает все столбцы из исходной таблицы.

Имя поля и таблицы в предложении SЕLЕСТ можно заключить в прямоугольные скобки. Если имя не содержит пробелов или специальных знаков (например, знаков препинания), прямоугольные скобки можно не использовать. Если имя содержит пробелы или специальные знаки, прямоугольные скобки необходимы.

Также результатом вывода команды SЕLЕСТ могут быть функции агрегирования, выражения.

FRОМ задается перечень исходных таблиц.

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

- сравнения (=,<>,>,<,>=,<=), более сложные выражения строятся с помощью логических операторов AND, OR, NOT.

Условия задаются следующим образом: Таблица.Поле Знак отношения Значение

- BETWEEN A AND B – задает диапазон от А до В.

- IN – определяет набор значений в которое данное значение может или не может быть включено.

- LIKE – сравнивает с шаблоном

GROUP BY задает список полей группировки.

HAVING задают предикаты-условия, накладываемые на каждую группу.

ORDER BY задает список полей по которым производится сортировка.

ASC – по возрастанию, DESC – по убыванию.

Ход работы:

Создание инструкции SQL

Для создания инструкции SQL выберите вкладку Создание Þ Конструктор запросов Þ закройте окно добавления таблиц Þ на вкладке Конструктор/ группа Результаты/SQL режим.

Имя поля в предложении SЕLЕСТ можно заключить в прямоугольные скобки. Если имя не содержит пробелов или специальных знаков (например, знаков препинания), прямоугольные скобки можно не использовать. Если имя содержит пробелы или специальные знаки, прямоугольные скобки необходимы.

1. Простая выборка

1. Создать запрос, который выводит Название книги, предметную область и вид печатной продукции из таблицы Книги.

SЕLЕСТ [Нaзвaние книги], [Предметнaя область], [Вид печaтной продукции]

FRОМ Книги;

Просмотрите сформированную запросом информацию. Сохраните запрос под именем S1.

Фраза SЕLЕСТ может содержать не только перечень столбцов таблицы или символ *, но и выражения.

2. Создайте запрос выводящий значение общей стоимости книг, исходя из их цены и количества:

SELЕCT Книги.[Название книги], Книги.[Стоимость книги], Книги.[Количество экземпляров], ([Стоимость книги]*[Количество экземпляров]) AS [Общая стоимость]

FRОM Книги;

Просмотрите полученный результат. Сохраните запрос под именем S2.

Фраза SЕLЕСТ может включать не только выражения, но и отдельные числовые или текстовые константы. Текстовые константы должны заключаться в апострофы (').

3. Создайте запрос, включающий текстовую константу.

SELЕCT [Название книги], [Стоимость книги], [Количество экземпляров],'Общая стоимость=', ([Стоимость книги]*[Количество экземпляров])

FRОM Книги;

Просмотрите полученную информацию.

Измените, запрос таким образом, чтобы столбец, где выводится текст Общая стоимость=, назывался Текст, где вычисляется результат – Результат. Сохраните запрос под именем S3.

Выборка c использованием фразы WHERE

Использование операторов сравнения

В синтаксисе фразы WHERE показано, что для отбора нужных строк таблицы можно использовать операторы сравнения = (равно), <> (не равно), < (меньше), <= (меньше или равно), > (больше), >= (больше или равно), которые могут предваряться оператором NOT, создавая, например, отношения "не меньше" и "не больше".

4. Создайте запрос, выводящий список литературы по информатике.

SЕLЕСТ [Название книги], [Предметная область]

FRОМ Книги

WHERE [Предметная область]= "Информатика";

Просмотрите полученный результат. Сохраните запрос под именем S4.

Если нет записей, удовлетворяющих условию, то получим на экране сообщение "No rows exist or satisfy the specified clause" или аналогичное (в зависимости от вкусов разработчиков разных СУБД).

Возможность использования нескольких условий, соединенных логическими операторами AND, OR, AND NOT и OR NOT, позволяет осуществить более детальный отбор строк.

5. Создайте запрос, выводящий список журналов по информатике.

SЕLЕСТ [Название книги], [Предметная область], [Вид печатной продукции]

FRОМ Книги

WHERE [Предметная область]= "Информатика" AND [Вид печатной продукции]= "журнал";

Просмотрите полученный результат. Добавим к этому запросу еще одно условие

SЕLЕСТ [Название книги], [Предметная область], [Вид печатной продукции]

FRОМ Книги

WHERE [Предметная область]= "Информатика" AND [Вид печатной продукции Вид печатной продукции]= "журнал" OR [Вид печатной продукции Вид печатной продукции]= "брошюра";

Просмотрите полученный результат. Сохраните запрос под именем S5.