SQL (engl.Structured Query Language) je relacioni upitni jezik (ANSI i ISO standard).[2][3][4][5] Relacije se kreiraju jednom naredbom i odmah su dostupne, što ga čini jednostavnim za korišćenje. Uniforman je, jer se svi podaci i rezultati operacija prikazuju u vidu tabele i omogućava interaktivno i klasično programiranje. Sve do verzije SQL:1999 ovaj jezik je bio neproceduralan, odnosno njime se specificiralo ŠTA, a ne i KAKO nešto treba uraditi.[6]
Pojava komercijalnih relacionih sistema uvećala je značaj i ubrzala proces standardizacije relacionog upitnog jezika. Prva etapa tog procesa završila se 1986. godine usvajanjem SQL-a kao standardnog relacionog upitnog jezika. Ta prva verzija SQL standarda je poznata pod nazivom SQL-86. Njom su standardizovane osnovne karakteristike SQL-a kao deklarativnog relacionog upitnog jezika. Međutim, mnoge bitne karakteristike jezika ostale su nestandardizovane. To je dovelo do revizija standarda, koji je usvojen 1989. godine i kojom su standardizovane karakteristike koje se odnose na očuvanje integriteta baze podataka i povezivanje sa klasičnim programskim jezicima. Ta verzija SQL standarda poznata je pod nazivom SQL-89. 1992. godine usvojena je sledeća bitna revizija standarda, poznata pod nazivom SQL-92 ili SQL-2, kojom je SQL zaokružen kao programski jezik, a obim standarda uvećan šest puta u odnosu na polaznu verziju. Naredna verzija SQL standarda usvojena je 1999. godine.[7]
SQL:1999
Iako su početne verzije SQL-a bile prilično jednostavne, bliske korisniku i u velikoj meri deklarativne za SQL:1999 se može reći da je kompleksan, proceduralno/deklarativan jezik. U njega su uključeni koncepti objektne tehnologije, mehanizam trigera, rekurzija i proceduralna proširenja. Da bi se povećala funkcionalnost jezika, u SQL:1999 standardu uvedena je proceduralna nadgradnja SQL-a, koju uglavnom čine upravljačke strukture slične upravljačkim strukturama klasičnih programskih jezika. SQL-1999 standard definiše više načina korišćenja SQL-a. Dva osnovna načina su direktno (interaktivno) korišćenje SQL-a i povezivanje SQL-a sa klasičnim programskim jezicima („ugrađeni“ SQL).[7]
SQL naredbe
SQL-1999 standard razvrstava SQL naredbe u sledećih 7 kategorija:
Naredbe za šemu baze podataka (енгл.SQL-schema statements) - za kreiranje, izmenu i izbacivanje šema i objekata šema (CREATE, ALTER, DROP)
Naredbe za podatke (енгл.SQL-data statements) - za prikaz i ažuriranje podataka baze (SELECT, INSERT, UPDATE, DELETE)
Naredbe za transakcije (енгл.SQL-transaction statements) - za startovanje, završavanje i postavljanje parametara za transakcije (COMMIT, ROLLBACK)
Naredbe za kontrolu (енгл.SQL-contol statements), koje se koriste za kontrolu izvršavanja sekvence SQL naredbi (CALL, RETURN)
Naredbe za konekcije (енгл.SQL-connection statements) - za uspostavljanje i prekidanje SQL konekcije (CONNECT, DISCONNECT)
Naredbe za sesije (енгл.SQL-session statements) - za postavljanje default vrednosti i drugih parametara SQL sesije (SET)
Naredbe za dijagnostiku (енгл.SQL-diagnostic statements) - signalizuju izuzetke u SQL rutinama (GET DIAGNOSTIC)
Struktura SQL
Domeni
Domen je u SQL-u prost, korisnički definisan imenovan objekat koji se može koristiti kao alternativa za predefinisan tip podatka nad kojim se definiše. Može imati default vrednost i jedno ili više ograničenja.
Indeksi su strukture podataka koje olakšavaju i čine efikasnijim pristup podacima baze. Vrednosti indeksiranih kolona mogu biti jedinstvene (primarni ključ) ukoliko se pri kreiranju izabere varijanta UNIQUE.
Katalog je imenovana kolekcija šema baze podataka u SQL-u. Svaki katalog sadrži šemu rečnika podataka sa nazivom INFORMATION SCHEMA. U SQL–u ne postoji mogućnost kreiranja i brisanja kataloga.
Šema
Šema predstavlja kolekciju svih objekata koji dele isti prostor imenovanja. Šema može sadržati jednu ili više tabela, a svaka tabela može pripadati logički tačno jednoj šemi. Šema se kreira naredbom:
CREATESHEMA<nazivšeme>
Izbacivanje šeme može biti CASCADE - izbacuje šemu i objekte iz nje ili RESTRICT - brisanje šeme koja je prazna i ostvaruje se naredbom:
Podaci se u SQL-u čuvaju se i prikazuju u obliku tabela. Svaka kolona tabele ima ime i tip podatka ili domen. Red je najmanja jedinica podatka koja se može uneti u tabelu ili izbrisati iz nje.
U SQL-u koriste se:
Bazna tabela - vrsta tabele za čuvanje svih SQL podataka. Može biti:
C. J. Date with Hugh Darwen: A Guide to the SQL standard : a users guide to the standard database language SQL, 4th ed. 1997. ISBN978-0-201-96426-4.. Addison Wesley, USA .
Nanda, Arup; Feuerstein, Steven (2005). Oracle PL/SQL for DBAs. O'Reilly Series. O'Reilly Media, Inc. стр. 122,429. ISBN978-0-596-00587-0. Приступљено 11. 01. 2011. „A pipelined table function [...] returns a result set as a collection [...] iteratively. [... A]s each row is ready to be assigned to the collection, it is 'piped out' of the function.”
Ganczarski, Joe (2009). Data Warehouse Implementations: Critical Implementation Factors Study. ISBN978-3-639-18589-8.. VDM Verlag
Kimball, Ralph and Ross, Margy (2013). The Data Warehouse Toolkit. ISBN978-1-118-53080-1.CS1 одржавање: Вишеструка имена: списак аутора (веза). Third Edition Wiley.
Linstedt, Graziano, Hultgren (2010). The Business of Data Vault Modeling. ISBN978-1-4357-1914-9.CS1 одржавање: Вишеструка имена: списак аутора (веза). Second Edition Dan linstedt.
William Inmon (2005). Building the Data Warehouse. New York: John Wiley & Sons. ISBN978-81-265-0645-3..
Spoljašnje veze
Медији везани за чланак SQL на Викимедијиној остави
Comparison of Different SQL Implementations This comparison of various SQL implementations is intended to serve as a guide to those interested in porting SQL code between various RDBMS products, and includes comparisons between SQL:2008, PostgreSQL, DB2, MS SQL Server, MySQL, Oracle, and Informix.
„Event stream processing with SQL”. Архивирано из оригинала 6. 7. 2014. г.CS1 одржавање: Формат датума (веза) - An introduction to real-time processing of streaming data with continuous SQL queries