
- •Создание таблиц
- •Модификация таблиц
- •Создание индексов
- •Создание представления
- •Создание последовательности
- •Создание данных, определяемых пользователем
- •Insert into employee values (100,name_info(‘Boby Marx’, ‘Braiton 3’, ‘New-York’)); Создание синонима
- •Создание ограничений
- •Табличные пространства
- •Контрольные вопросы
Создание ограничений
ALTER TABLE table-name MODIFY (column-name constraint [,column-name constraint] [,…])
Отметим, что «UNIQUE» и «PRIMARY KEY» - это почти одно и то же, в обоих случаях автоматически создаётся индекс.
Пример:
CREATE TABLE DEPT (
deptno NUMBER(2) NOT_NULL,
dname VARCHAR2(14),
CONSTRAINT dept_primary_key PRIMARY KEY (DEPTNO));
CREATE TABLE EMP (
empno NUMBER(4) NOT NULL,
ename VARCHAR2(10),
mgr NUMBER(4) CONSTRAINT emp_self_key REFERENCES EMP(EMPNO),
cur_emp VARCHAR2(1) CHECK (cur_emp IN (‘Y’,’N’)),
deptno NUMBER(2) NOT_NULL,
CONSTRAINT emp_foreign_key FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO),
CONSTRAINT emp_primary_key PRIMARY KEY (EMPNO) );
Посмотреть имеющиеся ограничения можно, можно используя представление USER_CONSTRAINT в словаре системы.
Представление USER_CONS_COLUMNS показывает перечень столбцов, на которых заданы ограничения, а представление USER_INDEXES показывает, какие уникальные индексы созданы для первичных ключей.
Бывает, что ограничения препятствуют вводу данных и их нужно временно отменить оператором:
ALTER TABLE table_name DISABLE CONSTRAINT имя_ограничения [CASCADE]
а затем можно снова включить его оператором:
ALTER TABLE table_name ENABLE CONSTRAINT имя_ограничения
Полное уничтожение ограничения осуществляется:
DROP CONSTRAINT имя_ограничения
По умолчанию строка в родительской таблице не удаляется, если в дочерних таблицах есть связи с этой строкой. Для сохранения ссылочной целостности, удалить такую строку можно только вместе со связанными строками, используя опцию «CASCADE ON DELETE».
Табличные пространства
CREATE TABLESPACE tablespace-name DATAFILE ‘имяфайласполнымпутём’ SIZE n byte/K/M DEFAULT STORAGE (INITIAL nK, NEXT nK, MINEXTENTS n, MAXEXTENTS n) ONLINE;
рисунок
При создании таблиц и индексов можно отнести их в конкретные табличные пространства:
CREATE TABLE table-name (column-name type [constraint] [,column-name type [constraint]] [,…]) [TABLESPACE tablespace-name] [STORAGE параметры]
CREATE [UNIQUE] INDEX index-name ON TABLE table-name (column-name [,column-name] [,…]) [TABLESPACE tablespace-name] [STORAGE параметры]
Посмотреть параметры относящиеся к таблицам, можно в словаре, где есть представление USER_TABLES:
SQL> DESC USER_TABLES
В этом представлении очень много полей, где хранится информация «по умолчанию». Некоторые значения:
Имя поля |
default |
Описание |
PCT_FREE |
10 |
Объем свободного пространства, которое должно быть зарезервировано в блоке на случай применения к строкам операторов UPDATE, которые заполнят поля NULL или увеличат размеры существующих полей типа VARCHAR |
PCT_USED |
40 |
Процентная доля свободного места, освободившегося в блоке после удаления строк с помощью DELETE, по достижении которой блок снова может применяться для добавления или обновления данных |
INITIAL_EXTENT |
10240 |
Размер первоначального экстента (в блоках) при создании таблицы |
NEXT_EXTENT |
10240 |
Размер дополнительного экстента |
MIN_EXTENTS |
1 |
Количество первоначальных экстентов при создании таблицы |
MAX_EXTENTS |
121 |
Предельное число экстентов для таблицы |
При создании таблицы, вместо параметра MAX_EXTENTS часто применяется конструкция UNLIMITED EXTENTS
Посмотреть параметры табличных пространств БД, можно в представлениях DBA_TABLESPACES и DBA_DATA_FILES, но только пользователю с именем “SYSTEM”.