
- •Конспект лекций
- •Раздел «бд. Субд. Основные понятия» 8
- •2. Жизненный цикл баз данных
- •3 Эксплуатационные характеристики базы данных
- •Раздел «бд. Субд. Основные понятия»
- •4. Управление параллельным доступом.
- •Раздел «бд. Субд. Основные понятия» Лекция №3 Место баз данных в архитектуре ис
- •1 Локальные ис
- •2 Ис в файл-серверной архитектуре
- •3 Ис в клиент-серверной архитектуре
- •4 Двухзвенные модели архитектуры
- •5 Трехзвенные модели
- •6 Монитор транзакций
- •7 Ис в Internet и intranet
- •Раздел «Концептуальный уровень проектирования бд» Лекция №4 Концептуальная модель данных. Сущности, атрибуты, ключи
- •1 Основные понятия
- •2 Задачи моделирования данных
- •3 Сущности
- •4 Атрибуты
- •5 Ключи
- •Раздел «Концептуальный уровень проектирования бд» Лекция №5 Концептуальная модель данных. Связи. Классы и подклассы. Концептуальная схема
- •1 Связи
- •2 Классы и подклассы
- •3 Источники данных для концептуального проектирования
- •4 Построение концептуальной схемы
- •5 Анализ концептуальной модели
- •Раздел «Логический уровень проектирования бд»
- •3.3 Реляционная модель
- •3.4 Объектно-реляционная модель
- •3.5 Объектно-ориентированная модель данных
- •3.6 Модель данных на основе xml
- •Раздел «Реляционная теория бд» Лекция №7 Реляционная модель данных. Основные понятия
- •1 Словарь терминов
- •2 Целостность реляционной модели
- •3 Математическое описание реляционной модели
- •Раздел «Реляционная теория бд» Лекция №8 Реляционная алгебра и реляционное исчисление
- •1 Реляционная алгебра. Теоретико-множественные операции
- •2 Реляционная алгебра. Специальные реляционные операции
- •3 Дополнительные реляционные операции
- •4 Примеры записи запросов
- •5 Реляционное исчисление
- •Раздел «Реляционная теория бд» Лекция №9 Нормализация реляционной модели. Функциональные зависимости
- •1 Что такое нормализация?
- •2 Функциональная зависимость
- •3 Теоремы о функциональных зависимостях
- •5 Алгоритм нормализации отношений. Метод декомпозиции
- •6 Другие нормальные формы
- •Раздел «Реляционная теория бд»
- •1.2 Связь частичная для одной из сущностей
- •1.3 Связь частичная для обеих сущностей
- •2 Реализация бинарной связи 1:m («один-ко-многим»)
- •2.1 Связь обязательная для m-связной сущности
- •2.2 Связь частичная для m-связной сущности
- •3 Бинарная связь n:m («многие-ко-многим»)
- •4 Связи более высокого порядка (n-арные)
- •5 Классы и подклассы
- •Раздел «Реляционная теория бд» Лекция №12 Стандарт idef1x
- •1 Стандарты моделирования данных
- •2 Основные понятия стандарта idef1x
- •3 Графический язык idef1x
- •Раздел «Физический уровень проектирования бд» Лекция №13 Физическая модель данных
- •1 Исходные данные для физического проектирования
- •2 Возможная методика перехода к физической модели на примере реляционной модели
- •2.1 Преобразование отношений в таблицы
- •2.2 Преобразование атрибутов в поля (столбцы) таблиц
- •2.3 Преобразование доменов в типы данных
- •2.4 Первичные ключи
- •2.5 Порядок расположения столбцов
- •2.6 Создание ссылочных ограничений
- •3 Факторы, влияющие на производительность бд
- •3.1 Индексы
- •3.2 Денормализация
- •Раздел «Язык sql» Лекция №14 Введение в язык sql. Команда Select
- •1 Стандарты
- •2 Возможности sql
- •3 Запросы на выборку данных
- •4 Примеры запросов
- •Раздел «Язык sql» Лекция №15 Команды определения данных
- •1 Команда create table
- •2 Команда alter table
- •3 Поддержка ограничений целостности
- •4. Редактирование записей в таблице
- •Раздел «Язык sql» Лекция №16 Дополнительные аспекты реляционной технологии
- •1 Проблемы, требующие решения
- •2 Запросы
- •3 Представления
- •4 Курсоры
- •5 Хранимые процедуры
- •6 Триггеры
- •7 Функции, определяемые пользователем
- •8 Транзакции
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 КодТовара; Вернуться в содержание