- •Содержание
- •Введение
- •1. Основные понятия
- •1.1 Терминология, базовые принципы
- •1.1.1 Понятие базы данных, субд и информационной системы
- •1.1.2 База данных и субд
- •1.1.3 Принципы построения информационных систем
- •1.2.2 Архитектура «файл-сервер»
- •1.2 Архитектуры информационных систем
- •1.2.1 Понятие архитектуры информационной системы
- •1.2.3. Архитектура «клиент-сервер»
- •1.2.4 Многозвенные архитектуры
- •1.2.5. Информационные системы на основе web-архитектуры
- •1.2.6 Информационные системы, функционирующие в терминальном режиме
- •1.3 Модели данных
- •1.3.1 Сравнительная характеристика моделей данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •4. Постреляционная модель данных
- •5. Объектно-ориентированная модель данных
- •1.3.2 Неформальное введение в реляционную модель
- •1. Таблицы и связи
- •2. Первичные, альтернативные и внешние ключи
- •3. Null-значения
- •4. Метаданные. Схема базы данных
- •5. Правила ссылочной целостности
- •2. Реляционная модель
- •2.1 Реляционная модель. Структурная и целостная части
- •2.1.1 Структурная часть
- •2.1.2 Атрибуты и домены. Схема отношения
- •2.1.3 Кортежи. Отношение
- •2.1.4 Потенциальные ключи. Первичный ключ
- •2.1.5 Внешние ключи
- •2.1.6 Целостная часть реляционной модели
- •2.2 Манипуляционная часть реляционной модели
- •2.2.1 Реляционная алгебра
- •2.2.2 Реляционное исчисление
- •3. Проектирование базы данных
- •3.1 Семантический анализ предметной области
- •3.1.1 Трехуровневая модель ansi/sparc
- •3.1.2 Диаграммы «сущность - связь»
- •3.1.3 Case-технологии и case-системы
- •3.1.4 Методология idef1
- •3.2 Нормализация базы данных
- •3.2.1 Определение функциональной зависимости
- •3.2.2 Математические свойства фз, теоремы
- •3.2.3 Процедура нормализации. Декомпозиция отношений
- •3.2.4 Нормальные формы
- •3.3 Денормализация. Хранилища данных
- •3.3.1 Недостатки нормализованной базы данных
- •3.3.2 Oltp и olap-системы. Data Mining
- •3.3.3 Хранилища данных
- •4. Язык sql
- •4.1 Язык ddl. Основные объекты базы данных
- •4.1.1 Общий вид команд ddl
- •4.1.2 Основные объекты бд
- •4.2 Команды ddl для работы с таблицами
- •4.2.1 Создание таблицы
- •Типы даты и времени
- •4.2.2 Удаление таблиц и изменение их структуры
- •4.2.3 Пример создания базы данных
- •4.2.4 Создание таблиц на основе других таблиц
- •4.3 Команды манипулирования данными
- •4.3.1 Команда insert
- •Insert into имя_таблицы [(список_имен_столбцов)]
- •Values (список значений)
- •Insert into имя таблицы [(список столбцов)]
- •4.3.2 Команда delete
- •4.3.3 Команда update
- •4.4 Команда выборки данных (select)
- •4.4.1 Запросы на выборку по одной таблице
- •4.4.2 Соединение таблиц в запросах
- •Декартово произведение
- •Внутреннее (естественное) соединение таблиц
- •4. Самосоединения
- •4.4.3 Вложенные запросы
- •4.4.4 Комбинированные запросы
- •4.5 Представления (view)
- •4.5.1 Понятие представления
- •4.5.2 Создание и удаление представлений
- •4.5.3 Обновление представлений
- •4.5.4 Стандартные представления словаря данных Oracle
- •4.6 Хранимый код. Триггеры
- •4.6.1 Процедурные расширения языка sql
- •1. Оператор присваивания
- •2. Условный оператор
- •3. Операторы цикла
- •4.6.2 Использование команд sql в хранимом коде
- •4.6.3 Хранимые процедуры и функции
- •4.6.4 Триггеры
- •1. Триггер на вставку нового студента
- •2. Триггеры на удаление студента
- •3. Триггер на изменение оценки
- •5. Управление доступом к данным
- •5.1 Система безопасности субд
- •Разграничение доступа пользователей.
- •5.1.1 Разграничение доступа пользователей
- •Identified by пароль
- •5.1.2 Привилегии и роли
- •5.1.3 Аудит действий пользователей
- •5.2 Поддержка транзакций
- •5.2.1 Свойства транзакции
- •5.2.2 Поддержка транзакций в языке sql
- •5.2.3 Механизмы субд для поддержки транзакций
- •5.3 Настройка производительности. Индексы
- •5.3.1 Понятие индекса
- •5.3.2 Обзор индексов Oracle
- •Заключение
- •Библиографический список
Insert into имя таблицы [(список столбцов)]
SELECT … (запрос на выборку из других таблиц)
Например:
INSERT INTO marks (cod_st, cod_sub)
SELECT students.cod_st, subject.cod_sub
FROM students, subject WHERE cod_sub=5
В данном примере в таблицу оценок будут добавлены все студенты, а в качестве предмета будет помещен предмет с кодом 5 (команда SELECT будет подробно рассмотрена в следующих лекциях). Теперь преподавателю этого предмета достаточно только проставить оценки в уже созданных строках.
При выполнении команды ограничения проверяются для каждой вставляемой строки и в случае их нарушения хотя бы для одной из строк все данные не будут добавлены. Например, если кто-либо из студентов уже имеет оценку по предмету с кодом 5, автоматически выполнится команда ROLLBACK - откат.
Команда не выполнилась бы и в том случае, если бы на столбец mark было наложено ограничение NOT NULL.
4.3.2 Команда delete
Общий вид команды:
DELETE FROM имя_таблицы
[WHERE условие_отбора_строк_для_удаления]
Например:
Удалить всех студентов с фамилией Иванов
DELETE FROM students
WHERE name_st=’Иванов’
Более подробно фраза WHERE будет рассмотрена в следуюшем разделе при изучении команды выборки.
Полностью очистить таблицу students
DELETE FROM students
Нельзя удалить строку родительской таблицы, если есть связанные строки в подчиненной таблице и действует правило обеспечения ссылочной целостности ON DELETE RESTRICT. В приведенных выше примерах при определении внешнего ключа cod_st в таблице marks (оценки) было определено правило ON DELETE CASCADE, поэтому вместе со студентами будут каскадом удалены и все их оценки. Последняя команда, таким образом, очистит сразу две таблицы – students и marks.
Зато команда
DELETE FROM subjects
не удалит ничего, если в таблице marks имеется хотя бы одна строка, поскольку при возникновении ошибки будут автоматически отклонены все изменения, сделанные этой командой. Если на момент выполнения этой команды таблица оценок была пуста, таблица предметов будет благополучно очищена.
Надо заметить, что для полной очистки таблицы существует более эффективная команда
TRUNCATE TABLE имя_таблицы
Например:
TRUNCATE TABLE marks
4.3.3 Команда update
Данная команда не изменяет количество строк в таблице, поскольку ее назначение состоит в изменении данных, которые уже имеются в таблице.
Общий вид команды:
Update имя_таблицы set столбец1=значение [, столбец2=значение …]
[where условие_отбора_строк]
Например:
Прибавим всем студентам по одному баллу к каждой оценке
Update marks set mark= mark+1
При выполнении команды Update автоматически проверяются все ограничения столбца. В приведенном примере столбец mark имеет ограничение CHECK, которое задает диапазон оценок от 2 до 5. Следовательно, если в таблице имеется хотя бы одно значение оценки, равное 5, при увеличении на единицу оно выйдет за пределы диапазона, а все действия, выполненные командой, будут отменены.
Чтобы гарантированно увеличить все оценки, кроме пятерок, изменим команду:
Update marks set mark= mark+1
Where mark<5
