Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кожин / Лекции / Лекция 05 create_table.DOC
Скачиваний:
32
Добавлен:
20.03.2016
Размер:
233.47 Кб
Скачать
      1. Создание таблиц

Создание таблиц осуществляется в порядке подчиненности или в порядке связей между таблицами.

Первоначально создаются родительские (главные таблицы), затем вспомогательные.

Оператор определения таблиц Oracleиспользует сле­дующий синтаксис:

CREATE TABLE {имя_схемы.\имя_таблицы

( [ограничение целостности_таблицы ]

имя_столбца тип_данных_столбца

[ DEFAULTвыражение] [ограничениецелостности _столбца ...]]

,...)

[[ CLUSTER имя_кластера ( имя_столбца [, ...]) ]

[PCTFREEцелое

PCTUSEDцелое

INITRANSцелое

MAXTRANSцелое ]

[ TABLESPACEимя _табличной _области ]

[STORAGE размер _памяти ]

(RECOVERABLE | UNRECOVERABLE]] ...]

[PARALLELвозможностъ_параллельнои_обработки ]

[[ENABLEпроверяемые_ограничения_целостности |

DISABLEигнорируемыеограниченияцелостности ]...]

[ASзапрос]

[CACHE|NOCACHE]

Пример создания таблицы

CREATE TABLE tabl1

( n1 number not null,

n2 number(4) primary key,

n3 number(14,5) check ( n3 >0),

n4 char (4),

);

Ограничения :

NOT NULL. Столбец не может содержать пустого значения.

UNIQUE. Столбец имеет уникальные значения.

PRIMARYKEYосновной ключ.

FOREIGNKEY(поле[,поле]…). Внешний ключ.

REFERENCESтаблица(поле[,поле]...)]

CHECK. (выражение).

Для удобства могут быть созданы представления (обзоры)

CREATE [OR REPLACE] [FORCE | NO FORCE] VIEW имя AS запрос

WITH[READ ONLY|CHECK OPTION[CONSTRAINT ограничение_целостности]]

Ограничения на столбцы или на таблицу, а также связи между таблицами могут быть введены либо при создании таблиц, либо после создания всех таблиц (команда ALTERTABLE).

      1. Ограничения для таблиц и столбцов

ORACLE Version 6.0 содержит синтаксическую поддержку ограничений целостности как определено в ANSI SQL Standard Addendum I.

* ограничение NOT NULL. Столбец не может содержать значения null.

* ограничение UNIQUE. Столбец или столбцы не могут содержать дублирующихся значений.

* ограничение PRIMARY KEY. Столбец или столбцы, входящие в основной ключ, не могут дублироваться. Ограничение PRIMARY KEY включает в себя ограни­чение UNIQUE, но обратное не верно. Таблица может содержать только один столбец, определенный как PRIMARY KEY и несколько столбцов, определенных как UNIQUE. Кроме того, PRIMARY KEY включает в себя ограничение NOT NULL.

* ограничение FOREIGN KEY. Столбец или столбцы, составляющие внешний ключ, должны ссылаться на основной ключ указанной таблицы.

* ограничение CHECK. Перед тем, как строка добавится или изменится, она должна удовлетворить выражению, определенному ограничением CHECK.

ORACLE полностью поддерживает ограничение NOT NULL. Текущая фраза WITH CHECK OPTION из оператора CREATE VIEW поддерживает дополнительные формы относительной целостности. Для отработки ограничения UNIQUE в настоящее время используются индексы.

      1. Alter table

Меняет определение таблицы:

* добавляя столбцы или ограничения;

* модифицируя определения существующих столб­цов (например - тип данных или NOT NULL);

* отменяя ограничения;

* модифицируя будущее распределение памяти;

* отмечая, что для данной таблицы был выпол­нен backup.

Необходимо быть владельцем таблицы, получить на нее привилегию ALTER или иметь привилегию DBA.

ALTER TABLE [user.]table

[ADD (column_element | table_constraint

[,column_element | table_constraint]...)]

[MODIFY (column_element [,column_element]...)]

[DROP CONSTRAINT constraint]...

[PCTFREE integer] [PCTUSED integer]

[INITRANS integer] [MAXTRANS integer]

[STORAGE storage]

[BACKUP]

где [user.]table имя существующего пользователя для таблицы, По умолчанию в качестве user предполагается пользователь, выдавший ко­манду ALTER TABLE.

ADD/MODIFY добавляет или модифицирует column_element определение столбца, ограни­чение столбца или его умолча­ние.

ADD Добавляет ограничение для table_constraintтаблицы.

DROP constraint отменяет указанное ограниче­ние для столбца или таблицы.

BACKUP модифицирует словарь данных, отмечая что таблица была ско­пирована на момент выдачи ко­манды ALTER TABLE.

При добавлении к таблице столбца с по­мощью фразы ADD, его начальное значение для каждой строки - NULL. Добавлять столбец NOT NULL можно только в пустую (не содержащую строк) таблицу.

Фраза MODIFY используется для изменения сле­дующих атрибутов столбца:

* размеров;

* типа данных;

* NOT NULL.

Изменять тип данных и уменьшать размер столб­ца можно лишь для содержащих NULL во всех строках. Изменить тип на NOT NULL можно, толь­ко если все строки содержат значение не null. Если изменяется размер столбца, имевшего ат­рибут NOT NULL, и не указано "NOT NULL", столбец все равно сохраняет этот атрибут.

Обзор, определенный запросом по всем столбцам таблицы (SELECT * FROM ...), не будет больше правильно работать, если до­бавлены к соответствующей таблице новые столб­цы. Это можно обойти удалением и повторным созданием обзора.

Пример:

ALTERTABLEEMP

ADD (THRIFTPLAN NUMBER(7,2), LOANCODE CHAR(1))

ALTER TABLE EMP

MODIFY (THRIFTPLAN NUMBER(9,2))

DROP CONSTRAINT ENAME_CNSTR

Соседние файлы в папке Лекции