Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД_2013_Задания / КонспектЛекций_БД_СоболеваНВ_2013.docx
Скачиваний:
125
Добавлен:
12.03.2015
Размер:
634.27 Кб
Скачать

2 Возможности sql

Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе. В соответствии с тем, какие изменения происходят в базе данных, различают следующие типы запросов:

  • запросы на создание или изменение в базе данных новых или существующих объектов (при этом в запросе описывается тип и структура создаваемого или изменяемого объекта);

  • запросы на получение данных;

  • запросы на добавление новых данных (записей)

  • запросы на удаление данных;

  • обращения к СУБД.

Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы — это операции над таблицами. В соответствии с этим, запросы делятся на

  • запросы, оперирующие самими таблицами (создание и изменение таблиц);

  • запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.

Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием

  • типа хранимых в каждом поле значений;

  • связей между таблицами (задание первичных и вторичных ключей);

  • информации, необходимой для построения индексов.

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

  • вставка новой строки;

  • изменение значений полей строки или набора строк;

  • удаление строки или набора строк.

Самый главный вид запроса — это запрос, возвращающий (пользователю) некоторый набор строк, с которым можно осуществить одну из трёх операций:

  • просмотреть полученный набор;

  • изменить все записи набора;

  • удалить все записи набора.

Таким образом, использование SQL сводится, по сути, к формированию всевозможных выборок строк и совершению операций над всеми записями, входящими в набор.

3 Запросы на выборку данных

Для формирования запросов на выборку данных из таблиц используется команда SELECT.

Рассмотрим основные опции данной команды.

SELECT [DISTINCT|ALL] <Список вывода>

[FROM <Список таблиц>]

[WHERE <Условие выборки>]

[GROUP BY <Условие группировки>

[HAVING <Условие выбора группы>]]

[ORDER BY <Условие сортировки>];

DISTINCT – при выводе исключить повторяющиеся строки;

ALL – вывести всё, режим по умолчанию;

WHERE – выбор строк таблиц, значения полей (граф) в которых удовлетворяют условию выборки;

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

HAVING – аналогично WHERE, но внутри группы строк таблицы;

ORDER BY – сортировка по указанному полю (полям) в порядке возрастания (ASC) или порядке убывания (DESC).

4 Примеры запросов

Рассмотрим учебную БД, состоящую из трёх таблиц:

КЛИЕНТ (№клиента, Ф, И, О, СуммаКредита, Город);

ТОВАР (КодТовара, НазваниеТовара, Цена);

ПОКУПКА (№клиента, КодТовара, Количество).

Пример 1. Вывести список клиентов, проживающих в г. Ижевске, в порядке убывания их кредита.

Вариант 1:

SELECT №клиента, Ф, И, О, СуммаКредита

FROM КЛИЕНТ

WHERE Город = ‘Ижевск’

ORDER BY СуммаКредита DESC;

Вариант 2 (переименование граф результирующей таблицы):

SELECT №клиента AS Номер клиента, Ф AS Фамилия, И AS И., О AS О., СуммаКредита AS Сумма кредита

FROM КЛИЕНТ

WHERE Город = ‘Ижевск’

ORDER BY СуммаКредита DESC;

Пример 2. Вывести список товаров, стоимость которых находится в диапазоне от 500 до 1000.

Вариант 1:

SELECT КодТовара, НазваниеТовара, Цена

FROM ТОВАР

WHERE Цена BETWEEN 500 AND 1000;

Вариант 2:

SELECT *

FROM ТОВАР

WHERE Цена BETWEEN 500 AND 1000;

Вариант 3:

SELECT *

FROM ТОВАР

WHERE Цена >= 500 AND Цена <=1000;

Пример 3. Выбрать все товары, наименование которых начинается с буквы «Т».

SELECT *

FROM ТОВАР

WHERE НазваниеТовара LIKE ‘Т%’;

В примере использован один из символов шаблона:

% - заменяет любую последовательность символов;

_ - одиночный символ.

Пример 4. Выбрать номера клиентов, которым продан товар с названием «Стул 5АС».

SELECT №клиента

FROM ТОВАР, ПОКУПКА

WHERE НазваниеТовара = ‘Стул 5АС’ AND КЛИЕНТ.№клиента = ПОКУПКА.№клиента;

Пример 5. Определить номера клиентов, сумма кредита которых больше или равна средней сумме кредита для города, в котором проживает клиент.

SELECT №клиента, СуммаКредита, Город

FROM КЛИЕНТ X, КЛИЕНТ Y

WHERE СуммаКредита >= (SELECT AVG(СуммаКредита)

FROM Y

WHERE X.Город = Y.Город);

В примере использована одна из стандартных агрегатных функций:

AVG – подсчёт среднего значения по графе всей таблицы или по группе строк таблицы;

COUNT – подсчёт количества строк таблицы в целом или в выделенной группе строк;

SUM – подсчёт суммы по графе (таблицы или группы);

MAX – поиск максимального значения в графе (таблицы или группы);

MIN – поиск минимального значения (таблицы или группы).

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

Пример 6. Определить общий объём покупок по каждому товару в количественном выражении.

SELECT КодТовара, SUM(Количество)

FROM ПОКУПКА

GROUP BY КодТовара; Вернуться в содержание