
- •1. Введение в бд
- •2. Теоретические основы бд
- •2.1 Базы данных
- •2.2. Архитектуры обработки информации
- •Ошибка! Ошибка связи.
- •Ошибка! Ошибка связи.
- •2.3 Модели баз данных
- •2.3.1 Иерархическая модель данных
- •Ошибка! Ошибка связи.
- •Ошибка! Ошибка связи.
- •2.3.2 Сетевая модель данных
- •Ошибка! Ошибка связи.
- •2.3.3 Реляционная модель данных
- •3. Реляционный подход к организации бд
- •3.1 Базовые понятия реляционных баз данных
- •Ошибка! Ошибка связи.
- •3.2 Фундаментальные свойства отношений
- •3.3 Взаимосвязь отношений
- •4. Реляционная алгебра
- •4.1 Обзор реляционной алгебры
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •4.2 Теоретико-множественные операторы
- •4.3 Специальные реляционные операторы
- •4.4 Зависимые реляционные операторы
- •4.5 Примитивные реляционные операторы
- •4.6 Запросы, невыразимые средствами реляционной алгебры
- •4.7 Кросс-таблицы
- •5. Проектирование бд
- •5.1. Цели и этапы проектирования
- •5.2 Уровни моделирования (проектирования) бд
- •5.3 Критерии оценки качества логической модели данных
- •5.4 Нормализация и ее необходимость
- •5.5 Теория нормализации
- •5.6 Элементы модели "сущность-связь"
- •Основные понятия er-диаграмм
- •Ошибка! Ошибка связи.
- •6. Элементы языка sql
- •6.1 Типы данных
- •6.2 Операторы dml (определения объектов базы данных)
- •6.2.1 Операторы работы с таблицами
- •6.3 Операторы dml (операторы манипулирования данными)
- •6.3.1 Примеры использования операторов манипулирования данными
- •Insert - вставка строк в таблицу
- •6.3.2 Update - обновление строк в таблице
- •6.3.3 Delete - удаление строк в таблице
- •6.3.4 Выбор данных из таблицы select
- •6.3.4.1 Общий синтаксис команды select
- •6.3.4.2 Примеры работы с использованием оператора select
- •Использование агрегатных функций в запросах
- •Использование агрегатных функций с группировками
- •Использование подзапросов
- •Использование объединения, пересечения и разности
- •6.3.4.3 Порядок выполнения оператора select
- •6.3.4.4 Реализация реляционной алгебры средствами оператора select (Реляционная полнота sql)
- •6.4 Объекты и концепции базы данных
- •6.4.1 Таблицы (Tables)
- •6.4.2 Столбцы (Columns)
- •6.4.3 Типы данных (Data types)
- •Тип данных blob
- •6.4.4 Домены (Domains)
- •6.4.5 Справочные ограничения целостности (Referential integrity constraints)
- •6.4.6 Индексы (Indexes)
- •6.4.7 Представления (Views)
- •6.4.8. Хранимые процедуры (Stored procedures)
- •6.4.9 Триггеры (Triggers)
- •6.4.10 Генераторы (Generators)
- •6.4.11 Защита (Security)
- •6.5 Операторы sql для работы с объектами бд
- •6.5.1 Представления
- •6.5.2 Хранимые процедуры
- •6.5.3 Генераторы
- •6.5.4 Триггеры
- •6.5.5 Индексы
- •6.6 Инструкции sql
- •7. Физическая организация и работа субд
- •7.1 Хранение данных
- •Ошибка! Ошибка связи.
6.2 Операторы dml (определения объектов базы данных)
6.2.1 Операторы работы с таблицами
Синтаксис оператора создания таблицы (синтаксис приведен не полностью)
CREATE TABLE <имя_таблицы>
({определение_столбца|[ограничение_таблицы]}.,..)
<определение столбца>::=
<имя_столбца> {<имя_домена>|<тип_данных>}
[ограничение_столбца…]
[DEFAULT <значение_по_умолчанию>]
<ограничение_столбца> может быть любым из следующих:
NOT NULL (НЕ НУЛЕВОЙ)
UNIQUE (УНИКАЛЬНЫЙ)
PRIMARY KEY (ПЕРВИЧНЫЙ КЛЮЧ)
DEFAULT=<выражение> (ПО УМОЛЧАНИЮ = выражению)
REFERENCES <имя_таблицы> (ССЫЛКА НА <имя_таблицы>[(<имя_столбца>)])
[(<имя_столбца>.,..)]
<ограничение таблицы> может быть любым из следующих:
UNIQUE (УНИКАЛЬНЫЙ)
PRIMARY KEY (ПЕРВИЧНЫЙ КЛЮЧ)
FOREIGN KEY(<column name>) (ВНЕШНИЙ КЛЮЧ)
REFERENCES <имя_таблицы> (ССЫЛКА НА <имя_таблицы>[(<имя_столбца>)])
[(<имя_столбца>.,..)]
В таблице обязано быть не менее одного определения столбца. В таблице может быть определено несколько ограничений (в том числе и ни одного).
Каждый столбец должен иметь имя и быть определен на некотором типе данных или на некотором домене. Ограничения домена становятся ограничениями столбца. Кроме того, столбец может иметь дополнительные ограничения.
Примеры
CREATE TABLE Cafedra
(ID_Caf INTEGER NOT NULL PRIMARY KEY,
Caf CHAR(10),
Phone INTEGER(6) NOT NULL)
можно и так:
CREATE TABLE "Cafedra" ("ID_Caf" INTEGER NOT NULL, "Caf" CHAR(10), "Phone" INTEGER NOT NULL, PRIMARY KEY("ID_Caf"));
CREATE TABLE Disciplines
(ID_Disp INTEGER PRIMARY KEY,
Disp CHAR,
ID_Cat REFERENCES Categories(ID_Cat))
Синтаксис оператора изменения таблицы (синтаксис приведен не полностью)
ALTER TABLE <имя таблицы>
{ADD[COLUMN] <определение столбца>}
| {ALTER [COLUMN] <имя_столбца> {SET DEFAULT <значение_по_умолчанию>|DROP DEFAULT}}
| {DROP [COLUMN] <имя_столбца> RESTRICT | CASCADE}
| {ADD <ограничение таблицы>}
| {DROP CONSTRAINT <имя_ограничения> RESTRICT | CASCADE}
Позволяет изменять имеющуюся таблицу. В таблице можно удалять или добавлять колонки и/или ограничения. Кроме того, для колонок можно менять значение по умолчанию.
DROP TABLE <имя_таблицы> CASCADE | RESTRICT
Удалить имеющуюся таблицу. Вместе с таблицей удаляются и ограничения, определенные для этой таблицы.
RESTRICT – таблица удаляется, только если нет никаких ссылок на эту таблицу в других ограничениях или представлениях.
CASCADE – удаляются также и все объекты, ссылающиеся на эту таблицу.
Синтаксис определения домена
CREATE DOMAIN имя_домена [AS] тип_данных
[DEFAULT значение_по_умолчанию]
[имя_ограничения] ограничение check [атрибуты_ограничения]
Домен, на основе которого можно определять столбцы таблиц. Т.к. имя столбца, который будет основан на этом домене заранее неизвестно, то в ограничении CHECK домена для ссылки на значение этого домена используется ключевое слово VALUE. В конкретной таблице СУБД заменит слово VALUE на имя столбца таблицы.
Пример Приведенный ниже оператор создает домен MyDomen на основе целочисленного типа данных, причем значения из этого домена не могут принимать неположительные значения (но могут принимать значение NULL!).
CREATE DOMAIN MyDomen AS integer CHECK (VALUE > 0)
Изменение имеющегося домена
ALTER DOMAIN имя_домена
{SET DEFAULT значение_по_умолчанию}
| {DROP DEFAULT}
| {ADD [имя_ограничения] ограничение check [атрибуты_ограничения]}
| {DROP CONSTRAINT имя_ограничения}
Стандарт запрещает вносить несколько изменений одной командой ALTER DOMAIN. Т.е. если требуется удалить ограничение CHECK и добавить значение по умолчанию, то придется выполнить два оператора ALTER DOMAIN.
Уничтожение домена
DROP DOMAIN имя_домена CASCADE|RESTRICT
RESTRICT – домен не уничтожается, если имеются ссылки на него из столбцов таблиц.
CASCADE, то происходят следующие действия:
Тип данных домена передается столбцам, основанным на этом домене.
Если столбец не имеет значения по умолчанию, а для домена значение по умолчанию определено, то оно становится значением по умолчанию для столбца.
Все ограничения домена становятся ограничениями столбца.