- •Курс за третий семестр. Введение в субд. Базы данных как аппарат моделирования.
- •Базы данных
- •Классификация бинарных отношений
- •Реляционные базы данных
- •Сжатие избыточной информации
- •Нормализация баз данных
- •Моделирование бд. Нарушение целостности
- •К эволюции сетевых бд (этапы)
- •Определение бд в рамках архитектуры «клиент-сервер»
- •Язык sql (Structured Query Language)
- •Структура sql
- •Ограничение ссылочной целостности
- •Команды dml
- •Предикаты в sql
- •Выборка из нескольких таблиц
- •Опции group by и having Группировка и групповые вычисления
- •Опции order by и union
- •Предикаты, использующие выборку Вложенные подзапросы
- •Создание представлений
- •Проблемы модификации представлений
- •Проблема исчезающих значений
- •Транзакции
- •Примеры транзакций
Команды dml
Добавление insert into (имя таблицы) [(список полей)] values (список значений)
Удаление
Изменение
Пример. insert into Customer(name) values (‘Иванов’)
Не указанные – либо значения по умолчанию, либо null (или не not null). При нарушении ограничения not null или любого другого добавления не происходит (сообщение об ошибке). Когда список полей опущен, то имеется в виду список всех полей по умолчанию.
insert into (имя таблицы) (команда select). В указанную таблицу добавляется множество записей, выбранных командой select. Предполагается, что результат выборки согласован по типу с полями таблицы.
delete – удаление записей из таблицы.
update – изменение значений полей.
select – выборка данных.
delete from (имя таблицы) where (условия удаления) – удалить все записи из таблицы, удовлетворяющие данному условию (условиям).
delete from Customer where credit=0.
Замечание. В реальности команда delete, как правило, не удаляет записи физически, а лишь помечает их как удалённые.
update (имя таблицы) set (список присваиваний вида: имя поля=выражение) where (условия обновления). В указанной таблице обновить все записи, удовлетворяющие указанным условиям, присвоить указанным полям значения соответствующего выражения.
update Customer set Credit=Credit+100 where city=’Казань’
Как правило, СУБД включают в себя средства восстановления удалённых записей и, собственно, физического удаления помеченных записей.
select [All/Distinct] (список выборки) from (список таблиц) [where (условия фильтрации)] [order by (список имён полей или номеров выражений из списка выборки)] [group by (список имён полей, либо номеров выражений из списка выборки)] [having (условия на группу)] [union (другая команда select)]
select Name, Year(date(…))-year(birthday) from Customer
Результат выборки – таблица.
Имена полей этой таблицы совпадают с именами полей исходной таблицы, для сложных выражений генерируется системой.
Опция as используется для задания пользовательских имён результирующей таблицы. Типы полей определяются по типу выражения. Размерность – тёмное место языка.
Опция where: из исходной таблицы отбираются лишь записи, удовлетворяющие заданному условию.
where city=’Казань’
Предикаты в sql
Помимо сравнений и булевых операций возможны и более специфичные для SQL предикаты.
Предикат сравнения по маске: (аргумент) [not] like (маска), где маска – произвольная символьная строка, содержащая специальный символ % (символ кратной замены) и _ (символ одиночной замены). Предикат считается истинным, если маску можно превратить в аргумент при подходящей замене знака подчёркивания (_) на одиночный символ и знака % на слово.
where city=’Казань’ and name=’Иван%’
Следующая группа предикатов – синтаксический сахар. Они выразимы через булевские комбинации сравнения, но более компактны и привычны для англо-говорящего пользователя.
(аргумент 1) [not] between (аргумент 2) and (аргумент 3)
Предикат истинен, если аргумент1 принадлежит замкнутому интервалу [аргумент 2, аргумент 3] (отрезок).
(аргумент) [not] in (список значений) – предикат истинен, если аргумент совпадает с одним из значений списка.
City between ‘Казань’ and ’Москва’
Смотри далее: «Предикаты, использующие выборку».