- •Лабораторная работа №2 Создание таблиц, представлений.
- •Вычисляемые столбцы
- •Значения по умолчанию
- •Параметр not null
- •Ограничения столбцов
- •Ограничения check в доменах
- •Порядок сортировки collate
- •Удаление таблиц
- •Модификация таблицы
- •Представления
- •Изменяемые представления
- •Модификация представления
Ограничения check в доменах
Указанные выше ограничения на значения столбцов справедливы и для доменов, с небольшим изменением. Поскольку мы заранее не знаем, какой столбец (столбцы) какой таблицы (таблиц) будут использовать описание этого домена, вместо имени столбца указывается ключевое слово VALUE. VALUE является заменой для любого имени поля, константы, значения переменной или результата выражения, которые могут быть подставлены в синтаксисе SQL для сохранения данных в столбце.
Пример:
CREATE DOMAIN Poloj_Cel
AS INT CHECK(VALUE >= 0)
Порядок сортировки collate
Эту тему мы рассматривали в прошлой лекции и знаем, что данный параметр применяется с текстовыми столбцами и определяет способ, по которому будут сортироваться и сравниваться текстовые данные при выводе их оператором SELECT. Для кодировки WIN1251 это может быть сортировка WIN1251 или PXW_CYRL.
Удаление таблиц
Нередко возникает необходимость удалить из базы данных созданную ранее таблицу. Делается это оператором DROP. Пример:
DROP TABLE ARRAY_TABLE
Этот же оператор используется для удаления доменов, представлений, триггеров и т.д.
Модификация таблицы
Иногда встречаются случаи, когда структуру таблицы нужно изменить. Проще всего удалить ее оператором DROP и создать новую таблицу с этим же именем, и с новой структурой. Но таблица может уже содержать какие-то данные, или изменения должны быть небольшими: добавить новый столбец (столбцы) или удалить парочку существующих столбцов.
Изменить структуру таблицы можно оператором ALTER, который может иметь дополнительные параметры ADD (добавить столбец) или DROP (удалить столбец). Примеры:
/* Добавляем столбец */
ALTER TABLE TABLE_CEL ADD New_String VARCHAR(30)
или
/* Удаляем столбец */
ALTER TABLE TABLE_CEL DROP Korotkoe
Примечание: после выполнения операторов ALTER в утилите IBConsole, транзакция может считаться незавершенной, и попытка ввести новую команду или закрыть окно Interactive SQLвызовет ошибку. В этом случае нужно просто ввести и выполнить команду завершения транзакции COMMIT, после которой можно вводить новые запросы. О транзакциях мы будем говорить позднее.
Иногда бывает необходимо не удалить столбец, а только изменить его. Например, вместо VARCHAR(30) указать VARCHAR(50). При этом нужно сохранить данные, которые хранились в старом столбце. Сделать это одним оператором невозможно, придется изменять столбец в несколько этапов. Вначале создается новый временный столбец, повторяющий все атрибуты изменяемого, и в него копируются все данные из старого столбца. Копирование данных осуществляется оператором UPDATE … SET:
/* Добавляем новый временный столбец: */
ALTER TABLE TABLE_CEL ADD Temp_String VARCHAR(30);
/* Копируем в него данные из столбца New_String: */
UPDATE TABLE_CEL SET Temp_String = New_String
Далее нужно удалить старый столбец и создать новый с этим же именем, но уже с новыми параметрами:
/* Удаляем старый столбец: */
ALTER TABLE TABLE_CEL DROP New_String;
/* Добавляем новый, с другими параметрами: */
ALTER TABLE TABLE_CEL ADD New_String VARCHAR(50)
Далее, с помощью оператора UPDATE … SET нужно скопировать данные из временного столбца в только что созданный, после чего удалить временный:
/* Копируем данные: */
UPDATE TABLE_CEL SET New_String = Temp_String;
/* Удаляем временный столбец: */
ALTER TABLE TABLE_CEL DROP Temp_String
