tipovi podataka u sql:1999...

16
Nikola Perić Mirjana Milić Tipovi podataka u SQL:1999 standardu - seminarski rad - Beograd 2007.

Upload: lexuyen

Post on 06-Feb-2018

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

Nikola Perić Mirjana Milić

Tipovi podataka u SQL:1999 standardu

- seminarski rad -

Beograd 2007.

Page 2: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza
Page 3: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

   SADRŽAJ   Predgovor   ....................................................................................................................  1    Uvod   .............................................................................................................................  3 Razvoj SQL‐a   ...............................................................................................................  4 Tipovi podataka   ..........................................................................................................  5 Predefinisani tipovi podataka   ...................................................................................  5 Referencni tipovi podataka   .......................................................................................  6 Nizovski tipovi podataka   ..........................................................................................  7 ROW Data Structures   .................................................................................................  7 Korisnički tipovi podataka   ........................................................................................  8    Prilog – „MS SQL Server”   ..........................................................................................  11    Literatura   ......................................................................................................................  12 

Page 4: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza
Page 5: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

SQL:1999 ‐ Tipovi podataka                 1   PREDGOVOR      Materijal koji je pred Vama, pod nazivom „Tipovi podataka u SQL:1999 standardu”, predstavlja  seminarski  rad  studenata Mirjane Milić  i Nikole Perića u okviru kursa „Relacione  baze  podataka”  koji  se  izučava  na  redovnim  studijama  informatike Matematičkog fakulteta Univerziteta u Beogradu.    Celokupan  izloženi  materijal  je  koncipiran  kao  kratak  pregled  tipova  podataka upitnog jezika SQL:1999 standard, i za sada je dostupan u elektronskom obliku.    Beograd, novembar 2007.              Autori      Kontakt: 

Mirjana Milić, e‐mail:   [email protected] Nikola Perić,   e‐mail:   [email protected]  

                 

Page 6: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

2                SQL:1999 – Tipovi podataka                                               

Page 7: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

SQL:1999 ‐ Tipovi podataka                 3   UVOD    

SQL (Structured Query Language) je neproceduralni struktuirani upitni jezik, za razliku od proceduralnih jezika ili jezika treće generacije (kada je nastao). 

Sam  nastanak  upitnog  jezika  SQL‐a  se  vezuje  za  IBM‐ovu  istraživačku laboratoriju u San Hozeu u Kaliforniji (SAD), krajem dvadesetog veka.   

Trenutno u svetu postoji više standarda SQL jezika, pri čemu su najpoznatiji: ANSI‐92,  ISO, Microsoft  SQL,  ... U principu,  osnovni  standard  je ANSI.  Svi drugi standardi se u manjoj ili većoj meri razlikuju od ovog standarda, a u najvećem broju slučajeva  radi  se  o  proširenjima  osnovnog  SQL  standarda  kojima  se  ovaj  jezik pretvara u pravi proceduralni jezik.  

                             

  

Page 8: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

4                SQL:1999 – Tipovi podataka   RAZVOJ SQL-a   SQL:1986 standard 

Karakteriše ga mogućnost kreiranja osnovnih tabela, mogućnost postavljanja jednostavnih upita, nezavisan je od jezika…   SQL:1989 standard 

Zasnovan je na standardu SQL:1986 iako je od njega funkcionalno kompletniji jer  obezbeđuje  referencijalni  integritet  i  povezivanje  sa  programskim  jezicima COBOL, FORTRAN, Pascal, C, Ada, …  SQL:1992 standard   Poznatiji  je  pod  nazivom  SQL2  ili  SQL92  ili  pod  punim  nazivom „Međunarodni  standardni  jezik  baza  podataka  (1992)”  („International  Standard Database  Language  SQL  (1992)”).  Nastao  je  na  temeljima  standarda  SQL:1989 nadogradnjom  sa  bitskim  tipovima  podataka,  kompletnim  uslovnim  izrazima (CASE),  skupovima  karaktera,  menadžerom  odnosa/veza/spojeva,  datumskim tipovima  podataka,  domenima,  dinamičnim  SQL‐om,  poboljšani  upitima, višejezičnim setovima karaktera, prirodnim spajanjima  (unitrašnjim  ili spoljašnjim), upitima  nad  vrstama  i  tabelama,  privremenim  tabelama,  podupitima  nad slučajevima u toku njihovog trajanja, unijom, presekom, razlikom …  SQL:1999 standard 

Osnova  poslednjeg  zvaničnog  standarda  je  SQL:1992  standard  na  koji  su dodati  modeli  podataka  (koji  su  opisani  svojom  strukturom,  odnosima  i operacijama),  više  vrsta  naredbi,  nove  funkcije  nad  logičkim  tipovima  podataka, proširen skup funkcija nad datumsim  tipom podataka, klasa  intervalnih funkcija sa (za  sada)  samo  jednom  funkcijom  –  ABS  (ova  funkcija  je  u  potpunosti  analogna fukciji ABS  koja  se  primenjuje  na  numeričke  vrednosti),  a  po  prvi  put  su  u  SQL uvedeni novi  tipovi podataka:  reference, nizovi, ROW Data  Structures,  tipovi koje definiše korisnik, Boolean, Blob, Clob. Tako SQL:1999  standard više nije  relaciono‐upitni jezik, već relaciono‐objektni jezik za rad nad upitima podataka.            

Page 9: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

SQL:1999 ‐ Tipovi podataka                 5   SQL:1999 – TIPOVI PODATAKA   

SQL:1999  standard  podržava  predefinisane,  referencne,  nizovske  tipove podataka, kao i one podatke koje kreira sam korisnik i Row Data Structures.    SQL:1999 – Predefinisani tipovi podataka     Predefinisani tipovi podataka su: numerički, stringovski, datumski, intervalni i logički tipovi. 

Numerički (tačni i približni) tipovi podataka su: • INTEGER ili INT (32‐bitni ceo broj) • SMALLINT (16‐bitni ceo broj)  • NUMERIC • DECIMAL(p, q) ili DEC(p, q) je decimalni broj, gde je p broj cifara 

decimalnog  broja  ( 311 ≤≤ p ),  a  q  broj  cifara  razlomljenog  dela ( pq ≤≤0 ) 

• DECIMAL ≡  DECIMAL(5) • FLOAT(p)  je  broj  u  pokretnom  zarezu  jednostruke  tačnosti 

( 241 ≤≤ p ) ili dvostruke tačnosti ( 5325 ≤≤ p ) • REAL ≡  FLOAT(24) • DOUBLE PRECISION ≡  FLOAT • FLOAT ≡  FLOAT(53) 

Podaci  tipa  string  su: bitski, karakterski  tipovi  i BLOB  (ili BINARY LARGE OBJECT). Bitski tipovi podataka su: 

• BIT • BIT VARYING 

Karakterski tipovi podataka (fiksne i promenljive dužine) su: • CHARACTER(m)  ili CHAR(m)  je niska znakova  fiksne dužine m 

( 2541 ≤≤ m ) • CHARACTER ≡  CHAR ≡  CHAR(1) • CHARACTER VARYING ili CHAR VARYING ili VARCHAR • CLOB  ili  CHARACTER  LARGE  OBJECT  ili  CHAR  LARGE 

OBJECT Primer:  

Rat_i_mir CLOB(25M) CHARACTER SET CYRILLIC sluzbenik_fotografija BLOB(50K)

  

Page 10: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

6                SQL:1999 – Tipovi podataka   

Datumski  tipovi  podataka  su  definisani  u  odnosu  na  univerzalno koordinisano vreme (UTC): 

• DATE • TIME • TIMESTAMP • TIME WITH TIME ZONE • TIMESTAMP WITH TIME ZONE 

Intervalni tipovi podataka se dele na dodina‐mesec interval: • INTERVAL YEAR • INTERVAL MONTH • INTERVAL YEAR TO MONTH 

i dan‐vreme interval: • INTERVAL DAY TO HOUR • INTERVAL DAY TO MINUTE • INTERVAL SECOND • INTERVAL DAY TO SECOND • INTERVAL MINUTE TO SECUNDE 

BOOLEAN  je  logički  tip podatka sa moguće  tri vrednosti: TRUE, FALSE  ili UNKNOWN.   SQL:1999 – Referencni tipovi podataka   

Referencni  tipovi  podataka  u  SQL:1999  standardu  implementiraju  se  na sledeći način:  

<attribute definition> ::= <attribute name> <data type> [ <reference scope check> ] [ <attribute default> ] [ <collate clause> ]

<attribute default> ::= <default clause>

 Primer: CREATE SCHEMA preduzece CREATE TYPE sluzbenik AS

( prezime CHARACTER VARYING (30), ime CHARACTER VARYING (30), manadzer REF (sluzbenik) SCOPE EVERY EXISTING TABLE );

CREATE TABLE zaposleni OF sluzbenik ( zaposleni_ref REF (sluzbenik) VALUES ARE SYSTEM GENERATED );

CREATE TABLE projekat_tim ( tim_ime CHARACTER VARYING (30), tim_lider REF (sluzbenik) SCOPE (zaposleni), tim REF (sluzbenik) SCOPE (zaposleni) ARRAY [10], izvestaji ROW (frekvenca CHARACTER VARYING (30), izvestaj_za REF (sluzbenik) SCOPE zaposleni));

Page 11: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

SQL:1999 – Tipovi podataka                7   SQL:1999 - Nizovski tipovi podataka   Primer:  

CREATE TABLE izvestaji ( id INTEGER, autori VARCHAR(15) ARRAY[20], naslov VARCHAR(100) );

 Operacije nad kreiranom tabelom izveštaji:  INSERT INTO izvestaji (id, autori, naslov) VALUES (10, ARRAY ['Date', 'Darwen'], 'A Guide to the SQL Standard’)

 Pristup elementima niza: 

po indeksu  jednostavnom deklaracijom (npr. upit)  direktnom promenom niza u tabeli  izborom samog elementa i/ili njegovog indeksa  izbacivanjem 

 Primer:  SELECT id, autori[1] AS ime FROM izvestaji SELECT r.id, a.ime FROM izvestaji AS r, UNNEST (r.autori) AS a (ime)

   SQL:1999 - ROW Data Structures   Primer:  CREATE TABLE zaposleni

( ime CHAR (40), adresa ROW ( ulica CHAR (30),

grad CHAR (20), post_br ROW ( original CHAR (5),

plus4 CHAR (4) ) )

); INSERT INTO zaposleni

VALUES (‘John Doe’, (‘2225 Coral Drive’, ‘San Jose’, (‘95124’, ‘2347’)

) );

Page 12: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

8                SQL:1999 – Tipovi podataka   SQL:1999 – Korisnički tipovi podataka   

Tipovi  podataka  koje  definiše  korisnik  predstavljaju  entitete,  na  primer: zaposleni,  projekat,  novac,  poligon,  slike,  tekst,  jezici,  ... Metode  i  funkcije  koje  je definiše korisnik su operacije koje opisuju ponašanje entiteta, na primer: angažovanje zaposlenog, odobriti projekat, pozajmiti novac,  senčenje poligona,  editovanje  slike, teksta, ...  

Korisnički  definisani  tipovi  podataka  opisani  su  imenom,  reprezentacijom, kao  i odnosom sa drugim tipovima podataka. Korisniči definisani metodi  i funkcije opisani su imenom, listom parametara, rezultatom i implementacijom.   Primer:  

CREATE TABLE soba ( sobaID CHAR(10), sobaDuzina INTEGER, sobaSirina INTEGER, sobaPovrsina INTEGER, sobaObim INTEGER );

UPDATE soba SET sobaPovrsina = sobaDuzina;

 U ovom primeru neće se  javiti greška  jer su  i površina  i dužina sobe definisani kao isti tip podataka – INTEGER, tako da ne postoji semantička greška  iako se dužina  i površina ne izražavaju istim mernim jedinicama. Ali ako se kreiraju različiti tipovi podataka:  

CREATE TYPE plan.sobaTip AS CHAR(10) FINAL; CREATE TYPE plan.metri AS INTEGER FINAL; CREATE TYPE plan.metriKvadratni AS INTEGER FINAL; CREATE TABLE soba

( sobaID plan.sobaTip, sobaDuzina plan.metri, sobaSirina plan.metri, sobaObim plan.metri, sobaPovrsina plan.metriKvadratni );

UPDATE soba SET sobaPovrsina = sobaDuzina;

  U  ovom  slučaju  doći  će  do  greške  jer  se  tip  podataka  korišćen  za  površinu  sobe razlikuje  od  tipa  podatka  korišćenog  za  dužinu  sobe. Ali  prilikom  izjednačavanja dužine i širine sobe neće doći do greške jer su korišćeni isti tipovi podataka.  

UPDATE soba SET sobaDuzina = sobaSirina;

Page 13: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

SQL:1999 – Tipovi podataka                9   

Za korišćenje korisnički definisanih  tipova podataka u kolonama  i  tabelama potrebno je definisati tipove podataka: 

 CREATE TYPE adresa AS

( ulica CHAR (30), grad CHAR (20), drzava CHAR (2), post_br INTEGER ) NOT FINAL

CREATE TYPE bitmap AS BLOB FINAL CREATE TYPE nekretnina AS

( vlasnik REF (osoba), cena novac, sobe INTEGER, velicina DECIMAL(8,2), lokacija adresa, opis text, slika bitmap, dokumentacija doc ) NOT FINAL

 a  zatim  treba  uvrstiti  tipove  podataka  tako  da  tipovi  atributa  postanu  kolone,  pa dodajemo  jednu  kolonu  za  definisanje  reference  za  vrstu,  s  tim  da  ceo  tip  koji  je definisan može postatiti tabela:  

CREATE TABLE karakteristine OF nekretnina ( REF IS objekatID USER GENERATED )

 gde je nekretnina tip tabele, a adresa i bitmap su tipovi kolona. 

Metode  SQL  poziva  kao  funkcije  koje  su  definisane  za  korisničke  tipove podataka.  Primer:  

CREATE TYPE sluzbenik AS ( ime CHAR(40), fixna_plata DECIMAL(9,2), bonus DECIMAL(9,2) ) INSTANTIABLE NOT FINAL

METHOD plata() RETURNS DECIMAL(9,2); CREATE METHOD plata() FOR sluzbenik BEGIN .... END;

 Korišćenje  korisnički  definisani  tipovi  podataka  u  strukturama  podataka  i 

podtabelama zahteva definisanje podataka:  

CREATE TYPE osoba ... NOT FINAL CREATE TYPE nekretnina ... NOT FINAL CREATE TYPE stan UNDER nekretnina ... NOT FINAL CREATE TYPE kuca UNDER nekretnina ... NOT FINAL

Page 14: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

10                SQL:1999 – Tipovi podataka   a zatim kreirati tabele: 

CREATE TABLE klijenti OF osoba ( ...) CREATE TABLE karakteristike OF nekretnina CREATE TABLE stanovi OF stan UNDER karakteristike CREATE TABLE kuce OF kuca UNDER karakteristike

 Podtabele su  jedini način particionisanja velike tabele u više manjih zavisnih 

tabela. Za svaki red nadtabele postoji najviše jedan red iz neke podtabele, ali je  Count(Properties) >= Sum (Count(Condos) + Count(Houses))

 Na primer,  ako postoji  100  različitih nekretnina u  tabeli  karakteristike,  i  ako u  toj tabeli postoji 75 kuća, onda u toj tabeli može biti najviše 25 stanova.                                

Page 15: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

SQL:1999 – Tipovi podataka                11   PRILOG   

Microsoft  je u svet SQL ušao kupovinom  licence od „Sybase”‐а, za osnovne blokove koji grade Microsoft‐ov sistem za upravljanje bazama podataka „ MS SQL Server”.  Tako  se  1988.  godine  zajedničkim  naporima  Sybase‐a,  Ashton‐Tate‐a  и Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza podataka na PC  platformama. Od  1993.  godine Microsoft  je  započeo  sa  samostalnim  razvijem ovog  sistema.  Osnovna  preednost  ovog  sistema  je  jednostavnost  u  korišćenju  i administriranju,  što  je  inače  glavni  problem  kod  sistema  istih  namena  drugih proizvođača  (veliki  stepen  složenosti  i  veće  cene).  Još  jedan  od  brojnih  prednosti ovog Microsoft‐ovog sistema je skalabilnost.  

U pogledu praktične primene,  to bi značilo, na primer, da  jedna  firma koja poseduje  izvesnu  bazu  podataka  kreiranu  u  MS  Access‐u,  bez  mnogo  napora  i ulaganja, može  jednostavno da  sve podatke  iz MS Access‐a prebaci na SQL Server platformu, naravno ukoliko  su u  redovnom  radu  firme postavljeni veći zahtevi od uobičajenih, zarad napredovanja i proširivanja te firme.                             

Page 16: Tipovi podataka u SQL:1999 standardupoincare.matf.bg.ac.rs/~gordana/rbp/MilicPeric/document/SQL99.pdf · Microsoft‐a došlo po prvi put do mogućnosti korišćenja relacionih baza

12                SQL:1999 – Tipovi podataka   LITERATURA   [1]  Great News, „The Relational Dtata Model is Dead!”  [2]  Pavlović‐Lažetić G., „Uvod u relacione baze podataka”  [3]  Eisenberg A., Melton J., „SQL:1999, formerly known as SQL3”