23
Ljubiša Mladenović Baze podataka SQL naredbe za kreiranje podataka Ciljevi lekcije Upoznati se sa osnovama SQL programskog jezike Upoznati se sa različitim standardima SQL-a Naučiti osnovne SQL naredbe za kreiranje strukture relacione baze podataka Proučiti primer SQL naredbi za kreiranje structure relacione baze podataka PREDUZEĆE Structured Query Language (SQL) predstavlja programski jezik koji je projektovan za potrebe pretraživanja i upravljanja podacima u Sistemima za upravljanje relacionim bazama podataka (Relational Database Management Systems - RDBMS), za kreiranje i modifikacija šema relacione baze podataka i za kontrolu pristupa objektima baze podataka. Prva verzija programskog jezika SQL razvijena je od strane kompanije IMB krajem 1970-ih godina. Ova verzija, inicijalno nazvana SEQUEL, je razvijena za potrebe manipulacije podacima System R sistemu za upravljanje relacionim bazama podataka. SQL je formalno standardizovan 1986 godine, od strane American National Standards Institute (ANSI), pod nazivom SQL-86. Ovaj standard je kasnije prihvaćen id od strane International Organization for Standardization (ISO). Svi SQL standardi koji su naknadno usvojeni predstavljaju zajedničke standarde organizacija ANSI i ISO (Tabela 1). Većina RDBMS-ova implementira jedan od navedenih standarda. Godin a Naziv Ostali nazivi 1986 SQL-86 SQL-87 1989 SQL-89 FIPS 127-1 1992 SQL-92 SQL2, FIPS 127-2 1999 SQL:199 9 SQL3 2003 SQL:200 strana 1

Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Embed Size (px)

Citation preview

Page 1: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

SQL naredbe za kreiranje podataka

Ciljevi lekcije Upoznati se sa osnovama SQL programskog jezike Upoznati se sa različitim standardima SQL-a Naučiti osnovne SQL naredbe za kreiranje strukture relacione baze podataka Proučiti primer SQL naredbi za kreiranje structure relacione baze podataka PREDUZEĆE

Structured Query Language (SQL) predstavlja programski jezik koji je projektovan za potrebe pretraživanja i upravljanja podacima u Sistemima za upravljanje relacionim bazama podataka (Relational Database Management Systems - RDBMS), za kreiranje i modifikacija šema relacione baze podataka i za kontrolu pristupa objektima baze podataka.

Prva verzija programskog jezika SQL razvijena je od strane kompanije IMB krajem 1970-ih godina. Ova verzija, inicijalno nazvana SEQUEL, je razvijena za potrebe manipulacije podacima System R sistemu za upravljanje relacionim bazama podataka.

SQL je formalno standardizovan 1986 godine, od strane American National Standards Institute (ANSI), pod nazivom SQL-86. Ovaj standard je kasnije prihvaćen id od strane International Organization for Standardization (ISO). Svi SQL standardi koji su naknadno usvojeni predstavljaju zajedničke standarde organizacija ANSI i ISO (Tabela 1). Većina RDBMS-ova implementira jedan od navedenih standarda.

Godina Naziv Ostali nazivi

1986 SQL-86 SQL-87

1989 SQL-89 FIPS 127-1

1992 SQL-92 SQL2, FIPS 127-2

1999 SQL:1999 SQL3

2003 SQL:2003  

2006 SQL:2006  

2008 SQL:2008   Tabela 1 Usvojeni SQL standardi

SQL je programski jezik razvijen sa specifičnom namenom . Njegova osnovna karakteristika je da se radi o deklarativnom jeziku za upravljanje i manipulacijom podacima u relacionim bazama podataka. SQL omogućava pribavljanje, dodavanje, ažuriranje i brisanje podataka u relacionoj bazi podataka. Većina proizvođača RDBMS-a proširuje SQL standard dodajući proceduralne elemente, kontrolne strukture, korisnički definisane tipove podataka i druge elemente. SQL standard SQL-99 mnoga od ovih proširenja su formalno prihvaćenakao delovi SQL jezika u vidu SQL Persistent Stored Modules (SQL/PSM) (Tabela 2).

Proizvođač Ime Puno ime

strana 1

Page 2: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

ANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules

Interbase/Firebird PSQL Procedural SQL

IBM SQL PL SQL Procedural Language (implements SQL/PSM)

Microsoft/Sybase T-SQL Transact-SQL

MySQL SQL/PSM SQL/Persistent Stored Module (implements SQL/PSM

Oracle PL/SQL Procedural Language/SQL (based on Ada)

PostgreSQL PL/pgSQL Procedural Language/PostgreSQL Structured Query Language (bazira se na Oracle PL/SQL)

PostgreSQL PL/PSM Procedural Language/Persistent Stored Modules Tabela 2 Proširena SQL jezika koja su postala deo standarda

Većina proizvođača relacionih DBMS-ova оbezbeđuje alat za kreiranje i izvršavanje naredbi SQL jezika. Ovaj alat može biti običan Command-line Interface (SQL/CLI) ili alat sa bogatim grafičkim interfejsom. Takođe, u većini slučajeva, je obezbeđena programksa podrška koja omogućava da se SQL naredbe kreiraju i koriste iz drugih programskih jezika.

Sve naredbe SQL jezika se mogu podeliti u dve velike grupe: 1. Data Definition Language (DDL) - jezik koji se koristi za definisanje strukture relacione

baze podataka2. Data Manipulation Language (DML) - jezik za pribavljanje I ažuriranje podataka u

relacionoj bazi podataka.Neophodno predznanjeBaza podataka Predstavlja kolekciju povezanih podataka organizovanih u logičke celine predstavljene tabelama. Sistem za upravljanje bazama podataka (DBMS) Računarski program (u praksi obično skup računarskih programa odnosno aplikacija) koji obezbeđuje kreiranje, obradu i administraciju nad bazom podataka. DBMS dobija zahteve u obliku upita (SQL upiti - naredne lekcije!) i prevodi te zahteve u odgovarajuće akcije nad bazom podataka. Relacioni model Model podataka koji ima snažnu teorijsku osnovu, koja se zasniva na matematičkoj teoriji relacija i na logici prvog reda, i za korisnika vrlo prihvatljivu reprezentaciju u vidu dvodimenzionalne tabele.

Baza podataka PREDUZEĆE

U nastavku je prikazana relaciona baza podataka PREDUZEĆE koja će biti korišćena u svim lekcijama ovog kursa koje se bave SQL programskim jezikom. Relacioni dijagram baze podataka PREDUZEĆE prikazan je na Slici 1.

strana 2

Page 3: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

Slika 1 Relacioni dijagram baze podataka PREDUZEĆE

Tabela RADNIK čuva podatke o radnicima preduzeća. Za svakog radnika se pamti matični broj, ime, srednje slovo, prezime, datum rođenja, pol, plata, adresa, matični broj neposrednog rukovodioca i broj sektora u kome radnik radi. Za primarni ključ je izabran matični broj radnika odnosno kolona MatBr. Tabela ima dva strana ključa: Rukovodilac i Sektor. Kolona Rukovodilac referencira kolonu MatBr u istoj tabeli jer rukovodilac je jedan od radnika (rekurzivna veza). Kolona Sektor referencira kolonu Broj u tabeli Sektor. Preduzeće je podeljeno na veći broj sektora. U tabeli SEKTOR se pamte sledeći podaci o sektorima: broj sektora, naziv sektora, matični broj šefa sektora i datum kada je šef sektora postavljen na svoju dužnost. Za primarni ključ je izabran broj sektora odnosno kolona Broj. Jedini strani ključ je kolona Sef koja referencira kolonu MatBr u tabeli RADNIK (šef sektora je jedan od radnika u preduzeću). Tabela PROJEKAT čuva podatke o projektima koji su aktivni unutar preduzeća. Za svaki projekat se pamti: broj projekta, naziv projekta, lokacija projekta i broj sektora koji je zadužen za projekat. Za primarni ključ je izabran broj projekta odnosno kolona Broj. Jedini strani ključ je kolona Sektor koja referencira kolonu Broj u tabeli Sektor. Tabela CLAN_PORODICE čuva sledeće podatke o članovima porodica radnika: matični broj radnika, ime člana porodice, pol, srodstvo sa radnikom i datum rošenja. Primarni ključ je kompozitni i čine ga kolone Radnik i Ime. Strani ključ je kolona Radnik koja referencira kolonu MatBr u tabeli RADNIK. Tabela LOK_SEK čuva podatke o lokacijama na kojima se nalazi određeni sektor: broj sektora i naziv lokacije. Primarni ključ je kompozitni i čine ga kolone Sektor i Lokacija. Strani ključ je kolona Sektor koja referencira kolonu Broj u tabeli SEKTOR. Tabela RADI_NA predstavlja evidenciju angažovanja radnika na različitim projektima. Za svako angažovanje se pamti: matični broj angažovanog radnika, broj projekta na kome je angažovan i broj radnih sati nedeljno koliko je angažovan na projektu. Primarni ključ je kompozitni i čine ga kolone Radnik i Projekat. Tabela ima dva strana ključa: Radnik i Projekat. Kolona Radnik referencira kolonu MatBr u tabeli RADNIK a kolona Projekat referencira kolonu Broj u tabeli PROJEKAT.

Definicija tabela

Kolona Tip Ključ Obavezna Napomena

MatBr Number Primarni ključ Da Long Integer

strana 3

Page 4: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

Ime Text(20) Ne Da  

SSLovo Text(1) Ne Da  

Prezime Text(30) Ne Da  

DatumRodj Date/Time Ne Ne  

Adresa Text(100) Ne Ne  

Pol Text(1) Ne Ne  

Plata Number Ne Ne Single

Rukovodilac Number Strani ključ Ne Long Integer

Sektor Number Strani ključ Da Byt Definicija tabele RADNIK  

Kolona Tip Ključ Obavezna Napomena

Broj Number Primarni ključ Da Byte

Naziv Text(50) Ne Da  

Sef Number Strani ključ Da Long Integer

DatPost Date/Time Ne Ne   Definicija tabele SEKTOR

Kolona Tip Ključ Obavezna Napomena

Broj Number Primarni ključ Da Integer

Naziv Text(100) Ne Da  

Lokacija Text(50) Ne Ne  

Sektor Number Strani ključ Da Byte Definicija tabele PROJEKAT  

Kolona Tip Ključ Obavezna Napomena

strana 4

Page 5: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

Radnik Number Primarni ključ, Strani ključ Da Long Integer

Ime Text(20) Primarni ključ Da  

Pol Text(1) Ne Ne  

Srodstvo Text(10) Ne Da  

DatRodj Date/Time Ne Ne   Definicija tabele CLAN_PORODICE  

Kolona Tip Ključ Obavezna Napomena

Sektor Number Primarni ključ, Strani ključ Da Byte

Lokacija Text(50) Primarni ključ Da   Definicija tabele LOK_SEK  

Kolona Tip Ključ Obavezna Napomena

Radnik Number Primarni ključ, Strani ključ Da Long Integer

Projekat Number Primarni ključ, Strani ključ Da Integer

Sati number Ne Da Byte Definicija tabele RADI_NA

Test podaci za bazu podataka PREDUZEĆE

strana 5

Page 6: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

SQL naredbe za kreiranje podataka

strana 6

Page 7: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

SQL DDL naredbe se koriste za kreiranje, izmenu i brisanje same relacione baze podataka kao i objekata koji čine relacionu baze podataka. Centralni objekat svake relacione baze podataka jeste tabela. Za kreiranje tabele koristi se SQL naredba CREATE TABLE. Osnovni format CREATE TABLE dat je u nastavku:

CREATE TABLE <ime_tabele> (<lista_deklaracija_kolona> [,<lista_deklaracija_organičenja_tabele>]);

Za deklaraciju kolona se koristi format koji je dat u nastavku: <ime_kolone><tip_podatka>[(<dužina>)] [<ograničenje_kolone>],

Deklaracija kolone sadrži ime kolone, tip podatka kolone, opciono dužinu (ako je neophodna, u zavisnosti od tipa podatka) i opciono, ograničenja za kolonu. Deklaracije kolona se razdvojaju zapetama. U odeljku Tipovi podataka navedeni su tipovi podataka koje možete koristiti. Ograničenja za kolonu su opciona i mogu da sadrže specifikaciju predefinisane vrednosti i niz specifikacija ograničenja, što je detaljnije opisano u odeljku Ograničenja kolona.

Nakon deklaracije svih kolona navode se ograničenja koja važe za celu tabelu. Specifikacije ograničenja za tabelu su navedena u odeljku Ograničenja tabele.

Navedena sintaksa naredbe CREATE TABLE nije kompletna. SQL standard obezbeđuju korišćenje velikog broja dodatnih klauzula koje korisnicima omogućavaju preciznu kontrolu procesa kreiranja tabele. Osim toga proizvođači RDBMS-ova prošuruju CREATE TABLE naredbu klauzulama koje su posledica specifičnih osobina njihovih proizvoda.

Tipovi podatakaU Tabeli 3 su dati generički tipovi podataka koje definiše SQL standard. Ne podržavaju svi RDBMS-ovi tipove podataka definisane u SQL standardu.

Tip podataka Opis

integer Celobrojna vrednost

smallint Celobrojna vrednost

numeric(p,s) Argument p definiše ukupan broj cifara broja dok argument s definiše broj cifara desno od decimalnog zareza. Npr. numeric(6, 2) je broj koji ima 4 cifre ispred decimalnog zareza i 2 cifre iza decimalnog zareza.

decimal(p,s) Argument p definiše ukupan broj cifara broja dok argument s definiše broj cifara desno od decimalnog zareza. Npr. numeric(6, 2) je broj koji ima 4 cifre ispred decimalnog zareza i 2 cifre iza decimalnog zareza.

real Broj u pokrenom zarezu jednostruke preciznosti

double precision Broj u pokretnom zarezu dvostruke preciznosti

float(p) Argument p definiše preciznost broja.

char(x) Argument x predstavlja maksimalan broj karaktera koji kolona može da prihvati.

strana 7

Page 8: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

Ovaj tip definiše tekstualne podatke fiksne dužine, odnosno podataka se dopunjuje blanko znacima sa desne strane kako bi se obezbedila specificirana dužina.

varchar2(x) Argument x predstavlja maksimalan broj karaktera koji kolona može da prihvati. Ovaj tip definiše tekstualne podatke promenljive dužine (nema dopunjavanja blanko znacima).

bit(x) Argument x definiše maksimalan broj bitova koje podataka može da prihvati. Podaci su fiksne dužine.

bit varying(x) Argument x definiše maksimalan broj bitova koje podataka može da prihvati. Podaci su promenljive dužine.

date Datum.

time Vreme.

timestamp Datum i vreme.

time with time zone

time koji uključuje i informaciju o vremenskoj zoni.

timestamp with time zone

timestamp koji uključuje i informaciju o vremenskoj zoni..

Interval Vremenski interval. Tabela 3 Generički SQL tipovi podataka U Tabeli 4 su navedeni tipovi podataka koje implementira Microsoft SQL Server familija proizvoda.

Tip podataka Opis

binary(n) Argument n (1 do 8000) definiše maksimalan broj bajtova koji kolona može da prihvati. Ovaj tip definiše binarne podatke fiksne dužine.

char(n) Argument n (1 do 8000) predstavlja maksimalan broj karaktera koji kolona može da prihvati. Ovaj tip definiše tekstualne podatke fiksne dužine, odnosno podataka se dopunjuje blanko znacima sa desne strane kako bi se obezbedila specificirana dužina.

datetime Tip podataka koji se koristi za predstavljanje informacija o vremenu i datumu. Koristi 8 bajtova za pamćenje informacija o datumu i vremenu sa preciznošću od 3,33 milisekunde. Mogu se predstaviti podaci o datumu i vremenu u opsegu od 01.01.1753 do 31.12.9999. godine.

image Binarni podaci promenljive dužine. Maksimalan broj bajtova koji kolona može prihvatiti je 2^31 - 1 (2,147,483,647).

strana 8

Page 9: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

int Colobrojna vrednost u opsegu od -2^31 (-2,147,483,648) do 2^31 - 1 (2,147,483,647).

numeric(p, s) Argument p (1 do 38) definiše ukupan broj cifara broja dok argument s (0 ≤ s ≤ p) definiše broj cifara desno od decimalnog zareza. Mogu se predstaviti brojevi u opsegu od - 10^38 +1 through 10^38 - 1.

smalldatetime Tip podataka koji se koristi za predstavljanje informacija o vremenu i datumu. Koristi 4 bajta za pamćenje informacija o datumu i vremenu sa preciznošću od 1 minuta. Mogu se predstaviti podaci o datumu i vremenu u opsegu od 01.01.1900 do 06.06.2079. godine.

smallint Colobrojna vrednost u opsegu od -2^15 (--32,768) do 2^15 - 1 (-32,767).

text Tip podataka koji se koristi za predstavljanje tekstualnih podataka promenljive dužine. Maksimalna dužina je 2^31 - 1 (2,147,483,647) bajtova.

tinzint(x) Colobrojna vrednost u opsegu od 0 do 255.

varchar(n) Argument x definiše maksimalan broj bitova koje podataka može da prihvati. Podaci su promenljive dužine.

Tabela 4 Tipovi podataka koje implementira MS SQL Server

SQL DDL naredbe za kreiranje tabela RADNIK i SEKTOR

Primer 1 CREATE TABLE RADNIK (        MatBr         Int,        Ime           VarChar(15),        SSlovo        Char(1),        Prezime       VarChar(15),        DatRodj       Date,        Pol           Char(1),        Plata         Numeric(8, 2),        Adresa        VarChar(30),        Rukovodilac   Int,        Sektor        Int );  

CREATE TABLE SEKTOR (        Broj          Int,          Naziv         VarChar(15),        Sef           Int,        DatPost       Date );

strana 9

Page 10: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

Ograničenje kolone

Ograničenja koja možete da definišete za kolonu kod kreiranja tabela su: NULL ili NOT NULL -definiše da kolona može ili ne može imatu NULL vrednosti. UNIQUE - definiše da kolona ima jedinstvene vrednosti (kandidati za ključeve). PRIMARY KEY - definiše da kolona predstavlja primarni ključ tabele (može da se primeni

na samo jednu kolonu u tabeli). CHECK -definiše ograničenje za proveru vrednosti kolone (koristi se kod upisa ili

ažuriranja vrednosti). DEFAULT - definiše podrazumevanu vrednost za kolonu (kolona uzima ovu vrednost, ako

vrednost kolone nije navedena). REFERENCES -definiše da kolona predstavlja spoljni ključ tabele.

Za vrednost kolone se mogu specificirati ograničenja NULL ili NOT NULL čime se dozvoljava ili zabranjuje NULL vrednost kolone. Strože ograničenje je UNIQUE, koje ne dozvoljava ponavljanje vrednosti u koloni. Za kolonu podrazumevano ograničenje je NULL vrednost. To znači da navodimo samo ograničenje NOT NULL, ako je definisano za konkretnu kolonu. Kod navođenja PRIMARY KEY podrazumeva se NOT NULL ograničenje za tu kolonu, tako da ga ne treba posebno navoditi. Pri kreiranju tabele u kojoj je atribut A primarni ključ, a atribut B spoljni ključ možete koristi oblik naredbe CREATE TABLE koji je prikazan u nastavku. CREATE TABLE <imeTabele> ( A <tip_podatka> PRIMARY KEY, B <tip_podatka> REFERENCES <ime_ref_tabele>(<ime_ref_kolone>), ostali atributi ); Uočite da kod deklaracije spoljnog ključa tabele treba navesti iza ključne reči REFERENCES ime referencirane tabele i opciono, u maloj zagradi, ime referencirane kolone u toj tabeli. DBMS očekuje da je referencirana kolona primarni ključ (kolona deklarisana sa PRIMARY KEY) u referenciranoj tabeli. Na taj način atribit iza koga stoji klauzula REFERENCES definisan je kao spoljni ključ u odnosu na primarni ključ tabele čije je ime navedeno iza klauzule REFERENCES.

Primer 2 SQL  DDL naredba za kreiranje tabele  PROJEKAT. CREATE TABLE PROJEKAT (        Broj          Int           PRIMARY KEY,        Naziv         VarChar(25)   NOT NULL,        Lokacija      VarChar(15)   DEFAULT("Niš"),        Sektor        Integer       REFERENCES SEKTOR(Broj) );

Ograničenja tabeleZa definisanje ograničenja koja važe za tabelu u celini možete koristiti:

PRIMARY KEY - definiše koja kolona ili koje kolone čine primarni ključ tabele. UNIQUE - definiše koja kolona ili koje kolone imaju jedinstvene vrednosti (kandidati za

ključeve). FOREIGN KEY - definiše koja kolona ili koje kolone čine spoljni ključ tabele.

strana 10

Page 11: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

CHECK -definiše ograničenja vrednosti kolone ili kolona koje DBMS proverava kod upisa ili ažuriranja vrednosti te ili tih kolona.

Za kreiranje tabele u kojoj je skup atributa (a,b,c) primarni ključ možete koristiti oblik CREATE TABLE naredbe prikazan u nastavku.  CREATE TABLE < ime_tabele > ( <atributi i njihovi tipovi podataka>, PRIMARY KEY (a,b,c) ); Atribute a, b i c treba deklarisati u sekciji < atributi i njihovi tipovi podataka >.

Primer 3 SQL DDL naredba za kreiranje tabele  RADI_NA. CREATE TABLE RADI_NA (        Radnik        Int,        Projekat      Int,        Sati          Int           NOT NULL,        CONSTRAINT    RadiNaPK      PRIMARY KEY (Radnik, Projekat) );

Ograničenje stranog ključa

U deklaraciji kolone ili tabele, nakon klauzule REFERENCES, mogu se navesti klauzule ON DELETE ili ON UPDATE koje specificiraju aktivnosti u slučaju narušavanja integriteta.

ON DELETE omogućava specifikaciju aktivnosti nad torkama relacije, odnosno vrstama tabele, u kojoj je navedeno REFERENCES ograničenje, u slučaju brisanja torki u referenciranoj tabeli.

ON UPDATE omogućava specifikaciju aktivnosti nad torkama u tabeli gde je REFERENCES ograničenje navedeno u slučaju ažuriranja (promene vrednosti) podataka u referenciranoj tabeli.

U oba slučaja, iza ovih klauzula se navodi jedna od klauzula koja definiše aktivnost koja će se izvršiti nad torkama u slučaju brisanja ili ažuriranja vrednosti torke u tabeli u kojoj je ograničenje navedeno:

NO ACTION - nema akcije (ovo je predefinisana vrednost).

CASCADE - kaskadno izvršenje aktivnosti brisanja (brišu se torke u tabeli na koju se referencirate) kod ON DELETE ili aktivnosti ažuriranja (ažuriraju se vrednosti referenciranih atributa) kod ON UPDATE.

SET DEFAULT - promena vrednosti atributa u tabeli na koju se referencirate na predefinisanu vrednost.

SET NULL - promena vrednosti atributa u tabeli na koju se referencirate na NULL.

Ne zaboravite da je kod deklarisanja FOREIGN KEY ograničenja na kraju deklaracije tabele, neophodno navesti listu referentnih atributa u okviru zagrada, tako da CREATE TABLE naredba ima sledeći oblik: CREATE TABLE <naziv_tabele> ( FOREIGN KEY (<lista_atributa_koji_čine_spoljni_ključ>) REFERENCES (<lista_referenciranih_atributa>) [ON DELETE { NO ACTION | CASCADE | SET DEFAULT |SET NULL}] [ON UPDATE { NO ACTION | CASCADE | SET DEFAULT |SET NULL}]

strana 11

Page 12: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

CHECK (<uslovni_izraz>) );

Primer 4 SQL DDL naredba za kreiranje tabele  CLAN_PORODICE. CREATE TABLE RADI_NA (        Radnik        Int,        Projekat      Int,        Sati          Int           NOT NULL,        CONSTRAINT    RadiNaPK      PRIMARY KEY (Radnik, Projekat),        CONSTRAINT    RadnikFK      FOREIGN KEY (Radnik) REFERENCES RADNIK(MatBr),        CONSTRAINT    ProjekatFK    FOREIGN KEY (Projekat) REFERENCES PROJEKAT(Broj) );

DDL naredbe za kreiranje baze podataka PREDUZEĆE

Primer 5 CREATE TABLE RADNIK (        MatBr         Int,        Ime           VarChar(15)   NOT NULL,        SSlovo        Char(1),      NOT NULL,        Prezime       VarChar(15)   NOT NULL,        DatRodj       Date,        Pol           Char(1)       DEFAULT "M",        Plata         Numeric(8, 2) CHECK (PLATA > 1000),        Adresa        VarChar(30),        Rukovodilac   Int,        Sektor        Int           NOT NULL,        CONSTRAINT    RadnikPK      PRIMARY KEY (MatBr),        CONSTRAINT    RukovodiFK    FOREIGN KEY (Rukovodilac) REFERENCES RADNIK(MatBr),        CONSTRAINT    SektorFK1     FOREIGN KEY (Sektor) REFERENCES SEKTOR(Broj) );   CREATE TABLE SEKTOR (        Broj          Int,          Naziv         VarChar(15)   NOT NULL,        Sef           Int           NOT NULL,        DatPost       Date,        CONSTRAINT    SektorPK      PRIMARY KEY (Broj),        CONSTRAINT    SefFK         FOREIGN KEY (Sef) REFERENCES RADNIK(MatBr)   );   CREATE TABLE PROJEKAT

strana 12

Page 13: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

(        Broj          Int,        Naziv         VarChar(25)   NOT NULL,        Lokacija      VarChar(15)   DEFAULT "Niš",        Sektor        Integer       NOT NULL,        CONSTRAINT    ProjekatPK    PRIMARY KEY (Broj),        CONSTRAINT    NadlezanFK    FOREIGN KEY (Sektor) REFERENCES SEKTOR(Broj) );   CREATE TABLE CLAN_PORODICE (        Radnik        Int,        Ime           VarChar(15),        Pol           Char(1)              NOT NULL DEFAULT "M",        DatRodj       Date,        CONSTRAINT    ClanPorodicePK       PRIMARY KEY (Radnik, Ime),        CONSTRAINT    RoditeljFK           FOREIGN KEY (Radnik) REFERENCES RADNIK(MatBr) );     CREATE TABLE LOK_SEK (        Sektor        Int,        Lokacija      VarChar(15),        CONSTRAINT    LokacijaPK    PRIMARY KEY (Sektor, Lokacija),        CONSTRAINT    SektorFK2     FOREIGN KEY (Sektor) REFERENCES SEKTOR(Broj) );   CREATE TABLE RADI_NA (        Radnik        Int,        Projekat      Int,        Sati          Int           NOT NULL,        CONSTRAINT    RadiNaPK      PRIMARY KEY (Radnik, Projekat),        CONSTRAINT    RadnikFK      FOREIGN KEY (Radnik) REFERENCES RADNIK(MatBr),        CONSTRAINT    ProjekatFK    FOREIGN KEY (Projekat) REFERENCES PROJEKAT(Broj) );

MS Access specifičnostiTrenutno najrasporostranjeniji standard SQL-a koji se koristi je ANSI SQL-92. Ovaj standard implementira najveći broj proizvođača DBMS-a. Sa druge strane MS Access koristi nešto stariju verziju standarda ANSI SQL-89. Takođe, kao i većina drugih proizvođala DBMS-a, Microsoft je u

strana 13

Page 14: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

MS Access SQL implementirao specifičnosti koje nisu deo SQL standarda. Iz ovih razloga, postoje elementi SQL standarda koji neće raditi u MS Access-u. U nastavku će biti navedene neki od elemenata SQL standarda, a vezani su za CRATE TABLE naredbu, koje MS Access ne podržava:

MS Access ne podržava UNIQUE, CHECK i DEFAULT ograničenja. Ekvivalentna ograničenja se mogu definisati u tabeli korišćenjem Desig View-a za tabelu.

Char i VarChar tipovi podataka se konvertuju u Text tip podataka MS Access ne podržava u potpunosti SQL standard za definisanje ograničenja stranog

ključa. Podržano je samo osnovno kreiranje stranog ključa bez mogućnosti definisanje ON UPDATE i ON DELETE akcija. Ove akcije se mogu naknadno definisati korišćenjem posebnih alata za kreiranje tabela i definisanje relacija.

Praktičan rad : MS Access

Proučiti detaljno funkcije MS Access-a kao alata za razvoj aplikacija i DBMSa, kreirati novu bazu podataka i u njoj kreirati tabele iz nekog od primera (PREDUZEĆE, VIDEO KLUB i sl). Kratko uputstvo za korišćenje MS Access-a:

1. Kreiranje baze podataka

Startujte MS Access - Windows , Programs, pronaći ikonicu za Access Pojaviće se početna upozorenja koja se odnose na sigurnost i treba ih potvrditi Kreirati novu bazu podataka - kada se otvori Access, Create New database, kao na slici, a

nakon toga izabrati Blank Database i uneti ime baze podataka:

strana 14

Page 15: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

2. Kreiranje tabela i izbor ključa - nakon otvaranja Database Window-a kao na slici:

Počnite sa kreiranjem tabela klikom na Table i Create Table in Design View:

strana 15

Page 16: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

  Kreirajte sve tabele iz baze podataka koju ste projektovali tako što ćete da unesete imena i

tipove kolona:

snimite tabelu pod željenim imenom domene atributa odredite tipovima podataka koje nudi Access

strana 16

Page 17: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

Izaberite ključni atribut, selekcijom tog atributa i klikom na ikonicu sa ključem na toolbar-u.

3. Tabele možete modifikovati tako što ćete iz istog prozora da klikom na tabelu i izborom opcije Design.

4. Unos i modifikacija podataka u tabeli - jednostavno dvostrukim klikom na tabelu otvara se tabela u modu za prikaz i unos podataka. Možete da unosite nove vrste ili da menjate postojeće:

5. Podešavanja za očuvanje referencijalnog integriteta Izabrati ikonicu za Relationship i otvoriće vam se sledeći prozor u kome možete da dodate

tabele između kojih ćete definisati veze za očuvanje referencijalnog integriteta:

strana 17

Page 18: Baze podataka - ljubisamladenovic.files.wordpress.com€¦  · Web viewANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules Interbase/Firebird PSQL Procedural SQL IBM SQL PL SQL

Ljubiša Mladenović Baze podataka

Za kreiranje veze između dve tabele jednostavno kliknite i povucite ključ jedne tabele i prevucite ga preko stranog ključa u drugoj tabeli. Podesite ograničenja:

strana 18