
- •Работа с таблицами в системе управления базами данных oracle
- •Типы данных Oracle
- •Строки символов
- •Числовые типы
- •Двоичные данные
- •Дата и время
- •Преобразование типов данных
- •Правила сравнения типов данных
- •Значения Null
- •Псевдостолбцы
- •Объекты базы данных
- •Создание таблиц
- •Ограничения для таблиц и столбцов
- •Alter table
- •Удаление таблицы
- •Ввод данных в таблицы
- •Удаление таблицы
- •Представление
- •Индексы
- •Create sequence
- •Create synonym
- •Индексы
- •Работа с индексами
- •Явные и неявные индексы
- •Изменение индекса
- •Удаление индексов
- •Битовые индексы
- •Кластеры
- •Создание кластеров
- •Удаление кластеров
Создание таблиц
Создание таблиц осуществляется в порядке подчиненности или в порядке связей между таблицами.
Первоначально создаются родительские (главные таблицы), затем вспомогательные.
Оператор определения таблиц 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).
Ограничения для таблиц и столбцов
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 в настоящее время используются индексы.
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