Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
12.65 Mб
Скачать

5.3.1. Таблицы

Таблица является базовой структурой реляционной модели. Полное имя таблицы в базе данных состоит из имени схемы и собственного имени таблицы. Рассмотрим основные операторы.

Создание таблицы

Create table [<имя схемы>.]<имя таблицы>

({<ограничение целостности таблицы> | <имя столбца><тип данных>

[default <умалчиваемое значение>]

[<ограничение целостности столбца>]},…)

[{cluster <кластер> (<имя столбца> [,…]) |

{pctfree <целое> | pctused <целое> | initrans <целое>

| maxtrans <целое> |

tablespace <табличная область> | storage <размер памяти> |

{recoverable | unrecoverable}}…]

[parallel <возможность параллельной обработки>]

[{enable <проверяемые ограничения целостности> |

disable <игнорируемые ограничения целостности>}…]

[as <запрос>] [chache | no chache]

Cluster <кластер> (<столбец>) - указывает привязку столбцов таблицы к кластеру.

Pctfree <целое> - определяет процент пространства блока для нужд моди­фи­кации таблицы. Принимает значения от 0 до 99 (10).

Pctused <целое> - минимальный процент (от 1 до 99) использования прост­ран­ства блока, при котором в него вводятся данные (40). Сумма значений pctfree и pctused не должна превышать 100.

Initrans <целое> - начальное число параллельных транзакций (1).

Maxrans <целое> - максимальное число параллельных транзакций.

Tablespace <табличная область> - имя табличной области, в которой будет размещена таблица. Если значение параметра не определено, то таблица располагается в табличном пространстве, определенном по умолчанию для пользователя.

Storage <размер памяти> - объем внешней памяти для таблицы.

Recoverable и unrecoverable ‑ разрешение/блокировка записи в журнальный файл контрольной информации. Unrecoverable может быть использовано только с ключевым словом As <запрос>; при этом операция создания таблицы выполняется быстрее.

As <запрос> - включает в создаваемую таблицу строки, являющиеся результатом выполнения запроса.

Chache ‑ блоки таблицы; помечаются как наиболее используемые.

Пример. Создадим таблицу сотрудников SOTRUDNIKI с атри­бу­та­ми Tnum, Fam, Dolj в схеме пользователя U1. Ограничение pk_Sotrud­niki_Tnum пока­зы­вает, что атрибут Tnum является первичным ключом.

Create table Kadri.Sotrudniki

(Tnum number constraint pk_Sotrudniki_Tnum primary key,

Fam varchar(10), Dolj char(13));

Блокировка таблиц

Lock table <имя таблицы> <режим блокировки> ‑ блокировка всей табли­цы c режимами: row share, row excusive, share update, share, share row exclusive, exclusive (lock table sotrudniki in row share mode nowait).

Удаление таблиц

Drop table [<имя схемы>.]<имя таблицы> [cascade constraints]

Cascade constraints ‑ удаление всех ограничений целостности, ссылающих­ся на первичные и уникальные ключи. Если данные ключи существуют, а cascade constraints не указано, то выдается сообщение об ошибке.

При удалении таблицы автоматически удаляются ее индексы. Представления, функции, процедуры и синонимы, ссылающиеся на дан­ную таблицу, не удаляются, но помечаются сервером как ошибочные. Они вновь становятся активными, если таблицу создать заново.

Пример. Drop table Sotrudniki cascade constraints.

Вставка строк

Insert into{[<имя схемы>.]{<имя таблицы> | <имя представления>}

[<@имя связи базы данных>] | (<подзапрос 1>)}

[(<имя столбца>, ...)]

{values (<выражение> , …) | <подзапрос 2>}

Пример. Insert into Sotrudniki values (1, 'Иванов', 'Инженер');

Удаление строк

Delete [from] {[<имя схемы>.]{<имя таблицы> | <имя представления>}

[<@имя связи базы данных>] | <подзапрос>}

[<альтернативное имя>]

[where <условие для удаляемых строк>]

При удалении строк представления удаляются строки из базовой таблицы представления. Если параметр Where не указан, то удаляются все строки (Delete from Sotrudniki Where Tnum=1).

Модификация строк

Update {[ <имя схемы>.]{<имя таблицы> | <имя представления>

| <снимок>} [<@имя связи базы данных>] | <подзапрос 1>}

set {[( <имя столбца>, …)=(<подзапрос 2>)] |

<имя столбца>={<выражение> | <подзапрос 3> }}…

[where <условие для изменяемых строк>]

Пример. Update Sotrudniki set Fam='Сидоров' where Tnum=1;