Osnove mySQL-a Kreiranje Baze podataka

Download Report

Transcript Osnove mySQL-a Kreiranje Baze podataka

Osnove mySQL-a
ADMIR DŽAFEROVIĆ
Uvod

MySQL je besplatan, open source sustav za upravljanje bazom podataka. MySQL je čest izbor
baze za projekte otvorenog koda, te se distribuira kao sastavni dio serverskih Linux distribucija,
no također postoje inačice i za ostale operacijske sustave poput Mac OS-a, Windowse itd.

MySQL baza je slobodna za većinu uporaba. Ranije u svom razvoju, MySQL baza podataka
suočila se s raznim protivnicima MySQL sustava organiziranja podataka jer su joj nedostajale
neke osnovne funkcije definirane SQL standardom. Naime, MySQL baza je optimizirana kako bi
bila brza nauštrb funkcionalnosti. Nasuprot tome, vrlo je stabilna i ima dobro dokumentirane
module i ekstenzije te podršku od brojnih programskih jezika: PHP, Java , Perl, Python...

MySQL baze su relacijskog tipa, koji se pokazao kao najbolji način skladištenja i pretraživanja
velikih količina podataka i u suštini predstavljaju osnovu svakog informacijskog sustava, tj. temelj
svakog poslovnog subjekta koji svoje poslovanje bazira na dostupnosti kvalitetnih i brzih
informacija.

MySQL i PHP su osvojili veliki dio tržišta jer su open source, dakle, mogu se besplatno koristiti.
MySQL WORKBENCH

MySQL Workbench je jedan od takvih besplatnih alata koji ima puno više mogućnosti nego će
vam za početak trebati, ali upravo zato je odličan, jer kako vi budete više znali o bazama
podataka, tako će vas MySQL Workbench pratiti i pružiti vam da napravite ono što ste zamislili.

Dok dođemo do koraka modeliranja baze podataka već imamo ideju o aplikaciji i što bi ona
trebala sadržavati, bez obzira koliko je jednostavna ili kompleksna.
MySQL WORKBENCH
Pravila pisanja côda

SQL ne pravi razliku između malih i velikih slova (tj. nije casesensitive) što
znači da su slijedeće dvije naredbe iz primjera jednake:
primjer 1: select prezime from osoba where ime = ‘John’
primjer 2: SELECT prezime FROM osoba WHERE ime = ‘John’

Radi lakšeg prepoznavanja koda preporučljivo je da se naredbe pišu
velikim slovima, kao u primjeru 2., a sve ostalo malim slovima.

U nekim bazama niz znakova (string) mora biti napisan kao što je u bazi.
Znači, u gornjim naredbama nije isto ako piše John ili JOHN ali isto to ne
mora vrijediti i za Microsoft SQL.
Komentari

Komentari su tekst koji se piše kao podsjetnik i oni nemaju nikakvu vezu
sa kodom osim što daju određenu informaciju programeru koji čita kod,
tj. oni se ne izvršavaju.

Postoje dvije vrste komentara:
-- ovo je komentar tj. oznaka za komentar je -- a iza slijedi tekst komentara
/* komentar */ ovo je također komentar koji se proteže kroz više redova
Imena objekata

Imena objekata u SQL (imena tabela, kolona, pogleda)
prave se tako da prvi znak mora biti slovo (a-z, A-Z) ili
podvučeno (underline) _, te u nekim slučajevima, @ i
#.Razmak i ostali specijalni znakovi se mogu koristiti ali nije
preporučljivo.
select prezime from osoba where ime_prezime = ‘John Smith’
Brisanje baze podataka



Prilikom korištenja nekog DBMS-a (MircrosoftSQL), potrebno je izabrati
bazu sa kojom ćemo da radimo. Prvo ćemo pogledati spisak baza na
serveru. Da bismo to uradili koristimo slijedeću komandu (OBAVEZNO je
“;” na kraju svake komande).
Iskoristit ću bazu BZB, koju sam kreirao da bih pokazao upotrebu
naredbe DROP koja služi za brisanje baze.
drop database zaposleni;
Nakon ove naredbe baza je obrisana. Važno je napomenuti da neće
biti nikakvog upozorenja tj. pitanja tipa "Da li ste sigurni?", tako da sa
koričenjem naredbe DROP u bilo kakvom smislu treba biti veoma
oprezan. Jednom obrisani podaci više se ne mogu vratiti.
Kreiranje baze podataka

Kreiranje baze je veoma jednostavno (kao i njeno brisanje).
Baza se kreira uz pomoć ključne riječi CREATE:
create database zaposeni;
Biranje baze podataka

Prije nego što u bazi podataka zaposleni napravimo novu
tabelu ili uradimo bilo šta drugo u njoj, moramo obavijestiti
MySQL da želimo da radimo u našoj novoj bazipodataka. To
se radi pomoću komande use, na sledeći način:
use zaposleni;

Sada je izabrana (otvorena) baza podataka employee; za
sve akcije koje izvršimo od sad pa nadalje, podrazumevaće
se da se odnose na tu bazu podataka.
Pravljenje tabela

Tabele u bazi podataka zaposleni napravit ćemo pomoću
SQL-ove komande CREATE TABLE. Uobičajen oblik te
komande je sledeći:
create table ime_tabele ( definicije kolona tabele )
[type=tip_tabele];

Kao što vidite, komanda počinje riječima create table, iza
kojih slijedi ime tabele koju bismo željeli da napravimo, a
zatim dolazi grupa definicija svih kolona tabele. Na kraju
komande možete po potrebi zadati tip mašine baze
podataka koji biste željeli da se koristi.
Primjer tabele sektor i zaposlenik
create table sektor(
sektorID int not null auto_increment primary key,
ime varchar(30)
);
create table zaposlenik(
zaposlenik int not null auto_increment primary key,
ime varchar(30),
posao varchar (30),
sektorID int not null references sektor(sektorID)
);
Primjer tabele
create table vještine_zaposlenog (
zaposlenik int not null references zaposlenik(zaposlenik),
vjestina varchar(15) not null,
primary key (zaposlenik, vjestina));
create table klijent (
klijentID int not null auto_increment primary key,
ime varchar(40),
adresa varchar(100),
kontakt_osoba varchar ( 80) ,
broj_kontakt_osobe char(12));
Primjer tabele
create table zadatak(
klijentID int not null references klijent(klijentID),
zaposlenik int not null references zaposlenik(zaposlenik),
datum_pocetka date not null,
sati float,
primary key (klijentID, zaposlenik, datum_pocetka)
);
Tipovi podataka u kolonama
1.
Cjelobrojni
2.
Decimalni
3.
Znakovni
4.
Datumsko vremenski
Cjelobrojni

BIGINT – zauzima 8 bajtova memorije i može se koristiti za rad sa
vrijednostima u opsegu od -263 do 263 -1.

INT – zauzima 4 bajta memorije i može se koristiti za rad sa vrijednostima u
opsegu od -231 do 231 -1.

SMALLINT – zauzima 2 bajta memorije i može se koristiti za rad sa
vrijednostima u opsegu od -215 do 215 -1.

TINYINT- zauzima jedan bajt memorije i može se koristiti za rad sa
vrijednostima u opsegu od 0 do 255.

MONEY-zauzima 8 bajtova memorije.

SMALLMONEY – zauzima 4 bajta memorije
Decimalni
 REAL-
zauzima 4 bajta memorije, a preciznost
mu je 7 cifara.
 FLOAT- zauzima 8 bajtova memorije, a
preciznost mu je 15 cifara.
 DECIMAL-zauzima od 2 bajta do 17 bajtova
memorije, u zavisnosti od preciznosti koja se
zadaje.
Znakovni

Tip podataka CHAR(n) - jednobajtni znakovni nizovi fiksne veličine koji se mogu koristiti za čuvanje
podataka veličine najviše 8000 bajtova. Tip CHAR koristiti kada je veličina kolone poznata i
nepromjenljiva.

Tip podataka VARCHAR(n) - znakovni nizovi koji se sastoje od promjenljivog broja jednobajtnih
znakova, koji može biti najviše 8000. Ako je podatak manji od definiranih n bajtova, on će se na disku
zauzeti samo onoliko bajtova kolika mu je stvarna veličina.

Tip podataka TEXT - namijenjen je znakovnim nizovima koji se sastoje od promjenljivog broja
jednobajtnih znakova, veličina premašuje 8000 bajtova.

Tip podataka NCHAR(n) - znakovni nizovi fiksne dužine sastavljeni od znakova u Unicode formatu.

Tip podataka NVARCHAR(n) - znakovni nizovi promjenljive dužine sastavljeni od znakova u Unicode
formatu.
Datumsko vremenski

Smalldatetime – (4 bajta za datum i vreme do 6.juna 2079)

DATETIME – (8 bajtova za datum i vreme do 31.DEC.9999)

DATETIME2 – (ekvivalentno sa datetime sa većom tačnošću od
100 nanosekundi)

DATE - (3 bajta, koji sadrže samo datum)

TIME – (5 bajtova, koji sadrže vreme sa tačnošću)

DATETIMEOFFset - (ekvivalentno je sa datetime2, uz dodataku
vremenske zone)
Komanda INSERT

MySQL-ova komanda INSERT služi za umetanje novih redova u tabele.
Pogledat ćemo najprije jedan primjer:
insert into sektor values
(42, 'Financije'),
(128, 'Istraživanje i razvoj'),
(null, 'Ljudsko istraživanje'),
(null, 'Marketing');
Primjer
insert into zaposlenik values
(7513, 'Elmin Pečenković', 'Programer',128),
(9842, 'Sanadin Majetić', 'Stručnjak za BP', 42),
(6651, 'Alma Mukelafić', 'Programer', 128),
(9006, 'Mukelafa Poturak', 'Sistem Admin', 128);
Primjer
insert into vještine_zaposlenog values
(7513, 'C++'),
(7513, 'Perl'),
(7513, 'Java'),
(9842, 'DB2'),
(6651, 'VB'),
(6651, 'Java'),
(9006, 'NT'),
(9006, 'Linux');
Primjer
insert into klijent values
(NULL, 'Tele Optic', 'Šturlići', 'Pupan Oždrljić',95551234 ),
(NULL, 'ProCredit', '98 Mahmići', 'Meho Majetić',95559876) ;
Primjer
insert into zadatak values
(1, 7513, '2003-01-20',8.5);
Kraj