SQL

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


Структурни упитни језик
Оригинални називStructured Query Language
Дизајнер(и)Доналд Чамберлин
Рејмонд Бојс
ИмплементацијеМноге
Дијалекти
УтицајиDatalog
Утицао наCQL, LINQ, SPARQL, SOQL, PowerShell,[1] JPQL, jOOQ, N1QL
Оперативни системиМултиплатформски

SQL (енгл. Structured Query Language) је релациони упитни језик (ANSI и ISO стандард).[2][3][4][5] Релације се креирају једном наредбом и одмах су доступне, што га чини једноставним за коришћење. Униформан је, јер се сви подаци и резултати операција приказују у виду табеле и омогућава интерактивно и класично програмирање. Све до верзије SQL:1999 овај језик је био непроцедуралан, односно њиме се специфицирало ШТА, а не и КАКО нешто треба урадити.[6]

Историјат[уреди | уреди извор]

Творац SQL-а је Доналд Чамберлин, а настао је у IBM-овој истраживачкој лабораторији (енгл. IBM Research Laboratory) у Сан Хозеу, Калифорнија 1974. године, дакле на истом месту где је Е. Ф. Код 1970. дефинисао основне концепте релационог модела података. Језик се у почетку звао SEQUEL (енгл. Structured English Query Language) и представљао је програмски интерфејс (API) за System R, прототипски систем за управљање базом података (SUBP) који се развијао као део истраживачког пројекта под истим називом.

Појава комерцијалних релационих система увећала је значај и убрзала процес стандардизације релационог упитног језика. Прва етапа тог процеса завршила се 1986. године усвајањем SQL-а као стандардног релационог упитног језика. Та прва верзија SQL стандарда је позната под називом SQL-86. Њом су стандардизоване основне карактеристике SQL-а као декларативног релационог упитног језика. Међутим, многе битне карактеристике језика остале су нестандардизоване. То је довело до ревизија стандарда, који је усвојен 1989. године и којом су стандардизоване карактеристике које се односе на очување интегритета базе података и повезивање са класичним програмским језицима. Та верзија SQL стандарда позната је под називом SQL-89. 1992. године усвојена је следећа битна ревизија стандарда, позната под називом SQL-92 или SQL-2, којом је SQL заокружен као програмски језик, а обим стандарда увећан шест пута у односу на полазну верзију. Наредна верзија SQL стандарда усвојена је 1999. године.[7]

SQL:1999[уреди | уреди извор]

Иако су почетне верзије SQL-а биле прилично једноставне, блиске кориснику и у великој мери декларативне за SQL:1999 се може рећи да је комплексан, процедурално/декларативан језик. У њега су укључени концепти објектне технологије, механизам тригера, рекурзија и процедурална проширења. Да би се повећала функционалност језика, у SQL:1999 стандарду уведена је процедурална надградња SQL-а, коју углавном чине управљачке структруре сличне управљачким структурама класичних програмских језика. SQL-1999 стандард дефинише више начина коришћења SQL-а. Два основна начина су директно (интерактивно) коришћење SQL-а и повезивање SQL-а са класичним програмским језицима („уграђени“ SQL).[7]

SQL наредбе[уреди | уреди извор]

SQL-1999 стандард разврстава SQL наредбе у следећих 7 категорија:

  • Наредбе за шему базе података (енгл. SQL-schema statements) - за креирање, измену и избацивање шема и објеката шема (CREATE, ALTER, DROP)
  • Наредбе за податке (енгл. SQL-data statements) - за приказ и ажурирање података базе (SELECT, INSERT, UPDATE, DELETE)
  • Наредбе за трансакције (енгл. SQL-transaction statements) - за стартовање, завршавање и постављање параметара за трансакције (COMMIT, ROLLBACK)
  • Наредбе за контролу (енгл. SQL-contol statements), које се користе за контролу извршавања секвенце SQL наредби (CALL, RETURN)
  • Наредбе за конекције (енгл. SQL-connection statements) - за успостављање и прекидање SQL конекције (CONNECT, DISCONNECT)
  • Наредбе за сесије (енгл. SQL-session statements) - за постављање дефаулт вредности и других параметара SQL сесије (SET)
  • Наредбе за дијагностику (енгл. SQL-diagnostic statements) - сигнализују изузетке у SQL рутинама (GET DIAGNOSTIC)

Структура SQL[уреди | уреди извор]

Домени[уреди | уреди извор]

Домен је у SQL-у прост, кориснички дефинисан именован објекат који се може користити као алтернатива за предефинисан тип податка над којим се дефинише. Може имати default вредност и једно или више ограничења.

  • Домен се креира наредбом:
CREATE DOMAIN <naziv domena> [AS] <predefinisani tip>
[DEFAULT <vrednost>]
[[CONSTRAINT <naziv ograničenja>] CHECK (<ograničenje>)] ..
  • Дефиниција домена се мења наредбом ALTER :
ALTER DOMAIN <naziv domena>
SET DEFAULT <vrednost> |
DROP DEFAULT |
ADD [CONSTRAINT <naziv ograničenja>] CHECK (<ograničenje>) |
DROP CONSTRAINT <naziv ograničenja>
  • Домен се уништава наредбом:
 DROP DOMAIN <naziv domena>

Индекси[уреди | уреди извор]

Индекси су структуре података које олакшавају и чине ефикаснијим приступ подацима базе. Вредности индексираних колона могу бити јединствене (примарни кључ) уколико се при креирању изабере варијанта UNIQUE.

CREATE [UNIQUE] INDEX <naziv indeksa>
 ON  (<naziv tabele> ( <naziv kolone1> [, <naziv kolone2>, ..]) ;

Избацивање се врши наредбом:

DROP INDEX <naziv indeksa>

Каталог[уреди | уреди извор]

Каталог је именована колекција шема базе података у SQL-u. Сваки каталог садржи шему речника података са називом INFORMATION SCHEMA. У SQL–у не постоји могућност креирања и брисања каталога.

Шема[уреди | уреди извор]

Шема представља колекцију свих објеката који деле исти простор именовања. Шема може садржати једну или више табела, а свака табела може припадати логички тачно једној шеми. Шема се креира наредбом:

 CREATE SHEMA <naziv šeme>

Избацивање шеме може бити CASCADE - избацује шему и објекте из ње или RESTRICT - брисање шеме која је празна и остварује се наредбом:

DROP SHEMA <naziv šeme> CASCADE | RESTRICT

Пун назив објекта специфицира се у облику:

<naziv kataloga>, <naziv šeme>, <naziv objekta>

Типови података[уреди | уреди извор]

Нумерички типови
Тачни
INTEGER (INT)
SMALLINT
NUMERIC
DECIMAL (DEC)
Приближни
REAL
DOUBLE PRECISION
FLOAT
Текстуални типови
CHARACTER (CHAR)
CHARACTER VARYING
(CHAR VARING, VARCHAR)

CHARACTER LARGE OBJECT(CHAR LARGE OBJECT, CLOB)
Бинарни типови
BIT
BIT VARYING
BINARY LARGE OBJECT
(BLOB)
Датумски типови
DATE
TIME
TIMESTAMP
TIME WITH TIMEZONE
TIMESTAMP WITH TIME ZONE
Интервални типови
Година-месец
INTERVAL YEAR
INTERVAL MONTH
INTERVAL YEAR TO MONTH
Дан-време(неки из групе)
INTERVAL DAY
INTERVAL DAY TO HOUR
INTERVAL HOUR TO MINUTE

Табеле[уреди | уреди извор]

Креирање табела[уреди | уреди извор]

Подаци се у SQL-u чувају се и приказују у облику табела. Свака колона табеле има име и тип податка или домен. Ред је најмања јединица податка која се може унети у табелу или избрисати из ње.

У SQL-u користе се:

  • Базна табела - врста табеле за чување свих SQL подака. Може бити:

Перзистентна табела

CREATE TABLE <naziv tabele>
(<naziv kolone1> <tip podatka> NOT NULL],
<naziv kolone> <tip podatka> [NOT NULL], ..)

Глобална привремена табела

 CREATE GLOBAL TEMPORARY TABLE  <naziv tabele>
(<naziv kolone1> <tip podatka> [ NOT NULL],
<naziv kolone> <tip podatka> [ NOT NULL], . .) ;

Креирана локална привремена табела

 CREATE LOCAL TEMPORARY TABLE  <naziv tabele>
(<naziv kolone1> <tip podatka> [ NOT NULL],
<naziv kolone> <tip podatka> [ NOT NULL], . .) ;

Декларисана локална привремена табела

 
 DECLARE LOCAL TEMPORARY TABLE MODULE  <naziv tabele>
(<naziv kolone1> <tip podatka> [NOT NULL],
<naziv kolone> <tip podatka> [ NOT NULL], . .) ;
  • Изведена табела - представља резултат извршавања упита.
Измена дефиниције табеле[уреди | уреди извор]
  • Додавање нове колоне
ALTER TABLE <naziv tabele>
[ADD COLUMN] <definicija kolone> ;
  • Измена постојеће колоне
ALTER TABLE <naziv tabele>
[ALTER COLUMN] <naziv kolone>
SET DEFAULT <vrednost> |
DROP DEFAULT;
  • Избацивање колоне из табеле
ALTER TABLE <naziv tabele>
DROP [COLUMN] <naziv kolone> ;
  • Додавање или избацивање ограничења на вредности
ALTER TABLE <naziv tabele>
ADD [CONSTRAINT <naziv ograničenja> ] <ograničenje tabele> |
DROP CONSTRAINT <naziv ograničenja> ;
Избацивање табеле[уреди | уреди извор]
  • Брисање садржаја табеле
DELETE TABLE <naziv tabele>;
  • Брисање табеле и њеног садржаја
DROP TABLE <naziv tabele>;

Види још[уреди | уреди извор]

Референце[уреди | уреди извор]

  1. ^ Paul, Ryan. „A guided tour of the Microsoft Command Shell”. Ars Technica. Приступљено 10. 4. 2011. 
  2. ^ Beaulieu, Alan (април 2009). Mary E. Treseler, ур. Learning SQL (2nd изд.). Sebastapol, CA, USA: O'Reilly. ИСБН 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. ^ а б Лазаревић Б., Марјановић З., Анчић Н., Бабарогић С., Базе података, Факултет организационих наука, Београд. 2010. ISBN 978-86-7680-144-2.

Literatura[уреди | уреди извор]

Spoljašnje veze[уреди | уреди извор]

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