ИЗМЕНЕНИЕ ТАБЛИЦ И ОГРАНИЧЕНИЙ Общие сведения • Команда 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 Добавление комментария к таблице или представлению.