SQL Standardi
1
SQL Standardi
Relacioni model baza podataka postajao je osamdesetih godina 20. veka polako ali sigurno
industrijski standard. Mada je SQL bio široko prepoznati jezik baza podataka, problem je
predstavljao porast razlika izme
đ
u implementacija raznih proizvo
đ
a
č
a. Neka vrsta standarda
postala je neophodna.
Organizacija sa neobi
č
no duga
č
kim imenom - American National Standards Institute National
Committee on Information Technology Standards H2 Technical Committee on Database (ANSI
NCITS H2 TCD) dobila je zadatak da standardizuje relacioni model 1982 godine. Projekat je u
po
č
etku bio baziran na IBM SQL/DS specifikaciji, i u jednom periodu je striktno pratio razvoj IBM
DB2. Godine 1984. predlog standarda je redizajniran tako da je postao opštiji i dopustio ve
ć
u
raznolikost proizvo
đ
a
č
a sistema baza podataka.
SQL je prvi put standardizovan
1986
. godine pod nazivom ‘‘Database LanguageSQL" (Ameri
č
ki
nacionalni institut za standardizaciju, X3.135) odnosno
1987
. godine (Me
đ
unarodna organizacija
za standardizaciju, ISO). Ovaj ANSI/ISO standard usvojila je i organizacija Federalnih standarda
za obardu informacija ameri
č
ke vlade (Federal Information Processing Standard,
FIPS
).
Standard je imao manje od 100 strana i uklju
č
ivao je malo svojstava – jednostavne upite,
ažuriranja i definicije tabela, tabelarni model podataka, nezavisan od jezika, definiciju sheme,
poglede i kursore za sume
đ
e (engl. interface) ka slogovno orijentisanim programskim jezicima.
Revidirani standard, poznat kao
SQL89
ili
SQL1
, objavljen je 1989. godine.
SQL89 (SQL1)
Zbog suprotstavljenih interesa komercijalnih proizvo
đ
a
č
a, veliki deo SQL89 (ili SQL1) standarda
ostavljen je namerno nepotpun, i mnoga svojstva su ozna
č
ena kao "definisana implementacijom".
Standard je imao oko 120 strana i dodao je samo nekoliko vrsta ograni
č
enja za o
č
uvanje
integriteta uskladištenih podataka. Obezbe
đ
uje referencijalni integritet i ugnježdenje SQL-a u
programske jezike Ada, C, COBOL, FORTRAN, Pascal i PL/I.
SQL92 (SQL2)
Da bi se standard poja
č
ao, ANSI kometiet je revidirao prethodni rad standardom
SQL92
koji je
bio baziran na SQL89 i ratifikovan 1992. (nazvan i
SQL2
). Ovaj standard je razrešio ve
ć
i broj
slabosti standarda SQL89 i postavio konceptualna SQL svojstva koja su u to vreme prevazilazila
svojstva postoje
ć
ih RSUBP implementacija. Standard SQL92 bio je približno pet puta ve
ć
i od
svog prethodnika (ima oko 600 strana) i on poboljšava ortogonalnost jezika dopuštaju
ć
i upotrebu
izraza na svakom mestu gde se o
č
ekuju tabele ili skalarne vrednosti (npr. SELECT, FROM linija).
SQL dodaje nova svojstva kao što su tipovi podataka
date
i
time
, skupovne operatore UNION,
INTERSECT, EXCEPT, standardne tabele kataloga za smeštanje metapodataka, svojstva
evolucije sheme kroz ALTER TABLE, itd. Neka od rešenja ovog standarda odnose se na:
dinami
č
ki SQL kroz PREPARE i EXECUTE iskaze
spoljašnje spajanje
kaskadno ažuriranje i brisanje
2
privremene tabele
skupovne operacije unije, preseka i razlike
definiciju domena u shemi
nove ugra
đ
ene tipove podataka
nivoe konzistentnosti transakcija
odloženu proveru uslova integriteta
SQL dijagnostiku, itd.
Na primer, lista izvedenih tabela u FROM liniji:
SELECT P_SIF, I_SIF
FROM P, (SELECT *
FROM I
WHERE STATUS > 10) AS DOBRIIZD
WHERE P.DRZAVA = DOBRIIZD.DRZAVA
SELECT upitni blok u SELECT liniji, npr.
SELECT I.I_SIF, (SELECT SUM(KI.TIRAZ)
FROM KI
WHERE KI.I_SIF = I.I_SIF ) AS UK_TIRAZ
FROM I
Prošireni logi
č
ki izrazi, npr.
(p) IS [NOT] TRUE ((p) je (nije) ta
č
no)
(p) IS [NOT] FALSE ((p) je (nije) neta
č
no)
(p) IS [NOT] UNKNOWN ((p) je (nije) nepoznato)
Dekartov proizvod, prošireno prirodno, slobodno spajanje, spoljašnja unija - operacija oblika:
tabela-1
CROSS JOIN |
[NATURAL] [INNER|LEFT|RIGHT|FULL|UNION] JOIN
tabela-2
[ON
logi
č
ki-izraz
]
Na primer,
SELECT K.K_SIF, SUM(TIRAZ) AS TIR
FROM (K NATURAL LEFT JOIN KI)
GROUP BY K.K_SIF
Za kreiranje domena koristi se iskaz
CREATE DOMAIN
naziv-domena
[AS]
tip-podataka
[
podrazumevana-definicija
]
[
lista-definicija-ogranicenja-domena
]
Opšti uslov integriteta
CREATE ASSERTION
ime-pravila
CHECK(
uslov
), na primer

4
usaglašenosti: osnovni SQL99 (
Core SQL99
) i poja
č
ani SQL99 (
Enhanced SQL99
). Veoma je
kompleksan (preko 1,500 strana u odnosu na 120 strana standarda SQL89 i oko 600 strana
SQL92).
SQL3 uklju
č
uje objekte i kompleksne tipove podataka i sve mehanizme za podršku, unutar
relacionih tabela. U SQL se uvode svi bitni principi objektnog programiranja – nasle
đ
ivanje,
u
č
aurenje i polimorfizam.
SQL99 relaciona (ne-OO) svojstva
Tipovi podataka
SQL:1999 ima
č
etiri nova tipa podataka:
1. LARGE OBJECT tip (LOB), sa varijantama CHARACTER LARGE OBJECT (CLOB) i
BINARY LARGE OBJECT (BLOB). LOB objekat ne može da bude primarni klju
č
(PRIMARY
KEY), strani klju
č
(FOREIGN KEY) i ne može da se koristi u pore
đ
enjima osim testova jednakosti
ili razli
č
itosti, ne može da se koristi u GROUP BY ili ORDER BY liniji. Ina
č
e se CLOB tip ponaša
sli
č
no nisci karaktera.
2. Tip je BOOLEAN sa vrednostima
true
,
false
, i
unknown
.
3,4. Dva nova strukturna (kompozitna) tipa: ARRAY i ROW. Tip ARRAY dopušta da se
kolekcije vrednosti dodele atributu (koloni) tabele baze podataka. Na primer,
DANI VARCHAR(10) ARRAY[7]
omogu
ć
uje smeštanje imena svih sedam dana u jedan
atribut (DANI) jedne vrste tabele. Ovo svojstvo narušava normalizovanost relacije (1NF).
Tip ROW dalje narušava 1NF dopuštaju
ć
i strukturnu vrednost u koloni tabele: na primer,
ADDRESS ROW (
STREET VARCHAR(50),
CITY VARCHAR(30),
STATE CHAR(2) )
SQL:1999 uvodi i jednostavne korisni
č
ki definisane tipove – DISTINCT TYPES - koji su
definisani nad jednostavnim ugra
đ
enim (predefinisanim) SQL tipovima ali se ne mogu "mešati" u
istom izrazu bez eksplicitne konverzije operatorom CAST (primer u SQLstandardi.ppt)
Predikati
Od nekoliko novih predikata u SQL:1999, pomenimo predikat
SIMILAR
koji omogu
ć
uje
UNIX-like zadavanje regularnog izraza, korisno u sravnjivanju obrazaca (pattern matching). Na
primer,
WHERE NAME SIMILAR TO '(SQL-(86|89|92|99))|(SQL(1|2|3))'
Bogatija semantika
SQL99 doprinosi oboga
ć
enju semantike jezika na više na
č
ina. Jedan aspekt je proširenje
skupa pogleda koji se mogu ažurirati (npr. pogledi koji uklju
č
uju podupite) analizom funkcionalnih
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti