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 struktrure 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 podaka. 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., Addison Wesley, USA , . 1997. ISBN978-0-201-96426-4.Недостаје или је празан параметар |title= (помоћ)
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.”
Davenport, Thomas H. and Harris, Jeanne G. Competing on Analytics: The New Science of Winning Harvard Business School Press. . 2007. ISBN978-1-4221-0332-6.Недостаје или је празан параметар |title= (помоћ)
Ganczarski, Joe. Data Warehouse Implementations: Critical Implementation Factors StudyVDM Verlag . 2009. ISBN3-639-18589-7.Недостаје или је празан параметар |title= (помоћ)
Kimball, Ralph and Ross, Margy. The Data Warehouse Toolkit Third Edition Wiley, . 2013. ISBN978-1-118-53080-1.Недостаје или је празан параметар |title= (помоћ)
Linstedt, Graziano, Hultgren. The Business of Data Vault Modeling Second Edition Dan linstedt, . 2010. ISBN978-1-4357-1914-9.Недостаје или је празан параметар |title= (помоћ)
William Inmon. Building the Data Warehouse John Wiley and Sons, . 2005. ISBN978-81-265-0645-3.Недостаје или је празан параметар |title= (помоћ)
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.