Creeaza.com - informatii profesionale despre


Cunostinta va deschide lumea intelepciunii - Referate profesionale unice
Acasa » referate » informatica » sql
Modificarea structurii unei tabele

Modificarea structurii unei tabele


Modificarea structurii unei tabele

Modificarea structurii unei tabele se realizeaza prin comanda ALTER TABLE pentru care documentatia SQL ofera urmatoarele formate

Formatul 1

Formatul 2



Formatul 3

 

ALTER TABLE <nume_tabel1>

ADD|ALTER[COLUMN] <nume_camp1><tip>[(<lungime>[,<p.zecim.>])]

[NULL | NOT NULL]

[CHECK<exp_log.>[ERROR <mesaj_eroare>]]

[DEFAULT <exp>]

[PRIMARY KEY | UNIQUE]

[REFERENCES<nume_tabel2>[TAG <nume_eticheta1>]]

[NOCPTRANS]

ALTER TABLE <nume_tabel1>

ALTER[COLUMN]<nume_camp>

[NULL | NOT NULL]

[SET DEFAULT <expr>]

[SET CHECK <exp_log.> [ERROR <mesaj_eroare>]]

[DROPDEFAULT][DROP CHECK]

ALTERTABLE <nume_tabel1>

[DROP[COLUMN]<nume_camp>]

[SET CHECK <exp_log.>[ERROR <mesaj_eroare>]][DROP CHECK]

[ADD PRIMARY KEY <expr> TAG <nume_eticheta>][DROP PRIMARY KEY]

[ADD UNIQUE <expr> [TAG <nume_eticheta>]][DROP UNIQUE TAG <nume_eticheta>]

[ADD FOREIGN KEY [<expr>] TAG <nume_eticheta>

REFERENCES <nume_tabel2> [TAG <nume_eticheta>]]

[DROP FOREIGN KEY TAG <nume_eticheta> [SAVE]]

[RENAMECOLUMN <nume_camp1>TO<nume_camp2>]

[NOVALIDATE]]

Majoritatea clauzelor au acelasi rol ca si in cazul comenzii CREATE TABLE. Prezentam in continuare doar particularitatile pentru formatele de mai sus.

Clauza ADD [COLUMN] permite adaugarea unuia sau mai multor campuri la sfarsitul unei tabele. Initial acestea au valori nule si vor fi completate cu date, ulterior, prin actualizare.

Exemplul 1.

ALTER TABLE STUDENT;

ADD Specializ CHAR(20

In tabela student.dbf, dupa ultimul camp se adauga Specializ, un atribut cu lungimea de 20 de caractere alfanumerice in care va fi incarcata, ulterior, denumirea specializarii.

Clauza ALTER [COLUMN] permite sa se modifice tipul si lungimea campului specificat.

Exemplul 2:

ALTER TABLE STUDENT;

ALTER Numest CHAR(15)

La crearea tabelei student.dbf pentru campul Numest au fost alocate 25 de caractere alfanumerice. Prin comanda de mai sus lungimea campului a fost redusa la 15 caractere. Modificarea prin ALTER [COLUMN] se realizeaza fara probleme daca tabela nu contine inregistrari. In caz contrar se pot pierde date, daca lungimea campului se reduce, sau daca noul tip de camp nu recunoaste valorile incarcate.

Clauza SET DEFAULT <expr> permite modificarea valorii implicite de incarcare a unui camp, valoare stabilita prin comanda CREATE TABLE cu clauza DEFAULT. Ca si la creare, <expresia> trebuie sa respecte tipul campului. Clauza are efect numai pentru articolele adaugate ulterior folosirii ei.

Exemplul 3:

ALTER TABLE STUDENT;

ALTER Codpostal SET DEFAULT 2200

In tabela student.dbf prin aceasta comanda articolele nou introduse vor avea pentru campul Codpostal   valoare implicita 2200. Articolele introduse anterior isi vor pastra valoarea stabilita prin CREATE TABLE cu clauza DEFAULT (in exemplul nostru valoarea 6600).

Clauza SET CHECK <exp_log.> [ERROR <mesaj_eroare>] stabileste o noua conditie de validare a campului specificat cu aceleasi particularitati de utilizare ca si in cazul comenzii CREATE TABLE cu clauza CHECK. Expresia logica poate fi o functie definita de utilizator sau o procedura memorata. La lansarea acestei clauze expresia logica este evaluata pentru toate articolele incarcate, sistemul afisand mesaj de eroare " field <nume_camp> validation rule is violated", in cazul in care ea nu este respectata. Prin clauza ERROR se poate stabili un mesaj utilizator. Utilizatorul poate modifica prin comenzi de actualizare valorile care nu respecta conditia stabilita.

Exemplul 4:

ALTER TABLE STUDENT;

ALTER Media SET CHECK Media>=6;

ERROR "campul nu respecta limita impusa

In tabela student.dbf prin clauza SET CHECK este modificata conditia impusa pentru campul Media la creare (Media >5). Va fi afisat mesajul utilizator "campul nu respecta limita impusa", daca in tabela exista cel putin un articol care nu respecta noua conditie (Media>=6).

Clauzele DROP DEFAULT si DROP CHECK au rolul de a anula conditiile impuse prin comanda CREATE TABLE cu clauzele DEFAULT, respectiv CHECK sau prin comanda ALTER TABLE cu clauzele SET DEFAULT si SET CHECK.

Clauza DROP [COLUMN] <nume_camp> determina stergerea campului specificat afectand structura si continutul tabelei.

Clauza ADD PRIMARY KEY <expr> [TAG <nume_eticheta>] adauga tabelei un index principal, eticheta avand numele specificat prin TAG. Daca TAG este omisa eticheta va avea acelasi nume cu campul specificat prin <expr>.

Clauza DROP PRIMARY KEY sterge indexul principal dezactivand si eticheta acestuia. Deoarece o tabela poate avea o singura cheie primara, nu este necesara specificarea numelui acesteia.

Clauza ADD UNIQUE <expr>[TAG <nume_eticheta>]adauga un index candidat indicat prin expresie.Eticheta indexului estespecificata prin TAG.Daca TAG lipseste se foloseste <expr>.

Clauza DROP UNIQUE TAG <nume_eticheta> sterge indecsii candidat si eticheta acestora. Deoarece o tabela poate avea chei candidat multiple trebuie specificat numele etichetei indexului candidat.

Clauza ADD FOREIGN KEY [<expr>] TAG <nume_eticheta> adauga tabelei curente un index strain (non-primar) indicat prin <expr> si referit prin <nume_eticheta>. Numele de eticheta nu trebuie sa depaseasca 10 caractere.

Clauza REFERENCES <nume_tabel2> [TAG <nume_eticheta>] specifica tabela parinte pentru care se va stabili o relatie. Daca clauza TAG este omisa relatia este stabilita folosind eticheta indexului primar al tabelei parinte.

Clauza DROP FOREIGN KEY TAG <nume_eticheta> [SAVE] sterge cheia straina . SAVE previne stergerea etichetei din fisierul index structural.

Clauza RENAME COLUMN <nume_camp1> TO <nume_camp2> schimba numele unui camp din tabela curenta. <nume_camp1> specifica vechiul nume de camp, iar <nume_camp2> noul nume de camp.

Clauza NOVALIDATE permite incalcarea restrictlor de integritate a datelor.

In utilizarea comenzii ALTER TABLE trebuie respectate anumite restrictii care sunt determinate de prezenta sau absenta clauzelor NULL si respectiv NOT NULL.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.