2.5.4 Andmete määratluskeele tähtsamad korraldused

iDevice ikoon 2.5.4 Andmete määratluskeele tähtsamad korraldused

Tabeli loomiskorraldus (create table) võimaldab luua tabelit ja lihtsustatud vorm on:

create table tname (colname coltype [not null], ...);

Siinjuures on kasutatud tähistusi:

tname - loodava tabeli nimi;
colname - veerunimi;
coltype - veeru andmetüüp;
not null - kui on lisatud, siis ei saa veerus olla tühja väärtust ja andmed tuleb sellesse veergu sisestada!

Mõned võimalikud andmetüübid on toodud järgnevas tabelis.

Tüüp

Tähendus

integer

32 bitine täisarv

smallint

16 bitine täisarv

float

64 bitine ujuvkomaga arv (12 tüvenumbrit)

smfloat

32 bitine ujuvkomaga arv (7 tüvenumbrit)

char(n)

String (tekst) n sümbolist

varchar(n)

Muutuva pikkusega string (sümbolite suurim arv on n)

date

Kuupäev (päevade arv peale 31 Dec. 1899) ( 01 Jaan 1900 on päev 1) (tuntud ka Juliuse kalendri kuupäevana)

Tabeli loomise käsu juurde peab olema lisatud tabel nimi ja tabeli veergude nimekiri. Iga veeru jaoks on vajalik näidata andmetüüp ja osutama, kas vastav veerg võib või ei või olla jäetud tühjaks (omada null - väärtust *).
Null value tähendab SQL puhul mitte väärtust "0" (zero value) vaid tühja, ilma sisuta välja! Programmeerimiskeeles on sellele sarnaseks vasteks tühiviit, tavaelus väärtuse mitteteadmine.

Näited:

Create table tudengid (tkood integer not null, eesnimi char(10) not null, perenimi char(15) not null, synnipaev date);

Tabeli koos oma struktuuri ja sisuga tühistamiseks (kustutamiseks) võib kasutada korraldust:

drop table tname;

Kus

tname - kustutatava tabeli nimi.

Näited:

Drop table tudengid;

Tabeli struktuuri muutmiseks võib kasutada järgmisi korraldusi:

alter table tname modify ( colname coltype [not null], ...);
alter table tname add ( colname coltype [not null], ...);
alter table tname delete ( colname, ...);

Kus tname, colname, not null tähendus on toodud ülalpool (tabeli loomine)

Esimene korraldus muudab veeru/veergude andmetüüpe. Andmetüüpide muutmine on alati võimalik, kui tabel on tühi, kuid võib osutuda võimatuks, kui tabelis on andmed.
Kas see on võimalik, või mitte see sõltub andmete "vahetatavusest": näiteks on alati võimalik muundada arv stringiks, aga vastupidine on võimalik ainult siis, kui string esindab arvu. Mõne teisendusega võib kaasneda andmete kaotus: näiteks stringi muutmine väiksema pikkusega stringiks või float tüüpi andmete muutmine smfloat tüüpi andmeteks.
Teine korralduste rida võimaldab veeru/veergude lisamist tabelisse: see võib osutuda võimatuks, kui tabel sisaldab andmeid ja lisatav veerg ei luba null väärtust (mõni SQL versioon lubab lisamiseks kasutada niinimetatud "vaikeväärtust" sellise probleemi lahendamiseks).
Kolmas korralduste rida võimaldab veeru tühistamist (kustutamist): kui see veerg sisaldab andmeid, kustutatakse nad samuti.

Näited:

Alter table tudengid add (pikkus smallint);

Alter table tudengid modify (pikkus float);

Alter table tudengid delete (pikkus);

Järgmist korraldust kasutatakse indeksi loomiseks:

create [unique] index idxname on tname (colname, ...);

kus on kasutatud tähiseid

unique - kui kasutatud, tähendab, et indeks on unikaalne;
idxname - loodava indeksi nimi;
tname - tabelinimi;
colname - veerunimi.

On kasulik teada, et pole võimalik luua unikaalset indeksit tabelile, mis juba sisaldab andmeid, kui andmed ei vasta unikaalse indeksi loomusele.

Näited:

Create unique index tudengiid on tudengid (tkood);

Create index tudenginimi on tudengid (perenimi, eesnimi);

Järgmise korraldusega saab indeksi tühistada:

drop index idxname;

Kus idxname on kustutatava indeksi nimi.

Indeksi tühistamisel ei loe, kas indeks on unikaalne või mitte. Indeksite muutmisvõimalusi keeles pole: muutmiseks tuleb indeks kustutada ja uuesti luua. Indeksi tühistamine ei põhjusta andmete kaotust, aga tasub teada, et unikaalse indeksi tühistamine võib luua olukorra, kus vahepealne andmete lisandumine võib põhjustada tema taasloomise võimatuse.

Näited:

drop index tudenginimi;

Ülesandeid

Koosta tabel koerte andmete hoidmiseks (kood, koeranimi)

Lisa tabelisse synniaeg.

Lisa koodi jaoks unikaalne indeks

Vihjeid

CREATE TABLE koerad (kood INT, koeranimi VARCHAR(30));

ALTER TABLE koerad ADD synniaeg DATE;

CREATE UNIQUE INDEX koeraindeks ON koerad(kood)

 

Ühiseks ja igal pool toimivaks standardiks on üldjuhul SQL-92 (aastanumber). Andmebaasisüsteemid on hulgaliselt teinud täiendusi andmetüüpide ja käskude lisavõimaluste juures, samuti näiteks primaarvõtme ja automaatsete koodide loomisel. Nii et ühes keskkonnas kokku pandud vähegi keerukamate käskude üle viimine teise võib küllalt keeruliseks osutuda.