31
Tipovi podataka SQL Tipovi podataka SQL 99 99 standard standard Nikola Perić Nikola Perić 369/2006 369/2006 Mirjana Milić Mirjana Milić 319/2006 319/2006

Tipovi podataka SQL 99 standard

  • Upload
    elijah

  • View
    54

  • Download
    0

Embed Size (px)

DESCRIPTION

Tipovi podataka SQL 99 standard. Nikola Perić 369/2006 Mirjana Milić 319/2006. Uvod. SQL (Structured Query Language) je neproceduralni struktuirani upitni jezik IBM-ova istrazivačka laboratorija, kraj XX veka Postoji više standarda: ANSI, ISO, Microsoft SQL…. Razvoj SQL-a. - PowerPoint PPT Presentation

Citation preview

Page 1: Tipovi podataka SQL 99        standard

Tipovi podataka SQL Tipovi podataka SQL 99 99 standardstandard

Nikola Perić 369/2006Nikola Perić 369/2006

Mirjana Milić 319/2006Mirjana Milić 319/2006

Page 2: Tipovi podataka SQL 99        standard

UvodUvod

SQL (Structured Query Language) SQL (Structured Query Language) je neproceduralni struktuirani je neproceduralni struktuirani upitni jezikupitni jezik

IBM-ova istrazivačka laboratorija, IBM-ova istrazivačka laboratorija, kraj XX vekakraj XX veka

Postoji više standarda: ANSI, ISO, Postoji više standarda: ANSI, ISO, Microsoft SQL…Microsoft SQL…

Page 3: Tipovi podataka SQL 99        standard

Razvoj SQL-aRazvoj SQL-a

SQL/1986 SQL/1986 SQL/1989SQL/1989 SQL/1992SQL/1992 SQL/1999SQL/1999

Page 4: Tipovi podataka SQL 99        standard

SQL99 – Tipovi SQL99 – Tipovi podataka podataka Standard SQL99 podržava:Standard SQL99 podržava: ppredefinisaneredefinisane rreferencneeferencne nnizovskeizovske Row Data Structures tipove Row Data Structures tipove

podatakapodataka tipovi podatakatipovi podataka koje kreira sam koje kreira sam

korisnikkorisnik

Page 5: Tipovi podataka SQL 99        standard

Predefinisani tipovi podataka su: Predefinisani tipovi podataka su: nnumeričkiumerički sstringovskitringovski datumskidatumski intervalniintervalni logički tipovilogički tipovi

Page 6: Tipovi podataka SQL 99        standard

Numerički (tačni i približni) tipovi podataka Numerički (tačni i približni) tipovi podataka su:su:

INTEGER ili INTINTEGER ili INT SMALLINTSMALLINT NUMERICNUMERIC DECIMAL ili DECDECIMAL ili DEC REALREAL DOUBLE PRECISIONDOUBLE PRECISION FLOATFLOAT

Page 7: Tipovi podataka SQL 99        standard

String TypeString Type

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

Bitski tipovi podataka su:Bitski tipovi podataka su: BITBIT BIT VARYINGBIT VARYINGKarakterski tipovi podataka (fiksne i Karakterski tipovi podataka (fiksne i

promenljivpromenljive e dužine) su:dužine) su: CHARACTER ili CHARCHARACTER ili CHAR CHARACTER VARYING ili CHAR VARYING ili CHARACTER VARYING ili CHAR VARYING ili

VARCHARVARCHAR CHARACTER LARGE OBJECT ili CLOB ili CHAR CHARACTER LARGE OBJECT ili CLOB ili CHAR

LARGE OBJECTLARGE OBJECT

Page 8: Tipovi podataka SQL 99        standard

Primer:Primer:– Rat_i_mir CLOB(25M) CHARACTER Rat_i_mir CLOB(25M) CHARACTER

SET CYRILLICSET CYRILLIC– sluzbenik_fotografija BLOB(50K)sluzbenik_fotografija BLOB(50K)

Page 9: Tipovi podataka SQL 99        standard

Date Time TypeDate Time Type

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

DATEDATE TIMETIME TIMESTAMPTIMESTAMP TIME WITH TIME ZONETIME WITH TIME ZONE TIMESTAMP WITH TIME ZONETIMESTAMP WITH TIME ZONE

Page 10: Tipovi podataka SQL 99        standard

Intervalni tipovi podataka se dele na:Intervalni tipovi podataka se dele na: Godina-mesec interval:Godina-mesec interval:

INTERVAL YEARINTERVAL YEAR INTERVAL MONTHINTERVAL MONTH INTERVAL YEAR TO MONTHINTERVAL YEAR TO MONTH

Dan-vreme interval:Dan-vreme interval: INTERVAL DAY TO HOURINTERVAL DAY TO HOUR INTERVAL DAY TO MINUTEINTERVAL DAY TO MINUTE INTERVAL SECONDINTERVAL SECOND INTERVAL DAY TO SECONDINTERVAL DAY TO SECOND INTERVAL MINUTE TO SECUNDEINTERVAL MINUTE TO SECUNDE

Page 11: Tipovi podataka SQL 99        standard

Boolean TypeBoolean Type

BOOLEAN je logički tip podatka sa BOOLEAN je logički tip podatka sa moguće tri vrednosti:moguće tri vrednosti:

TRUTRUEE FALSE FALSE UNKNOWN.UNKNOWN.

Page 12: Tipovi podataka SQL 99        standard

Ref TypesRef Types

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

<attribute definition> ::= <attribute name><attribute definition> ::= <attribute name>

<data type><data type>

[ <reference scope check> ][ <reference scope check> ]

[ <attribute default> ][ <attribute default> ]

[ <collate clause> ][ <collate clause> ]

<attribute default> ::= <default clause><attribute default> ::= <default clause>

Page 13: Tipovi podataka SQL 99        standard

Primer:Primer:CREATE SCHEMA preduzeceCREATE SCHEMA preduzece

CREATE TYPE sluzbenik ASCREATE TYPE sluzbenik AS

( prezime ( prezime CHARACTER VARYING (30),CHARACTER VARYING (30),

ime ime CHARACTER VARYING CHARACTER VARYING (30),(30),

manadzer manadzer REF (sluzbenik) SCOPE REF (sluzbenik) SCOPE EVERY EXISTING EVERY EXISTING

TABLE );TABLE );

Page 14: Tipovi podataka SQL 99        standard

CREATE TABLE zaposleni OF sluzbenikCREATE TABLE zaposleni OF sluzbenik

( zaposleni_ref REF (sluzbenik) ( zaposleni_ref REF (sluzbenik) VALUES VALUES ARE SYSTEM ARE SYSTEM GENERATED );GENERATED );

Page 15: Tipovi podataka SQL 99        standard

CREATE TABLE projekat_timCREATE TABLE projekat_tim( tim_ime ( tim_ime CHARACTER VARYING (30),CHARACTER VARYING (30), tim_lider REF (sluzbenik) SCOPE tim_lider REF (sluzbenik) SCOPE

(zaposleni),(zaposleni), tim tim REF (sluzbenik) SCOPE (zaposleni) REF (sluzbenik) SCOPE (zaposleni)

ARRAY [10],ARRAY [10], izvestaji ROW (frekvenca CHARACTER izvestaji ROW (frekvenca CHARACTER

VARYING (30),VARYING (30), izvestaj_za REF (sluzbenik) izvestaj_za REF (sluzbenik)

SCOPE zaposleni) );SCOPE zaposleni) );

Page 16: Tipovi podataka SQL 99        standard

ArraysArrays

Nizovski tip podataka u SQL99 Nizovski tip podataka u SQL99 standaru:standaru:

Primer:Primer:

CREATE TABLE izvestajiCREATE TABLE izvestaji

( id ( id INTEGER,INTEGER,

autori autori VARCHAR(15) ARRAY[20],VARCHAR(15) ARRAY[20],

naslov naslov VARCHAR(100)VARCHAR(100)

););

Page 17: Tipovi podataka SQL 99        standard

Operacije nad kreiranom tabelom Operacije nad kreiranom tabelom izveštaji:izveštaji:

INSERT INTO izvestaji (id, autori, INSERT INTO izvestaji (id, autori,

naslov)naslov)

VALUES (10, ARRAY ['Date', VALUES (10, ARRAY ['Date', 'Darwen'], 'A Guide to the SQL 'Darwen'], 'A Guide to the SQL Standard’)Standard’)

Page 18: Tipovi podataka SQL 99        standard

Primer:Primer:

SELECT id, autori[1] AS ime FROM SELECT id, autori[1] AS ime FROM izvestajiizvestaji

SELECT r.id, a.ime FROM izvestaji AS SELECT r.id, a.ime FROM izvestaji AS r, UNNEST (r.autori) AS a (ime)r, UNNEST (r.autori) AS a (ime)

Page 19: Tipovi podataka SQL 99        standard

ROW Data StructuresROW Data Structures

ROW Data Structures u SQL99 standardu:ROW Data Structures u SQL99 standardu:

Primer:Primer:

CREATE TABLE zaposleniCREATE TABLE zaposleni

( ime ( ime CHAR (40),CHAR (40),

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

grad grad CHAR (20), CHAR (20),

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

plus4 CHAR (4) ) );plus4 CHAR (4) ) );

Page 20: Tipovi podataka SQL 99        standard

INSERT INTO zaposleniINSERT INTO zaposleni

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

(‘95124’, (‘95124’, ‘2347’) ) );‘2347’) ) );

Page 21: Tipovi podataka SQL 99        standard

User Defined Types - User Defined Types - UDTUDT Korisnički definisani tipovi Korisnički definisani tipovi

podataka opisani su imenom, podataka opisani su imenom, reprezentacijom, kao i odnosom reprezentacijom, kao i odnosom sa drugim tipovima podataka. sa drugim tipovima podataka.

Korisniči definisani metodi i Korisniči definisani metodi i funkcije opisani su imenom, funkcije opisani su imenom, listom parametara, rezultatom i listom parametara, rezultatom i implementacijom. implementacijom.

Page 22: Tipovi podataka SQL 99        standard

Primer:Primer:

CREATE TABLE sobaCREATE TABLE soba

( sobaID ( sobaID CHAR(10),CHAR(10),

sobaDuzina sobaDuzina INTEGER,INTEGER,

sobaSirina sobaSirina INTEGER,INTEGER,

sobaPovrsina sobaPovrsina INTEGER,INTEGER,

sobaObim sobaObim INTEGER );INTEGER );

Page 23: Tipovi podataka SQL 99        standard

UPDATE sobaUPDATE soba

SET sobaPovrsina = sobaDuzina;SET sobaPovrsina = sobaDuzina;

Page 24: Tipovi podataka SQL 99        standard

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

FINAL; FINAL;CREATE TABLE soba CREATE TABLE soba ( sobaID ( sobaID plan.sobaTip, plan.sobaTip, sobaDuzina sobaDuzina plan.metri,plan.metri, sobaSirina sobaSirina plan.metri, plan.metri, sobaObim sobaObim plan.metri, plan.metri, sobaPovrsina sobaPovrsina plan.metriKvadratni);plan.metriKvadratni);

Page 25: Tipovi podataka SQL 99        standard

UPDATE sobaUPDATE soba

SET sobaPovrsina = sobaDuzina;SET sobaPovrsina = sobaDuzina;

UPDATE sobaUPDATE soba

SET sobaDuzina = sobaSirina;SET sobaDuzina = sobaSirina;

Page 26: Tipovi podataka SQL 99        standard

UDT u kolonama i UDT u kolonama i tabelamatabelama

CREATE TYPE adresa ASCREATE TYPE adresa AS

( ulica ( ulica CHAR (30),CHAR (30),

grad grad CHAR (20),CHAR (20),

drzava drzava CHAR (2),CHAR (2),

post_br post_br INTEGER) NOT FINAL;INTEGER) NOT FINAL;

CREATE TYPE bitmap AS BLOB CREATE TYPE bitmap AS BLOB FINAL;FINAL;

Page 27: Tipovi podataka SQL 99        standard

CREATE TYPE nekretnina ASCREATE TYPE nekretnina AS( vlasnik ( vlasnik REF (osoba),REF (osoba), cena cena novac, novac, sobe sobe INTEGER,INTEGER, velicina velicina DECIMAL(8,2),DECIMAL(8,2), lokacija lokacija adresa, adresa, opis opis text, text, slika slika bitmap,bitmap, dokumentacija dokumentacija doc ) doc ) NOT NOT

FINAL ;FINAL ;

Page 28: Tipovi podataka SQL 99        standard

CREATE TABLE karakteristike OF CREATE TABLE karakteristike OF nekretninanekretnina

( REF IS objekatID USER ( REF IS objekatID USER GENERATED )GENERATED )

Page 29: Tipovi podataka SQL 99        standard

SQL99 – UDT MetodiSQL99 – UDT Metodi

CREATE TYPE sluzbenik ASCREATE TYPE sluzbenik AS( ime ( ime CHAR(40),CHAR(40), fixna_plata fixna_plata DECIMAL(9,2),DECIMAL(9,2), bonus bonus DECIMAL(9,2) ) INSTANTIABLE NOT FINALDECIMAL(9,2) ) INSTANTIABLE NOT FINALMETHOD plata() RETURNS DECIMAL(9,2);METHOD plata() RETURNS DECIMAL(9,2);

CREATE METHOD plata() FOR sluzbenikCREATE METHOD plata() FOR sluzbenikBEGINBEGIN........END;END;

Page 30: Tipovi podataka SQL 99        standard

UDT u strukturama UDT u strukturama podataka i podataka i podtabelamapodtabelamaPrimer:Primer:CREATE TYPE osoba ... NOT FINALCREATE TYPE osoba ... NOT FINALCREATE TYPE nekretnina ... NOT FINALCREATE TYPE nekretnina ... NOT FINALCREATE TYPE stan UNDER nekretnina ... NOT FINALCREATE TYPE stan UNDER nekretnina ... NOT FINALCREATE TYPE kuca UNDER nekretnina ... NOT FINALCREATE TYPE kuca UNDER nekretnina ... NOT FINAL

CREATE TABLE klijenti OF osoba ( ...)CREATE TABLE klijenti OF osoba ( ...)CREATE TABLE karakteristike OF nekretninaCREATE TABLE karakteristike OF nekretninaCREATE TABLE stanovi OF stan CREATE TABLE stanovi OF stan UNDER UNDER

karakteristikekarakteristikeCREATE TABLE kuce OF kuca CREATE TABLE kuce OF kuca UNDER UNDER karakteristikekarakteristike

Page 31: Tipovi podataka SQL 99        standard

Za svaki red nadtabele postoji Za svaki red nadtabele postoji najviše jedan red iz neke najviše jedan red iz neke podtabele.podtabele.

Count(karakteristike) >=Count(karakteristike) >=

Sum (Count(stanovi) + Sum (Count(stanovi) + Count(kuce))Count(kuce))