SQL

Из Википедије, слободне енциклопедије

SQL (engl. Structured Query Language) je relacioni upitni jezik (ANSI i ISO standard). 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.

Istorijat[уреди]

Tvorac SQL-a je Chamberlin, a nastao je u IBM-ovoj istraživačkoj laboratoriji (IBM Research Laboratory) u San Jose-u, 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.[1]

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 nju 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 programsih 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).[1]

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 MOUNTH
INTERVAL YEAR TO MOUNTH
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. 1,0 1,1 Lazarević B., Marjanović Z., Ančić N., Babarogić S., 2010, Baze podataka, Fakultet organizacionih nauka, Beograd. ISBN 978-86-7680-144-2.


Literatura[уреди]

Spoljašnje veze[уреди]

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