My SQL Izrada baze podataka za WEB. 8. vježbe. Upotreba odgovarajuće baze podataka. Značenje ostalih rezerviranih riječi

Similar documents
VRIJEDNOSTI ATRIBUTA

vježbe. Slobodan Jelić

Jezik Baze Podataka SQL. Jennifer Widom

Rad sa MySQL bazom podataka

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

Informacioni sistemi i baze podataka

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se biti u mogućnosti: Opisati ograničenja Generisati i održavati ograničenja u bazi

CREATE DATABASE naziv-baze-podataka [IN naziv-dbspace]

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

PREDMET. Osnove Java Programiranja. Čas JAVADOC

Uvod u relacione baze podataka

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

PROGRAMIRANJE. Amir Hajdar

Programiranje III razred

Moja naslovnica / Sveučilište u Zagrebu / Fakultet prometnih znanosti / Baze podataka / Opći dio / Izvanredni studenti - test za potpis

RAČUNARSKI PRAKTIKUM II

Upute za postavljanje Outlook Expressa

Izrada VI laboratorijske vježbe

9. RAD S DATOTEKAMA PODATAKA

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

BAZE PODATAKA. SQL Opis podataka. Neđeljko Lekić Irena Orović

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Sberbank Business Online na Mozilla FireFox

SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET. Stručni studij. Formula 1. Projektni zadatak iz kolegija Baze podataka

vježbe. Slobodan Jelić. vrijednosti u poljima funkcija za slanje mail-a: obrasca koje se dohvate pomoću niza _POST[ ]

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

IV SQL. Slika 1. SQL*Plus ikona. Slika 2. Dijalog provere identifikacije korisnika. Slika 3. Prozor SQL*Plus programa

VHDLPrimeri Poglavlje5.doc

[] znači opciono; znači ili. Strana 3 od 5

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

VDSL modem Zyxel VMG1312-B10A/B30A

SQL Rukovanje podacima

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Računarske osnove Interneta (SI3ROI, IR4ROI)

JavaScript i HTML DOM

Hipertekst - nastavak. 2. vježbe iz WEB programiranja. Dodavanje slika. Ćelija, redak i ćelija zaglavlja. Struktura tablice 8.3.

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Elektrotehnički fakultet Osijek Kneza Trpimira 2b. Stručni studij. Rent a Car. Projektni zadatak iz kolegija Baze podataka

Uputstvo za korišćenje logrotate funkcije

OSVRT NA NOSQL BAZE PODATAKA ČETIRI OSNOVNE TEHNOLOGIJE REVIEW OF NOSQL DATABASES FOUR BASIC TECHNOLOGIES

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

PARALELNO PROGRAMIRANJE

Tema 8: Koncepti i teorije relevantne za donošenje odluka (VEŽBE)

Uputstvo za podešavanje mail klijenta

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

How to use SQL to work with a MySQL database

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici

Brčko, Brčko Distrikt BiH. OSNOVE BAZA PODATAKA/UPRAVLJANJE BAZAMA PODATAKA Strukturirani jezik za upite - SQL

Numeričke metode i praktikum

Baze podataka. Ovaj fajl je skinut sa sajta Uvod u SQL (Structured Query Language)

RAČUNARSKI PRAKTIKUM II

1/42 SQL DDL. CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2)

KURSORI BAZE PODATAKA U ORACLE 11g

Programske paradigme Funkcionalna paradigma

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

x y = z Zadaci - procedure

Ime ograničenja je clients_client_num_pk. Ono inforsira biznis pravila po kojem client_number je PK u clients tabeli Naming Constraints

Z1. Dati RDF graf predstavljen u JSON-LD sintaksi potrebno je grafički predstaviti u skladu sa RDF notacijom. (5 poena)

(1,M) (1,1) PEVA. idpevaca Ceo broj Većeg opsega da. ime String Max. 30 karaktera da. prezime String Max. 30 karaktera da

Programiranje III razred

NIZOVI.

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Prva recenica. Druga recenica.

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora).

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo

VB komande. Programiranje 1

PVC Eco. Eco Prozori i Balkonska Vrata Bela Boja Dezeni drveta su 40% skuplji

Definicije kolona su odvojene zarezima CREATE TABLE Example Sledeći primer poklazuje CREATE TABLE iskaz:

Chapter 13 : Informatics Practices. Class XI ( As per CBSE Board) SQL Commands. New Syllabus Visit : python.mykvs.in for regular updates

DA LI POSTOJI SAMO JEDNA "ISPRAVNA" ARHITEKTURA WEB POSLOVNIH APLIKACIJA

Pametna komunikacija na Internetu preko REST protokola

Osnove RDBMS-a: Šta sačinjava SQL Server bazu podataka

OPTIMIZACIJA UPITA U MICROSOFT SQL SERVER BAZI POMOĆU INDEKSA MICROSOFT SQL SERVER QUERY OPTIMIZATIONS USING INDEXES

Naredbe za kontrolu toka

SQL Commands & Mongo DB New Syllabus

Baze podataka SQL Jezik relacione BP

relacionim bazama podataka (1)

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić

MICHAEL JAKŠIĆ SIGURNOST WEB-STRANICA

Vežbe - XII nedelja PHP Doc

GENERIRANJE IZVJEŠĆA IZ BAZE PODATAKA

Optimiziranje MySQL baze i Laravela za rad s vrlo velikim bazama podataka. Nenad Crnko Sveučilišni računski centar

SQL Data Definition and Data Manipulation Languages (DDL and DML)

Visual Basic 6.0. Osnove VB. Uvod u računarstvo 1

Sadržaj predavanja 02. Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka(2/3) Cjelobrojni tip podataka(3/3) prec(short) prec(int) prec(long) int

Lekcija 4. Java programiranje sa bazama podataka. dr Svetlana Cvetanović

Transcription:

Web programiranje i primjene Sveučilište Josipa Jurja Strossmayera u Osijeku, Odjel za matematiku, Trg Ljudevita Gaja 6 31000 Osijek Sveučilište Josipa Jurja Strossmayera u Osijeku, Odjel za matematiku, Trg Ljudevita Gaja 6 31000 Osijek My SQL Izrada baze podataka za WEB 8. vježbe Slobodan Jelić odabir baze use ima_baze; u našem slučaju: use books; izrada tabele: Upotreba odgovarajuće baze podataka create table ime_tabelestupci parametar stupci predstavlja popis stupaca odvojenih zarezom shema baze: CustomersCustomerID, Name, Address, City) OrdersOrderID, CustomerID, Amount, Date) BooksISBN, Author, Title, Price) Order_ItemsOrderID, ISBN, Quantity) uvesti datoteku bookorama.sql Book_ReviewsISBN, Reviews) Značenje ostalih rezerviranih riječi NOT NULL atribut mora imati vrijednost u svi redcima tablice AUTO_INCREMENT CustomersCustomerID, Name, Address, City) odnosi se na cjelobrojne stupce OrdersOrderID, CustomerID, Amount, Date) ako se prilikom unošenja polje ostavi prazno, MySQL automatski generira vrijednost BooksISBN, koja je Author, jedinstvena Title, u stupcu Price) generirana Order_ItemsOrderID, vrijednost je za ISBN, 1 veća Quantity) od postojeće maksimalne vrijednosti samo jedan stupac u tablici može imati ovu opciju Book_ReviewsISBN, Reviews) PRIMARY KEY govori da je stupac primarni ključ tablice automatski create se table indeksira customers može se navesti iza imena stupca samo ako se primarni ključ sastoji od jednog customerid stupca int unsigned not null ako auto_increment se primarni ključ sastoji primary od dva i key, više stupaca, onda se piše primary key name popis_stupaca) char50) not null, USIGNED address stupac char100) može imati not samo null, nenegativne cjelobrojne vrijednosti city char30) not null 1

Tipovi stupaca create table orders customerid cjelobrojni tip pišemo int orderid int unsigned not null svi ostali stupci auto_increment znakovnog tipa primary pišemo key, char u zagradi pišemo customerid koliko MySQL int unsigned treba dodijeliti not znakova, null, čak iako se vrijednost amount u stupcu sastoji float6,2), od manje znakova ostatak se popuni razmacima) date date not null moguće je staviti varchar tada vrijednost zauzima stvarni broj znakova NOT NULL sve kolone optimizacija amount realni broj create s pomičnom table customers točkom float date - datum customerid int unsigned not null auto_increment primary key, name char50) not null, address char100) not null, city char30) not null primarni ključ koji se sastoji od dva stupca quantity tinyint unsigned cjelobrojne vrijednosti između od 0 do 255 riview tekstualni tip - text, za duže tekstove poput novinskih članaka create table book_reviews isbn char13) not null primary key, review text create table order_items orderid int unsigned not null, isbn char13) not null, quantity tinyint unsigned, primary key orderid, isbn) 5 vrsta identifikatora: ime baze ime tablice ime stupca ime indeksa alijasi Identifikatori u MySQL-u Cjelobrojni tipovi mogu se zadati s ključnom riječi UNSIGNED nenumerički tipovi mogu imati i opciju ZEROFILL koja popunjava prazna mjesta vodećim nulama i automatski uključuje UNSIGNED Realni brojevi s pomičnom točkom može se zadati oblik broja M maksimalni broj znamenki D broj decimalnih mjesta maksimalno M-2 ) Datumski i vremenski tipovi omogućuje unos datuma kao numeričkih ili znakovnih vrijednosti 2

TIMESTAMP vremenski žig koristi se za bilježenje transakcija Znakovni tipovi 3 grupe znakovnih tipova obični znakovni podaci char i varchar BLOB i TEXT TEXT za duže tekstove BLOB eng. Binary Large Object) bilo što, primjerice zvučni i video zapisi) SET i ENUM SET stupac može sadržavati jednu ili više vrijednosti iz zadanog skupa ENUM stupac može sadržavati samo jednu vrijednost iz zadanog skupa Sveučilište Josipa Jurja Strossmayera u Osijeku, Odjel za matematiku, Trg Ljudevita Gaja 6 31000 Osijek Rad s MySQL-ovom bazom podataka 1. Unošenje podataka u bazu 2. Učitavanje podataka iz baze 3. Ažuriranje zapisa u bazi podataka 4. Naknadne izmjene strukture tablica 5. Brisanje zapisa iz baze podataka 6. Brisanje tabela 7. Brisanje cijele baze podataka Što je MySQL SQL kratica za Structured Query Language strukturirani jezik za upite standardni jezik za pristupanje RDBMS-u omogućuje unos i čitanje podatak u/iz baze poznati DBMS-i: MySQL Oracle PostgreSGL Sybase Microsoft SQL Server postoje razlike iz među MySQL i ANSI standarda http://dev.mysql.com/doc/refman/5.1/en/compatibility.html MySQL: DDL eng. Data Definition Language) jezik za definiranje podataka DML eng. Dana Manipulation Language) jezik za obradu podataka 3

pomoću iskaza INSERT Unošenje podataka u bazu sintaksa: INSERT [INTO] ime_tablice [stup1, stup2, stup3,...)] VALUES v1,v2,v3,... primjer: insert into customers values NULL, 'Julie Smith', '25 Oak Street', 'Airport West' jednostruki ili dvostruki navodnici create table customers za numeričke tipove ne trebaju navodnici NULL? customerid stavili smo atribut intauto_increment unsigned not null za primarni ključ customerid auto_increment primary key, name char50) not null, address char100) not null, city char30) not null moguć unos u SAMO određene stupce u određenom rasporedu primjer: insert into customers name, city) values Melissa Jones, Nar Nar Goon North koristimo u slučajevima kada nisu sva polja obvezna ili kada ne raspolažemo svim podacima moguć unos više redaka istovremeno svaki redak morate pisati između zagrada retke zagrade) odvojiti zarezom Unos u tablicu customers: insert into customers values 1, "Julie Smith", "25 Oak Street", "Airport West"), 2, "Alan Wong", "1/47 Haines Avenue", "Box Hill"), 3, "Michelle Arthur", "357 North Road", "Yarraville" insert into customers values 1, "Julie Smith", "25 Oak Street", "Airport West"), 2, "Alan Wong", "1/47 Haines Avenue", "Box Hill"), 3, "Michelle Arthur", "357 North Road", "Yarraville" 4

Unos u tablicu orders: insert into orders values NULL, 3, 69.98, "2007-04-02"), NULL, 1, 49.99, "2007-04-15"), NULL, 2, 74.98, "2007-04-19"), NULL, 3, 24.99, "2007-05-01" create table orders orderid int unsigned not null auto_increment primary key, customerid int unsigned not null, amount float6,2), date date not null insert into customers values 1, "Julie Smith", "25 Oak Street", "Airport West"), 2, "Alan Wong", "1/47 Haines Avenue", "Box Hill"), 3, "Michelle Arthur", "357 North Road", "Yarraville" Unos u tablicu books: insert into books values "0-672-31697-8", "Michael Morgan", "Java 2 for Professional Developers", 34.99), "0-672-31745-1", "Thomas Down", "Installing Debian GNU/Linux", 24.99), "0-672-31509-2", "Pruitt, et al.", "Teach Yourself GIMP in 24 Hours", 24.99), "0-672-31769-9", "Thomas Schenk", "Caldera OpenLinux System Administration Unleashed", 49.99 Unos u tablicu order_items: insert into order_items values 1, "0-672-31697-8", 2), 2, "0-672-31769-9", 1), 3, "0-672-31769-9", 1), 3, "0-672-31509-2", 1), 4, "0-672-31745-1", 3 Unos u tablicu order_items insert into order_items values 1, "0-672-31697-8", 2), 2, "0-672-31769-9", 1), 3, "0-672-31769-9", 1), 3, "0-672-31509-2", 1), 4, "0-672-31745-1", 3 create table order_items orderid int unsigned not null, isbn char13) not null, quantity tinyint unsigned, primary key orderid, isbn) insert into books values "0-672-31697-8", "Michael Morgan", "Java 2 for Professional Developers", 34.99), "0-672-31745-1", "Thomas Down", "Installing Debian GNU/Linux", 24.99), "0-672-31509-2", "Pruitt, et al.", "Teach Yourself GIMP in 24 Hours", 24.99), "0-672-31769-9", "Thomas Schenk", "Caldera OpenLinux System Administration Unleashed", 49.99 umetanje u tablicu book_reviews insert into book_reviews values "0-672-31697-8", "Morgan's book is clearly written and goes well beyond most of the basic Java books out there." insert into orders values NULL, 3, 69.98, "2007-04-02"), NULL, 1, 49.99, "2007-04-15"), NULL, 2, 74.98, "2007-04-19"), NULL, 3, 24.99, "2007-05-01" Pogledajte datoteku book_insert.sql uvesti datoteku book_insert.sql 5

Učitavanje podataka iz baze pomoću iskaza SELECT sintaksa: SELECT podaci FROM tables [ WHERE uvjeti ] [ GROUP BY grupiranje ] [ HAVING uvjet_grupe ] [ ORDER BY redoslijed ] [LIMIT ograničenja ] [PROCEDURE ime_procedureargumenti)] [način_zaključavanja]; Primjer: Učitati vrijednost stupaca name i city iz tablice customers select name, city from customers; Učitajte vrijednosti u SVIM kolonama tablice order_items select * from order_items; Učitavanje podataka koji ispunjavaju određene uvjete Operatori za usporedbu u odredbi WHERE koristimo odredbu WHERE Primjer: Učitajte sve narudžbe iz tablice orders koje je napravio kupac koji ima customerid=3 select * from orders where customerid = 3; upotreba logičkih operator AND i OR u zadavanju upita s više uvjeta select * from orders where customerid = 3 or customerid = 4; Što će se dogoditi ako u prethodnom upitu umjesto OR stavimo AND? Upit vratio 0 redaka? Zašto? Razlika između AND i OR? Unija AND), Presjek OR) 6

Učitavanje podataka iz više tablica istovremeno kada želimo odgovoriti na pitanje a za to nam trebaju podaci iz više tabela koji su kupci naručili knjige ovog mjeseca potrebne tablice customers i orders ako želimo znati što su naručili potrebna i je tablica order_items da bismo objedini podatke u fizički razdvojenim tablicama koje smo povezali stranim ključevima i spojnim tablicama) tablice je potrebno spojiti eng. JOIN) Primjer: želimo vidjeti sve narudžbe koje pripadaju kupcu Julia Smith u tabeli customer pronaći njezin identifikator, tj customerid s tim podatkom pretražiti tablicu orders Jednostavni spoj dvije tabele select orders.orderid, orders.amount, orders.date where customers.name = Julie Smith and customers.customerid = orders.customerid; upit na dvije tablice umjesto zareza može se pisati INNER JOIN ili CROSS JOIN računamo Cartesijev produkt) Kako funkcionira? select orders.orderid, orders.amount, orders.date Upit: select * ; u većini slučajeva Kartezijev produkt nema smisla jer on uparuje pravi uređene dvojke) svih redaka iz obje tablice kako eliminirati nepotrebno odredba WHERE uvjet spajanja select orders.orderid, orders.amount, orders.date where customers.name = Julie Smith select orders.orderid, orders.amount, orders.date where customers.name = Julie Smith select orders.orderid, orders.amount, orders.date where customers.name = Julie Smith and customers.customerid = orders.customerid; 7

Konačan rezultat upita: select orders.orderid, orders.amount, orders.date where customers.name = Julie Smith and customers.customerid = orders.customerid; Spajanje više od dvije tablice Problem: Pronaći kupce s najmanje jednom porudžbinom koja sadrži knjigu o Javi potrebno je pogledati u 4 tablice Rezultat: select customers.name, order_items, books where customers.customerid = orders.customerid and orders.orderid = order_items.orderid and order_items.isbn = books.isbn and books.title like %Java% ; jednakovrijedni spoj engl. equi-join) Pronalaženje redaka koji se ne poklapaju koristimo lijeve spojeve engl. left join) u prethodnom primjeru učitali smo retke u kojima je postojalo poklapanje među podacima ponekad želimo suprotno Primjer: Klijenti koji nisu ništa kupili Knjige koje nikada nisu kupljene lijevi spoj: ako u tablici na desnoj strani ne postoji redak koji bi odgovarao retku tablice na lijevoj strani, skupu rezultata se dodaje redak koji, umjesto vrijednosti iz stupca desne tablice, sadrži vrijednost NULL. Izvršite sljedeće upite za unos: insert into customers name, city) values Melissa Jones, Nar Nar Goon North insert into customers set name = Michael Archer, address = 12 Adderley Avenue, city = Leeton ; datoteka: unos_dodatni.sql select customers.customerid, customers.name, orders.orderid from customers left join orders on customers.customerid = orders.customerid; cross join želimo vidjeti samo klijente koji nisu ništa kupili nemaju narudžbu) tražimo samo one kupce koje na desnoj strani u tablici orders) imaju vrijednost NULL select customers.customerid, customers.name from customers left join orders using customerid) where orders.orderid is null; Što je s right join? Da li ima smisla gledati right join u ovom slučaju? USING ne zadajemo iz koje tablice dolazi zajednički atribut zbog čega u obje tablice on mora imati isto ime 8

Rezultat: Upotreba drugih imena iz tablice: ALIJASI alijas privremeni skraćeni naziv stupca primjer: select c.name from customers as c, orders as o, order_items as oi, books as b where c.customerid = o.customerid and o.orderid = oi.orderid and oi.isbn = b.isbn and b.title like %Java% ; spajanje tablice same sa sobom primjer: želite pronaći sve kupce koji žive u istom gradu select c1.name, c2.name, c1.city from customers as c1, customers as c2 where c1.city = c2.city and c1.name!= c2.name; Spojevi tablice Učitavanje podataka s određenim redoslijedom upotreba iskaza ORDER BY sortira retke po redoslijedu vrijednosti iz jedne ili više kolona navedenih u iskazu SELECT select name, address from customers order by name; Rezultat: Možemo li sortirati po prezimenu? Grupiranje podataka i grupne funkcije vrijednosti se standardno sortiraju rastućim redoslijedom ASC rastući redoslijed DESC opadajući redoslijed primjena funkcija na stupac ili tablicu kao cjelinu ili na grupu podataka u njoj select name, address from customers order by name asc; select name, address from customers order by name desc; 9

Primjer: select avgamount) from orders; Primjer: Izračunati prosječnu vrijednost narudžbina po kupcu grupiranje podataka) select customerid, avgamount) from orders group by customerid; Kako biste napravili upit koji vraća ime kupca pored prosječne vrijednosti njegovih narudžbi? 10