Будь-яку інструкцію, де визначається назва атрибута і його тип, можна доповнити службовим словом DEFAULT та певним значенням. Цим значенням може бути:
- NULL;
- Константа;
- Інше значення, як-от значення поточного моменту часу.
Приклад 5.24. Доповнимо приклад 5.5. Хай треба визначити 2 атрибути зі значеннями по замовчанню.
- Для компонентів атрибуту gender значення по замовчанню – ‘?’.
- Для компонентів атрибуту birthDate значення по замовчанню – DATE ‘0000-00-00’, тобто „нульова” дата. Рядки 4, 5 рис.5.26 будуть такими:
Приклад 5.25. Нехай у прикладі 5.6 компоненту phone має присвоюватись значення по замовчанню „Номер невідомий”.
ALTER TABLE MovieStar ADD phone CHAR(16) DEFAULT ‘Номер невідомий’
Для зміни типа існуючого поля є інструкція ALTER COLUMN. В ній треба вказати ім'я поля, його тип і (для текстових і двійкових полів) необов'язковий розмір. Наприклад, наступна інструкція дозволяє в таблиці Employee (Співробітники) змінити тип поля PostIndex (Поштовий індекс), спочатку визначений як INTEGER, перевизначивши це поле як текстове завдовжки 10 знаків:
|
|
ALTER TABLE Employee ALTER COLUMN PostIndex TEXT(10)
Чи збережуться дані у зміненій колонці? Це залежить від старого і нового типів, від реалізації. Гарантії нема. Тому пропонується такий алгоритм оновлення структури таблиці А в БД:
№пп | Дія | Інструкція SQL або збережена процедура |
Видалити зв’язки таблиці A | ALTER TABLE A DROP CONSTRAINT | |
Перейменувати таблицю (напр. У A_Old) | sp_rename | |
Створити таблицю А нової структури | CREATE TABLE A | |
Імпортувати по можливості всі дані з таблиці A_Old в A | INSERT INTO | |
Відновити зв’язки таблиці A, перевіряється цілісність | ALTER TABLE A ADD CONSTRAINT | |
Видалити A_Old | DROP TABLE A_Old |
Додатково цей процес корисний тим, що зменшує фрагментованість таблиці, групуючи разом її блоки, що дозволяє ефективно стиснути БД (SHRINK DATABASE).