|
Программирование >> Построение запросов sql
Запрос ALTER TABLE имеет следующий формат: ALTER TABLE базовая таблица <действие1> [, <действие2> где базовая таблица - это имя существующей базовой таблицы БД, определение которой требуется изменить; <действие> задает действия, которые будут производиться с указанной таблицей, и определяется следующим образом: <действие>::= {ADD <определение столбца> ADD <тип ограничения> ALTER [COLUMN] столбец <изменение> DROP столбец DROP CONSTRAINT имя ограничения}, <изменение>::= { TO новое имя столбца TYPE {<тип данных> имя домена} POSITION номер позиции SET DEFAULT <значение> DROP DEFAULT}. При использовании конструкции ADD <определение столбца> в таблицу будет добавлен новый столбец, определенный в соответствии с конструкцией <определение столбца>, так же как при создании таблицы. Использование конструкции ADD <тип ограничения> приводит к добавлению в таблицу ограничения, определяемого конструкцией <тип ограничения>, так же как при создании таблицы. Например, чтобы добавить столбец с именем memo в таблицу Request, необходимо выполнить следующий запрос ALTER TABLE: ALTER TABLE Request ADD memo VARCHAR(100);. Чтобы для таблицы Request определить ограничения внешних ключей, можно выполнить следующие запросы ALTER TABLE: ALTER TABLE Request ADD FOREIGN KEY (AccountCD) REFERENCES Abonent(AccountCD); ALTER TABLE Request ADD FOREIGN KEY (ExecutorCD) REFERENCES Executor(ExecutorCD); ALTER TABLE Request ADD FOREIGN KEY (FailureCD) REFERENCES Disrepair(FailureCD);. Однако можно добавить эти внешние ключи для таблицы Request и с помощью одного запроса: ALTER TABLE Request ADD FOREIGN KEY (AccountCD) REFERENCES Abonent(AccountCD), ADD FOREIGN KEY (ExecutorCD) REFERENCES Executor (ExecutorCD), ADD FOREIGN KEY (FailureCD) REFERENCES Disrepair (FailureCD);. Конструкция ALTER столбец TO новое имя столбца используется для переименования столбца. Например, можно изменить имя столбца Phone в таблице Abonent следующим образом: ALTER TABLE Abonent ALTER Phone TO HomePhone;. Однако попытка переименовать столбец может не удаться из-за проблемы существования зависимостей (если на столбец существуют ссылки из ограничений или он используется в представлениях, триггерах или хранимых процедурах). Конструкция ALTER столбец TYPE {<тип данных> имя домена} используется для изменения типа данных столбца. Однако существуют некоторые ограничения при изменении типа данных: - СУБД не позволит произвести такое изменение типа данных, в результате которого могут потеряться данные. Новое определение столбца должно позволять использовать существующие данные. Например, новое количество символов в столбце не может быть меньше наибольшего размера столбца (т.е. количества символов для строковых типов, общего количества разрядов и числа разрядов после запятой для десятичных типов). Например, если попытаться переопределить тип столбца Phone таблицы Abonent с меньшим количеством символов: ALTER TABLE Abonent ALTER Phone Type varchar(10);, то будет выдано сообщение New size specified for column PHONE must be at least 15 characters (новый размер, определяемый для столбца PHONE, должен быть не менее 15 символов); - в СУБД Firebird преобразование числового типа данных в строковый тип требует минимального размера строкового типа, как показано в табл. 4.1; - преобразование символьных данных в другие типы недопустимо. Таблица 4.1. Минимальное количество символов для числовых преобразований
Конструкция ALTER столбец POSITION номер позиции используется для изменения порядкового номера столбца в таблице. Конструкция ALTER столбец SET DEFAULT <значение> используется для задания значения по умолчанию для столбца или для изменения значения по умолчанию, назначенного для столбца таблицы при ее создании (в том числе для изменения значения по умолчанию, взятого из домена, на котором определен данный столбец). Следует отметить, что изменение значения столбца по умолчанию не оказывает влияния на состояние существующих строк таблицы (даже если в некоторых из них хранится предыдущее значение столбца по умолчанию). Конструкция ALTER столбец DROP DEFAULT используется для удаления значения по умолчанию, определенного для столбца таблицы. Если такое значение не было определено, то выдается соответствующее сообщение. Если столбец определен на домене, у которого существует значение по умолчанию, то после удаления значения по умолчанию, определенного для столбца таблицы, начинает действовать значение по умолчанию домена. Рассмотрим на примере изменение и удаление значений по умолчанию для столбцов. Допустим, что в созданную ранее (в пункте 4.2.1) таблицу Days добавлена строка, где number = 1, а остальные значения берутся по умолчанию. В результате таблица будет иметь вид, представленный на рис. 4.1.
Рис. 4.1. Таблица Days до изменения значений по умолчанию Например, с помощью следующего запроса удалим в таблице Days значение по умолчанию столбца dat, изменим значение по умолчанию столбца usr на Petrov, а значение по умолчанию столбца tel, взятое из домена Telephone, с 111111 на 999999: ALTER TABLE Days ALTER dat DROP DEFAULT, ALTER usr SET DEFAULT Petrov, ALTER tel SET DEFAULT 999999;. После добавления второй строки со значениями по умолчанию таблица Days примет вид, представленный на рис. 4.2.
Рис. 4.2. Таблица Days после изменения и вставки
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |