SQL
Strukturni upitni jezik | |
---|---|
Originalni naziv | Structured Query Language |
Dizajner(i) | Donald Čamberlin Rejmond Bojs |
Implementacije | Mnoge |
Dijalekti | |
Uticaji | Datalog |
Uticao na | CQL, LINQ, SPARQL, SOQL, PowerShell,[1] JPQL, jOOQ, N1QL |
Operativni sistemi | Multiplatformski |
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]
Istorijat
[уреди | уреди извор]Tvorac SQL-a je Donald Čamberlin, a nastao je u IBM-ovoj istraživačkoj laboratoriji (енгл. IBM Research Laboratory) u San Hozeu, Kalifornija 1974. godine, dakle na istom mestu gde je E. F. Kod 1970. definisao osnovne koncepte relacionog modela podataka. Jezik se u početku zvao SEQUEL (engl. Structured English Query Language) i predstavljao je programski interfejs (API) za System R, prototipski sistem za upravljanje bazom podataka (SUBP) koji se razvijao kao deo istraživačkog projekta pod istim nazivom.
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.
- Domen se kreira naredbom:
CREATE DOMAIN <naziv domena> [AS] <predefinisani tip>
[DEFAULT <vrednost>]
[[CONSTRAINT <naziv ograničenja>] CHECK (<ograničenje>)] ..
- Definicija domena se menja naredbom
ALTER
:
ALTER DOMAIN <naziv domena>
SET DEFAULT <vrednost> |
DROP DEFAULT |
ADD [CONSTRAINT <naziv ograničenja>] CHECK (<ograničenje>) |
DROP CONSTRAINT <naziv ograničenja>
- Domen se uništava naredbom:
DROP DOMAIN <naziv domena>
Indeksi
[уреди | уреди извор]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
.
CREATE [UNIQUE] INDEX <naziv indeksa>
ON (<naziv tabele> ( <naziv kolone1> [, <naziv kolone2>, ..]) ;
Izbacivanje se vrši naredbom:
DROP INDEX <naziv indeksa>
Katalog
[уреди | уреди извор]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:
CREATE SHEMA <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:
DROP SHEMA <naziv šeme> CASCADE | RESTRICT
Pun naziv objekta specificira se u obliku:
<naziv kataloga>, <naziv šeme>, <naziv objekta>
Tipovi podataka
[уреди | уреди извор]Numerički tipovi |
|
Tekstualni tipovi |
|
Binarni tipovi |
|
Datumski tipovi |
|
Intervalni tipovi |
|
---|
Tabele
[уреди | уреди извор]Kreiranje tabela
[уреди | уреди извор]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:
Perzistentna tabela
CREATE TABLE <naziv tabele>
(<naziv kolone1> <tip podatka> NOT NULL],
<naziv kolone> <tip podatka> [NOT NULL], ..)
Globalna privremena tabela
CREATE GLOBAL TEMPORARY TABLE <naziv tabele>
(<naziv kolone1> <tip podatka> [ NOT NULL],
<naziv kolone> <tip podatka> [ NOT NULL], . .) ;
Kreirana lokalna privremena tabela
CREATE LOCAL TEMPORARY TABLE <naziv tabele>
(<naziv kolone1> <tip podatka> [ NOT NULL],
<naziv kolone> <tip podatka> [ NOT NULL], . .) ;
Deklarisana lokalna privremena tabela
DECLARE LOCAL TEMPORARY TABLE MODULE <naziv tabele>
(<naziv kolone1> <tip podatka> [NOT NULL],
<naziv kolone> <tip podatka> [ NOT NULL], . .) ;
- Izvedena tabela - predstavlja rezultat izvršavanja upita.
- Tabela pogleda – predstavlja rezultat poziva imenovanog upita(pogleda).
Izmena definicije tabele
[уреди | уреди извор]- Dodavanje nove kolone
ALTER TABLE <naziv tabele>
[ADD COLUMN] <definicija kolone> ;
- Izmena postojeće kolone
ALTER TABLE <naziv tabele>
[ALTER COLUMN] <naziv kolone>
SET DEFAULT <vrednost> |
DROP DEFAULT;
- Izbacivanje kolone iz tabele
ALTER TABLE <naziv tabele>
DROP [COLUMN] <naziv kolone> ;
- Dodavanje ili izbacivanje ograničenja na vrednosti
ALTER TABLE <naziv tabele>
ADD [CONSTRAINT <naziv ograničenja> ] <ograničenje tabele> |
DROP CONSTRAINT <naziv ograničenja> ;
Izbacivanje tabele
[уреди | уреди извор]- Brisanje sadržaja tabele
DELETE TABLE <naziv tabele>;
- Brisanje tabele i njenog sadržaja
DROP TABLE <naziv tabele>;
Vidi još
[уреди | уреди извор]Reference
[уреди | уреди извор]- ^ Paul, Ryan. „A guided tour of the Microsoft Command Shell”. Ars Technica. Приступљено 10. 4. 2011.
- ^ Beaulieu, Alan (april 2009). Mary E. Treseler, ур. Learning SQL (2nd изд.). Sebastapol, CA, USA: O'Reilly. ISBN 978-0-596-52083-0.
- ^ „SQL”. Britannica.com. Приступљено 2. 4. 2013.
- ^ „SQL”. Oxforddictionaries.com. Архивирано из оригинала 03. 08. 2016. г. Приступљено 16. 1. 2017.
- ^ „Structured Query Language (SQL)”. Msdn.microsoft.com. Приступљено 16. 1. 2017.
- ^ „Шта је база података”.
- ^ а б Lazarević B., Marjanović Z., Ančić N., Babarogić S., Baze podataka, Fakultet organizacionih nauka, Beograd. 2010. ISBN 978-86-7680-144-2.
Literatura
[уреди | уреди извор]- Blagojević V., (2006). Relacione baze podataka. ICNT Beograd. ISBN 978-86-86531-07-0.
- Гордана Павловић-Лажетић, Увод у релационе базе података.
- Codd, Edgar F. (jun 1970). „A Relational Model of Data for Large Shared Data Banks”. Communications of the ACM. 13 (6): 377—87. doi:10.1145/362384.362685. Архивирано из оригинала 12. 6. 2007. г.
- Discussion on alleged SQL flaws (C2 wiki)
- 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. ISBN 978-0-201-96426-4. Недостаје или је празан параметар
|title=
(помоћ) - SQL -- Part 1: Framework (SQL/Framework)
- „SQL:2011 draft”. Архивирано на сајту Wayback Machine (31. јануар 2020)
- SQL-92 draft
- Feuerstein, Steven; Pribyl, Bill (2014). Oracle PL/SQL Programming (6th изд.). O'Reilly & Associates. ISBN 978-1449324452.
- Naudé, Frank (9. 6. 2005). „Oracle PL/SQL FAQ rev 2.08”.
- Serge Rielau ([email protected]), SQL Architect, STSM, IBM. „DB2 10: Run Oracle applications on DB2 10 for Linux, UNIX, and Windows”. Ibm.com. Приступљено 2012-07-26.
- „Oracle Compliance with SQL/PSM”.
- „Oracle Server Features”. Oracle. Приступљено 2020-09-21.
- „PL/SQL Anonymous Blocks”. Oracle. Приступљено 2020-09-21.
- Nanda, Arup; Feuerstein, Steven (2005). Oracle PL/SQL for DBAs. O'Reilly Series. O'Reilly Media, Inc. стр. 122,429. ISBN 978-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.”
- Gupta, Saurabh K. (2012). „5: Using Advanced Interface Methods”. Advanced Oracle PL/SQL Developer's Guide. Professional experience distilled (2 изд.). Birmingham: Packt Publishing Ltd (објављено 2016). стр. 143. ISBN 9781785282522. Приступљено 08. 06. 2017.
- Dedić, Nedim; Stanier, Clare (2016). Hammoudi, Slimane; Maciaszek, Leszek; Missikoff, Michele M. Missikoff; Camp, Olivier; Cordeiro, José, ур. An Evaluation of the Challenges of Multilingualism in Data Warehouse Development. International Conference on Enterprise Information Systems, 25–28 April 2016, Rome, Italy (PDF). Proceedings of the 18th International Conference on Enterprise Information Systems (ICEIS 2016). 1. SciTePress. стр. 196—206. ISBN 978-989-758-187-8. doi:10.5220/0005858401960206 . Архивирано (PDF) из оригинала 22. 05. 2018. г.
- „9 Reasons Data Warehouse Projects Fail”. blog.rjmetrics.com. 4. 12. 2014. Приступљено 2017-04-30.
- „Exploring Data Warehouses and Data Quality”. spotlessdata.com. Архивирано из оригинала 2018-07-26. г. Приступљено 2017-04-30.
- „What is a Data Warehouse? | Key Concepts | Amazon Web Services”. Amazon Web Services, Inc. (на језику: енглески). Приступљено 13. 02. 2023.
- Davenport, Thomas H. and Harris, Jeanne G. Competing on Analytics: The New Science of Winning Harvard Business School Press. . 2007. ISBN 978-1-4221-0332-6. Недостаје или је празан параметар
|title=
(помоћ) - Ganczarski, Joe. Data Warehouse Implementations: Critical Implementation Factors Study VDM Verlag . 2009. ISBN 3-639-18589-7. Недостаје или је празан параметар
|title=
(помоћ) - Kimball, Ralph and Ross, Margy. The Data Warehouse Toolkit Third Edition Wiley, . 2013. ISBN 978-1-118-53080-1. Недостаје или је празан параметар
|title=
(помоћ) - Linstedt, Graziano, Hultgren. The Business of Data Vault Modeling Second Edition Dan linstedt, . 2010. ISBN 978-1-4357-1914-9. Недостаје или је празан параметар
|title=
(помоћ) - William Inmon. Building the Data Warehouse John Wiley and Sons, . 2005. ISBN 978-81-265-0645-3. Недостаје или је празан параметар
|title=
(помоћ)
Spoljašnje veze
[уреди | уреди извор]Медији везани за чланак SQL на Викимедијиној остави
- w3schools tutorijali
- SQL za početnike
- SQL zvanični sajt
- SQL Server Microsoft
- Oracle SQL Developer
- SQL vežbe
- МySQL upitni jezik
- 1995 SQL Reunion: People, Projects, and Politics, by Paul McJones (ed.): transcript of a reunion meeting devoted to the personal history of relational databases and SQL.
- American National Standards Institute. X3H2 Records, 1978–1995 Charles Babbage Institute Collection documents the H2 committee's development of the NDL and SQL standards.
- Oral history interview with Donald D. Chamberlin Charles Babbage Institute In this oral history Chamberlin recounts his early life, his education at Harvey Mudd College and Stanford University, and his work on relational database technology. Chamberlin was a member of the System R research team and, with Raymond F. Boyce, developed the SQL database language. Chamberlin also briefly discusses his more recent research on XML query languages.
- 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”. - An introduction to real-time processing of streaming data with continuous SQL queries
- BNF Grammar for ISO/IEC 9075:2003, part 2 SQL/Framework