Tabelite muutmine
Tabelite muutmiseks on erinevaid võimalusi. Üldiselt saab neid jaotada kaheks suuremaks kategooriaks - nimemuutused ja struktuurimuutused.
Nimemuutused
Nimemuutuste all peetakse silmas tabeli enda nime või siis veergude ning kitsenduste nimede muutmist. Peamiselt tuleb nimetatud võimalusi kasutada, et tabelit selgemaks teha. Näiteks juhul, kui mingi tabeli veeru nimi ei anna head ülevaadet veerus olevatest andmetest, oleks mõistlik nime muuta.
Tabeli nime muutmise üldkuju on järgnev:
ALTER TABLE <tabel> RENAME TO <uus nimi>;
Veeru nime muutmiseks tuleks kasutada SQL lauset:
ALTER TABLE <tabel> RENAME COLUMN <vana veeru nimi> TO <uus veeru nimi>;
Ning lõpuks kitsenduse nime muutmine toimub järgneva lausega:
ALTER TABLE <tabel> RENAME CONSTRAINT <vana kitsenduse nimi> TO <uus kitsenduse nimi>;
Struktuurimuutused
Struktuurimuutuste all mõeldakse tabelisse uute veergude ning kitsenduste lisamist ning kustutamist. Veel on võimalik muuta olemasolevate veergude omadusi. Allpool on välja toodud peamised struktuuri muutmise SQL laused tabeli juures.
Tabelisse veeru lisamiseks ja kustutamiseks saab kasutada lauseid:
ALTER TABLE <tabel> ADD COLUMN <veeru definitsioon>;
ALTER TABLE <tabel> DROP COLUMN <veeru nimi>;
Näiteks:
ALTER TABLE tudengid ADD elukoht varchar(40) NOT NULL DEFAULT 'Tartu';
ALTER TABLE tudengid DROP COLUMN elukoht;
Tabelisse saab kitsendust lisada ja kustutada lausetega:
ALTER TABLE <tabel> ADD CONSTRAINT <kitsenduse nimi> <kitsenduse defintisioon>;
ALTER TABLE <tabel> DROP CONSTRAINT <kitsenduse nimi>;
Välisvõtme lisamine
Välisvõti on sisuliselt kitsendus, seega lisame kitsenduse välisvõti. Süntaks:
ALTER TABLE <alamtabel> ADD CONSTRAINT <fk_nimi> FOREIGN KEY ({alamtabeli_veerg}) REFERENCES <ülemtabel>[({võtmeveerg})] [ON DELETE {tegevus}] [ON UPDATE {tegevus}];
Siin alamtabel on see tabel, millest nool lähtub ja ülemtabel, millesse nool suundub. Näiteks meil on lemmikloomad ja eraldi tabel loomaliigid. Viimases on sellised väärtused nagu koer, kass, hamster jms. Neil on omavahel 1:n seos (ühest liigist saab olla mitu looma, aga üks loom kuulub ühe liigi alla). Seega alamtabeliks on lemmikloomad ning ülemtabeliks loomaliigid. Oletame, et lemmikloomade tabelis on välisvõtmeks veerg liigi_id.
ALTER TABLE Lemmikloomad ADD CONSTRAINT fk_lemmikloomad2liigid FOREIGN KEY liigi_id REFERENCES Loomaliigid(id) ON DELETE RESTRICT ON UPDATE CASCADE;
Siin lõime välisvõtme Lemmikloomade tabeli väljast liigi_id Loomaliikide primaarvõtmesse id, milles siis ülemtabelis kustutamine on keelatud, kui alamtabelis on sellist liiki loomi (näiteks ei tohi kustutada liiki hamster, kui Lemmikloomade tabelis on hamstreid), aga muutmisega minnakse kaasa. Viimane siis tähendab, et kui näiteks hamstri id muudetakse (pole enam 3, vaid 5), siis ka kõikidel hamstritel, kes on Lemmikloomade tabelis liigi_id, mis oli 3 muutub 5ks.
Selleks,et kustutada tabelist kõik kirjed tuleb kasutada käsku (tabel ise jääb alles):
DELETE FROM <tabel>;
Tabelite loomine. Kirjete lisamine ja muutmine | Vaated |