Tipovi podataka SQL 99 standard

Preview:

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

Tipovi podataka SQL Tipovi podataka SQL 99 99 standardstandard

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

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

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…

Razvoj SQL-aRazvoj SQL-a

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

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

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

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

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

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)

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

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

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.

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>

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 );

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 );

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) );

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)

););

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’)

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)

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) ) );

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’) ) );

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.

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 );

UPDATE sobaUPDATE soba

SET sobaPovrsina = sobaDuzina;SET sobaPovrsina = sobaDuzina;

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);

UPDATE sobaUPDATE soba

SET sobaPovrsina = sobaDuzina;SET sobaPovrsina = sobaDuzina;

UPDATE sobaUPDATE soba

SET sobaDuzina = sobaSirina;SET sobaDuzina = sobaSirina;

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;

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 ;

CREATE TABLE karakteristike OF CREATE TABLE karakteristike OF nekretninanekretnina

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

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;

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

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

Recommended