sql11_alter_table

advertisement
ИЗМЕНЕНИЕ ТАБЛИЦ
И ОГРАНИЧЕНИЙ
Общие сведения
• Команда ALTER TABLE позволяет:
- добавлять и изменять столбцы
- добавлять и удалять ограничения
- разрешать и запрещать ограничения
• Команда DROP TABLE удаляет все строки и структуру
таблицы
• Прочие команды для изменения таблицы:
RENAME, TRUNCATE, COMMENT
• После выполнения этих команд DDL происходит
автоматическая фиксация транзакции.
Добавление столбца:
синтаксис
• Добавьте новый столбец
• Задайте значение нового столбца по умолчанию
• Укажите, что столбец должен содержать значение
ALTER TABLE table
ADD (column datatype [DEFAULT expr][NOT NULL]
[, column datatype]...);
• Удаление столбцов невозможно
Добавление столбца:
пример
• Добавление столбца COMMENTS в таблицу S_REGION
SQL> ALTER TABLE s_region
2 ADD (comments VARCHAR2(255));
Table altered.
• Новый столбец становится в таблице последним
Изменение столбца:
синтаксис
• Изменение таких параметров столбца, как тип данных, размер,
значение по умолчанию, ограничение NOT NULL
ALTER TABLE table
MODIFY (column datatype [DEFAULT expr][NOT NULL],
column datatype...);
Указания:
– Увеличить ширину столбца или точность числовых значений
– Уменьшить ширину столбца, если столбец содержит
неопределенные значения или в таблице нет строк
– Изменить значения по умолчанию для последующих добавлений
– Использовать ограничение NOT NULL только в случае, если столбец
не содержит неопределенных значений
Изменение столбца
• Изменение типа данных, если столбец содержит
неопределенные значения
• Изменение значения по умолчанию только для
последующих вставок в таблицу. Пример
• Увеличение максимальной ширины столбца TITLE
таблицы S_ЕМР до 50 символов
SQL> ALTER TABLE s_emp
2 MODIFY (title VARCHAR2(50));
Table altered.
Добавление ограничения
синтаксис
SQL> ALTER TABLE table
2 ADD [CONSTRAINT constraint] type (column);
• Добавление или удаление, но не изменение
ограничения
• Разрешение или запрет ограничения
• Добавление ограничения NOT NULL с помощью
предложения MODIFY
Добавление ограничения:
пример
Добавление ограничения FOREIGN KEY для таблицы
S_EMP, требующего, чтобы менеджер уже числился как
служащий в таблице S_ EMP.
SQL> ALTER TABLE s_emp
2 ADD CONSTRAINT s_emp_manager_id_fk
3 FOREIGN KEY (manager_id)
4 REFERENCES s_emp(id);
Table altered.
Удаление ограничения
Синтаксис
ALTER TABLE таблица
DROP PRIMARY KEY|UNIQUE (столбец)|
CONSTRAINT ограничение [CASCADE];
где:
таблица
столбец
ограничение
имя таблицы
имя столбца, на который действует
ограничение
имя ограничения
Примечание: опция DROP CONSTRAINT действует для
всех ограничений, включая NOT NULL
Удаление ограничения:
примеры
• Удаление ограничения для менеджеров из таблицы
S_EMP
SQL> ALTER TABLE
s_emp
2 DROP CONSTRAINT s_emp_manager_id_fk;
Table altered.
• Удаление ограничения PRIMARY KEY для таблицы
S_DEPT и связанного с ним ограничения FOREIGN KEY
для столбца S_EMP.DEPT_ID
SQL> ALTER TABLE s_dept
2 DROP PRIMARY KEY CASCADE;
Table altered.
Запрет ограничений
• Для запрета ограничения используется предложение
DISABLE команды ALTER TABLE.
• Для одновременного запрета всех зависимых
ограничений используется параметр CASCADE,
SQL> ALTER TABLE s_emp
2 DISABLE CONSTRAINT s_emp_id_pk CASCADE;
Table altered.
Разрешение ограничений
• Разрешение ранее запрещенного ограничения с
помощью предложения ENABLE
SQL> ALTER TABLE s_emp
2 ENABLE CONSTRAINT s_emp_id_pk;
Table altered.
• Разрешение ограничений UNIQUE и PRIMARY KEY
вызывает автоматическое создание индексов UNIQUE
и PRIMARY KEY
Удаление таблицы:
синтаксис
DROP TABLE table [CASCADE CONSTRAINTS];
• Из таблицы удаляются все данные
• Все незафиксированные транзакции фиксируются
• Все индексы удаляются
• Параметр CASCADE CONSTRAINTS удаляет зависимые
ограничения
• Откат этой команды невозможен
Изменение имени объекта
• Для изменения имени тaблицы, представления,
последовательности или синонима используется
команда RENAME
SQL> RENAME s_ord TO s_order;
Table renamed.
• Вы должны быть владельцем объекта
Усечение таблицы
• Команда TRUNCATE:
- Удаляет все строки таблицы
- Освобождает память, занятую под таблицу
- Является командой DDL
SQL> TRUNCATE TABLE s_item;
Table truncated.
• Вернуть удаленные строки после выполнения
команды TRUNCATE невозможно
• Удалять строки можно и командой DELETE
Добавление комментариев
к таблице
• Комментарии к таблице или столбцу добавляются
командой COMMENT
SQL> COMMENT ON TABLE s_emp
2 IS 'Employee Information';
Comment created.
• Для отмены комментария используется пустая строка
символов
• Увидеть комментарии можно с помощью следующих
представлений словаря данных:
- ALL_COL_COMMENTS
- USER_COL_COMMENTS
- ALL_TAB_COMMENTS
- USER_TAB_COMMENTS
Заключение
КОМАНДА
ОПИСАНИЕ
CREATE TABLE Создание таблицы и заданных ограничений.
ALTER TABLE
Изменение структуры таблицы и ограничений
DROP TABLE
Удаление строк и структуры таблицы
Изменение имени таблицы, представления,
последовательности или синонима.
RENAME
TRUNCATE
Удаление всех строк таблицы и освобождение памяти.
COMMENT
Добавление комментария к таблице или представлению.
Download