
- •Реляционная модель данных. Отношения и их свойства. Потенциальные и первичные ключи. Внешние ключи и целостность данных.
- •Функциональные зависимости и нормализация отношений. Нормальные формы. Сознательная денормализация.
- •Определение функциональной зависимости
- •Математические свойства фз, теоремы
- •Процедура нормализации. Декомпозиция отношений
- •Денормализация. Хранилища данных Недостатки нормализованной базы данных
- •Основные компоненты реляционной базы данных: таблицы, индексы, представления, хранимые подпрограммы, триггеры. Язык ddl.
- •Язык dml. Основные виды запросов к базе данных.
- •Команда insert Вариант 1 – вставка одной строки
- •Insert into имя_таблицы [(список_имен_столбцов)]
- •Values (список значений)
- •Insert into имя таблицы [(список столбцов)]
- •Команда update
- •Команда delete
- •Команда выборки данных (select)
- •Безопасность данных. Разграничение прав доступа и аудит действий пользователей.
- •5.1.1 Разграничение доступа пользователей
- •Identified by пароль
- •5.1.2 Привилегии и роли
- •5.1.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
Команда 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
Команда выборки данных (select)
Команда выборки SELECT является одной из самых мощных команд языка SQL, которая реализует все операции реляционной алгебры и некоторые предложения реляционного исчисления. Результатом команды выборки всегда является новая таблица (возможно, пустая или содержащая одно значение, которое трактуется как таблица из одной строки и одного столбца).
Новая таблица является виртуальной, т.е. она существует (обычно в оперативной памяти) до тех пор, пока в ней есть необходимость, она может участвовать в другой команде SQL (CREATE для различных объектов БД, INSERT), в другой команде SELECT (а также DELETE или UPDATE) как результат вложенного запроса или передается клиенту для последующей обработки.
Напомним, что при выполнении любой, сколь угодно сложной, команды выборки состояние базы данных не изменяется, поскольку в процессе ее исполнения выполняются только операции чтения и обработки данных.
Синтаксис команды, с учетом всех ее нюансов, является громоздким, поэтому приведем лишь общий порядок следования основных предложений (фраз):
SELECT [DISTINCT] список_выражений(* - все столбцы таблицы)
FROM список_таблиц, представлений, запросов
(возможно, с операцией соединения JOIN)
[WHERE условия_отбора_строк]
[GROUP BY список_выражений_для_группировки]
[HAVING условия_отбора_групп_с_агрегатными_функциями]
[ORDER BY список_выражений_для_сортировки]