SQL ALTER TABLE

Екип ALTER TABLE се използва за добавяне, изтриване или модификации колони в съществуващ маса.

Команда ALTER TABLE

Екип ALTER TABLE променя дефиницията на таблица по един от следните начини:

  • добавя колона
  • добавя ограничение на целостта
  • заменя колона (тип данни, размер, по подразбиране)
  • изтрива колона
  • променя характеристиките на паметта или други параметри
  • позволява, деактивира или премахва ограничение или задействане на целостта.

Състояние: Таблицата трябва да е в потребителската схема или потребителят трябва да има системни привилегии ПРОМЕНЕТЕ ВСЯКА ТАБЛИЦА.

Чрез добавяне на ограничена колона НЕ Е НУЛНО, разработчик или администратор DB трябва да вземе предвид редица обстоятелства. Първо, трябва да създадете неограничена колона и след това да въведете стойности във всички нейни редове. В края на краищата стойностите на колоните не са НУЛА-стойности, към него може да се приложи ограничение НЕ Е НУЛНО. Ако колона с ограничение НЕ Е НУЛНО опитвайки се да добави потребител, се връща съобщение за грешка, в което се посочва, че или таблицата трябва да е празна, или колоната трябва да съдържа стойности за всеки съществуващ ред (не забравяйте, че след като колоната е ограничена НЕ Е НУЛНО не може да присъства НУЛА-стойности в нито един от съществуващите редове). IN СУБД Oracle, от версия 8i можете да изтривате колони.

Когато променяте типове данни на съществуващи колони или добавяте колони към таблица на базата данни, трябва да бъдат изпълнени редица условия. Общоприето е, че увеличаването е добро, но намаляването обикновено не е много добро. Допустими увеличения:

  • Увеличете размера на колоната ЧАР или VARCHAR2
  • Увеличете размера на колоната БРОЙ
  • Добавяне на нови колони към таблица

Намаляването на различни характеристики на таблица, включително някои видове данни за колони и действителния брой колони в таблица, изисква специални стъпки. Често, преди да направите промяна, трябва да се уверите, че всички стойности в съответната колона или колони са НУЛА-стойности. За да извърши такива операции върху колони на таблица, съдържаща данни, разработчикът трябва да намери или създаде някаква област за временно съхранение на тези данни. Например, създайте таблица с помощта на командата СЪЗДАЙТЕ ТАБЛИЦА КАТО ИЗБЕРЕТЕ, който извлича данни от първичния ключ и променящата се колона или колони. Разрешени промени:

  • Намалете размера на колоната БРОЙ (само ако колоната е празна за всички редове)
  • Намалете размера на колоната ЧАР или VARCHAR2 (само ако колоната е празна за всички редове)
  • Променете типа данни на колона (само ако колоната е празна за всички редове)

ПРОМЯНА ТАБЛИЦА Пример 1

Добавяне на колона към таблица:

ALTER TABLE t1 (pole1 char (10));

ПРОМЯНА ТАБЛИЦА Пример 2

Преоразмеряване на колона на таблица:

ALTER TABLE t1 МОДИФИЦИРАЙТЕ (pole1 char (20));

ПРОМЯНА ТАБЛИЦА Пример 3

Премахване на колона на таблица:

ALTER TABLE t1 КОЛОНА ЗА ПАДАНЕ полюс1;

С помощта на командата ALTER TABLE можете да промените името на таблицата, без действително да прехвърляте физическа информация в базата данни:

ALTER TABLE t1 ПРЕИМЕНУВАЙТЕ НА t2;

Подобна операция може да се извърши с помощта на командата RENAME:

ПРЕИМЕНУЙ t1 ДА СЕ t2;

Ограниченията за целостта на колони и таблици на база данни могат да бъдат променяни, както и отказвани, разрешавани и изтривани. Това дава на разработчика възможността да създава, променя и изтрива бизнес правила, които ограничават данните. Нека помислим за добавяне на ограничения към базата данни. Лекотата или сложността на този процес зависи от определени обстоятелства. Ако не можете да създадете ограничение заедно с базата данни, най-лесният начин е да го добавите, преди да въведете данните:

ПРОМЯНА ТАБЛИЦА Пример 4

Промяна на структурата на таблицата

ALTER TABLE t1 МОДИФИЦИРАЙТЕ (полюс1 НЕ Е НУЛНО);

СЪЗДАЙТЕ МАСА t2

(полюс1 CHAR (10) ОСНОВЕН КЛЮЧ);

ALTER TABLE t1 ДОБАВЕТЕ

(ОГРАНИЧЕНИЕ fk_t1 ВЪНШЕН КЛЮЧ (полюс1)

ПРЕПРАТКИ t2 (pole1));

ALTER TABLE t1 ДОБАВЕТЕ (ЕДИНСТВЕН ПО РОДА СИ (име_на_));

ALTER TABLE t1 ДОБАВЕТЕ (p_size CHAR (4) ПРОВЕРКА

Първата команда по-горе използва MODIFY за добавяне на ограничение NOT NULL в колона и ADD за добавяне на всички други ограничения за целостта на таблицата. Колоната, за която е добавено ограничението, вече трябва да съществува в таблицата на базата данни; в противен случай ограничението не може да бъде създадено.

ПРОМЯНА ТАБЛИЦА Пример 5

За да добавите ограничения на целостта, можете да пропуснете името на създаденото ограничение с помощта на ключовата дума ОГРАНИЧЕНИЕ. В този случай командата ще изглежда така:

ALTER TABLE t1 ДОБАВЕТЕ ВЪНШЕН КЛЮЧ (pole1) РЕФЕРЕНЦИИ t2 (pole1);

Има редица условия за създаване на ограничения:

  • Първични ключове: колоните не могат да съдържат NULL стойности и всички стойности трябва да са уникални.
  • Външни ключове: онези колони на други таблици, към които се прави препратка, трябва да съдържат стойности, които съответстват на всички стойности на препратените колони, или стойностите на тези последни трябва да бъдат NULL стойности.
  • УНИКАЛНИ Ограничения: Всички стойности на колоните трябва да са уникални или NULL стойности.
  • ПРОВЕРКА ограничения: новото ограничение ще се прилага само за данни, добавени или модифицирани след като е създадено.
  • NOT NULL: NULL стойности в колони не са разрешени.

Ограниченията могат да бъдат активирани или деактивирани. Разрешеното ограничение изпълнява функциите си чрез налагане на бизнес правила по отношение на данните, въведени в таблицата, а забранено ограничение се прави невалидно, сякаш е било изтрито и неговите правила не се прилагат.

ПРОМЯНА ТАБЛИЦА Пример 6

ALTER TABLE t1 ИЗКЛЮЧВАЙТЕ ОСНОВНИЯ КЛЮЧ;
ALTER TABLE t1 ИЗКЛЮЧВАЙТЕ УНИКАЛЕН (име_на_);

ПРОМЯНА ТАБЛИЦА Пример 7

В някои случаи забраната на първичния ключ, от който зависят външните ключове, може да бъде сложна, например:

ALTER TABLE t2 ЗАБРАНИ ОСНОВЕН КЛЮЧ;

Грешка в ред 1: Не може да деактивира ограничението .... - съществуват зависимости (невъзможно е да деактивирате ограничението - има зависимости)

За да изтриете първичен ключ, ако има външни ключове, които зависят от него в командата ALTER TABLE DISABLE, се изисква клаузата CASCADE:

ALTER TABLE t2 ЗАБРАНИ ОСНОВЕН КЛЮЧ КАСКАДА;

ПРОМЯНА ТАБЛИЦА Пример 8

Позволено е забранено ограничение, както следва:

ALTER TABLE t1 АКТИВИРАНЕ НА ОСНОВНИЯ КЛЮЧ;

ALTER TABLE t1 АКТИВИРАНЕ УНИКАЛНО (име_на_);

Можете да разрешите само онези ограничения, които са били предварително зададени, но в момента са забранени.

Ограничение, чийто процес на създаване е неуспешен, няма да съществува в забранена форма, в очакване на решение след отстраняване на грешката. Обикновено собственикът на масата или който е получил съответните права може да премахне ограничението:

ALTER TABLE t1 КАПЕТЕ УНИКАЛНО (име_на_);