SQL


Strukturni upitni jezik
Originalni nazivStructured Query Language
Dizajner(i)Donald Čamberlin
Rejmond Bojs
ImplementacijeMnoge
Dijalekti
UticajiDatalog
Uticao naCQL, LINQ, SPARQL, SOQL, PowerShell,[1] JPQL, jOOQ, N1QL
Operativni sistemiMultiplatformski

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
Tačni
INTEGER (INT)
SMALLINT
NUMERIC
DECIMAL (DEC)
Približni
REAL
DOUBLE PRECISION
FLOAT
Tekstualni tipovi
CHARACTER (CHAR)
CHARACTER VARYING
(CHAR VARING, VARCHAR)

CHARACTER LARGE OBJECT(CHAR LARGE OBJECT, CLOB)
Binarni tipovi
BIT
BIT VARYING
BINARY LARGE OBJECT
(BLOB)
Datumski tipovi
DATE
TIME
TIMESTAMP
TIME WITH TIMEZONE
TIMESTAMP WITH TIME ZONE
Intervalni tipovi
Godina-mesec
INTERVAL YEAR
INTERVAL MONTH
INTERVAL YEAR TO MONTH
Dan-vreme(neki iz grupe)
INTERVAL DAY
INTERVAL DAY TO HOUR
INTERVAL HOUR TO MINUTE

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.
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

  1. ^ Paul, Ryan. „A guided tour of the Microsoft Command Shell”. Ars Technica. Приступљено 10. 4. 2011. 
  2. ^ Beaulieu, Alan (april 2009). Mary E. Treseler, ур. Learning SQL (2nd изд.). Sebastapol, CA, USA: O'Reilly. ISBN 978-0-596-52083-0. 
  3. ^ „SQL”. Britannica.com. Приступљено 2. 4. 2013. 
  4. ^ „SQL”. Oxforddictionaries.com. Архивирано из оригинала 03. 08. 2016. г. Приступљено 16. 1. 2017. 
  5. ^ „Structured Query Language (SQL)”. Msdn.microsoft.com. Приступљено 16. 1. 2017. 
  6. ^ „Шта је база података”. 
  7. ^ а б Lazarević B., Marjanović Z., Ančić N., Babarogić S., Baze podataka, Fakultet organizacionih nauka, Beograd. 2010. ISBN 978-86-7680-144-2.

Literatura

Spoljašnje veze

Медији везани за чланак SQL на Викимедијиној остави