E N D
MySQL Najbolj razširjen grafični vmesnik za MySQL je phpMyAdmin. To je administrativni sistem za delo z MySQL-om, ki obstaja že od leta 1998. Podpira vse različice MySQL-a od različice 3.23 naprej. Veliko ponudnikov gostovanja ga ponuja kot standardni vmesnik za MySQL.MySQL je zmožen ravnanja z velikim številom hkratnih povezav brez občutne izgube učinkovitosti.
MySQL je relacijska podatkovna zbirka. Vsi podatki so shranjeni v tabelah. V tabelah so podatki urejeni v vrstice in stolpce. Vsak stolpec ima ime, ki prikazuje, kaj stolpec vsebuje.Same vrstice niso označene, toda prvi stolpec vsebuje edinstveni označevalec, poznan kot primarni ključ, ki se uporablja za istovetenje podatkov, ki so povezani z določeno vrstico. Vsaka vrstica vsebuje zapis med sabo povezanih podatkov. Presek med vrstico in stolpcem, kjer je shranjen podatek, se imenuje polje.
Značilnosti MySQL Izdaja MySQLCommunityEdition je dostopna pod odprtokodno licenco, obenem pa je MySQL najbolj razširjena med odprtokodnimi podatkovnimi zbirkami. Večina ponudnikov prostora samodejno ponuja MySQL v navezi s PHP-jem. MySQL teče na Windows-ih, Mac OS X-u in Linux-u. Podatkovna zbirka, ustvarjena na enem sistemu ne zahteva nobene pretvorbe med prenosom v drugo okolje.Najbolj razširjen grafični vmesnik za MySQL je phpMyAdmin. To je administrativni sistem za delo z MySQL-om, ki obstaja že od leta 1998. Podpira vse različice MySQL-a od različice 3.23 naprej. Veliko ponudnikov gostovanja ga ponuja kot standardni vmesnik za MySQL.MySQL je zmožen ravnanja z velikim številom hkratnih povezav brez občutne izgube učinkovitosti.
Značilnosti MySQL MySQL je relacijska podatkovna zbirka. Vsi podatki so shranjeni v tabelah. V tabelah so podatki urejeni v vrstice in stolpce. Vsak stolpec ima ime, ki prikazuje, kaj stolpec vsebuje.Same vrstice niso označene, toda prvi stolpec vsebuje edinstveni označevalec, poznan kot primarni ključ, ki se uporablja za istovetenje podatkov, ki so povezani z določeno vrstico. Vsaka vrstica vsebuje zapis med sabo povezanih podatkov. Presek med vrstico in stolpcem, kjer je shranjen podatek, se imenuje polje.
ZančilnostiMySQL Pomembno načelo relacijske baze je, da razcepiš sestavljene informacije v njihove sestavne dele in shraniš vsak sestavni del posebej.Ni se vedno lahko odločiti, kako daleč naj gre ta razcep. Npr. ime in priimek se razdelita v ločena stolpca; naslovi se razdelijo na ulico, mesto, kraj, poštno številko in tako dalje. Kadarkoli kasneje lahko tudi uporabiš SQL in/ali PHP, da te podatke ponovno združiš, medtem ko jih veliko težje razdružiš.
MySQL-va pravila za poimenovanja Osnovna pravila za poimenovanje MySQL-ovih zbirk, tabel in stolpcev so naslednja:- imena so lahko dolga do 64 znakov,- dovoljeni znaki za poimenovanje so števila, črke, podčrtaj in znak za dolar ($),- imena se lahko začnejo s številko, toda ne morejo vsebovati samo številke.Pri Windows-u in Mac OS X-u imena niso razlikovalna za črke, pri Linux-u in Unix-u pa so. Zato je potrebna uporaba malih črk. Ko sestavljaš imena iz več besed, za vezaj uporabiš podčrtaj.
Primarni in tuji ključi Za primarni ključ veljajo naslednja pravila: - ni potrebno, da je številka, toda biti mora edinstven,- MySQL samodejno ustvarja primarni ključ,- ko je primarni ključ enkrat pripisan, ne sme biti nikoli spremenjen.
Izdelava tabele Definiranje sestave tabele vključuje odločanje o naslednjem:- imenu tabele,- številu stolpcev, ki jih bo tabela imela,- imenih stolpcev,- tipu podatkov, ki bodo shranjeni v vsakem stolpcu,- ali je potrebno, da mora stolpec vedno imeti podatek v vsakem polju,- kateri stolpec vsebuje primarni ključ tabele.
Shranjevanje besedila Razlike med glavnimi besedilnimi tipi so v tem, kolikšno je največje število znakov, ki se lahko shranijo v posameznem polju in v tem ali se lahko določi privzeta vrednost.- CHAR: dolžina niza je določena. Največja dovoljena vrednost v vseh različicah MySQL-a je 255. Lahko se določi privzeto vrednost.- VARCHAR: Dolžina niza je spremenljiva. Pred MySQL-om 5.0 je bila najvišja možna vrednost 255, od MySQL 5.0 naprej pa je bila vrednost povečano z 255 na 65535. Lahko se določi privzeto vrednost.- TEXT: shrani tekst največje velikosti 65535 znakov. Ne da se določiti privzete vrednosti.TEXT je uporaben, ker ni potrebno določiti največje dolžine. Čeprav je največja dolžina VARCHAR-ja v MySQL-u 5.0 enaka kot pri TEXT-u, lahko drugi faktorji omejujejo dejansko shranjeno količino. Zato je najbolj primerno uporabiti VARCHAR za kratke tekste in TEXT za daljše.
Shranjevanje števil Najbolj pogosto uporabljeni številčni stolpčni tipi so naslednji:- INT: vsako celo število med -2 147 483 648 in 2 147 483 647.- FLOAT: decimalno število. Obstaja možnost, da se določi dve števili, ločeni z vejico, v polju length/values v phpMyAdmin-u. Prvo število določa število številk pred decimalno vejico in druga določa natančnost s katero se zaokroža decimalni del števila.- DECIMAL: decimalno število shranjeno kot niz. Namenjen je za valute, toda v zbirki se z nizi ne more izvajati izračunov, tako da je bolj praktično namesto tega tipa uporabiti INT.Vejice ali presledki se ne smejo uporabljati kot ločevalci za tisoč. Poleg številk so edini dovoljeni znaki v številih operator za negativno (-) in decimalna pika (.).
Shranjevanje datuma in časa MySQL hrani datume v obliki YYYY-MM-DD. To je standard odobren s strani ISO (Mednarodne organizacije za standardizacijo).Najbolj pomembni stolpčni tipi za datume in čase so naslednji:- DATE: datum shranjen v obliki YYYY-MM-DD. Podprt razpon je od 1000-01-01 do 9999-12-31.- DATETIME: sestavljena datum in ura v obliki YYYY-MM-DD HH:MM:SS- TIMESTAMP: časovni žig (ustvari ga računalnik samodejno). Dovoljene vrednosti segajo od začetka leta 1970 do leta 2037. MySQL-ovi časovni žigi imajo isto obliko kot DATETIME in so nezdružljivi z Unix in PHP časovnimi žigi, ki temeljijo na število pretečenih sekund od 1.1.1970.
Shranjevanje vnaprej določenih seznamov MySQL dovoljuje shranjevanje dveh tipov vnaprej določenih seznamov, ki ju lahko smatramo za zbirkinega ekvivalenta radijskega gumba in potrditvenega polja:- ENUM: omogoča hrambo ene izbire iz vnaprej določenega seznama kot so: "da, ne, ne vem" ali "moški, ženska". Največje dovoljeno število postavk, ki se lahko shranijo v tem seznamu je 65535.- SET: ta tip shrani ali nič ali več izbir iz vnaprej določenega seznama. Seznam lahko hrani največ 64 izbir.ENUM je kar uporaben, SET je manj, zato ker krši pravilo hrambe le ene informacije v polju. Položaj, kjer pa je lahko uporaben, je tam, kjer se npr. zabeleži več odgovorov pri vprašanjih z več možnimi odgovori.
Shranjevanje dvojiških podatkov Hramba dvojiških podatkov v zbirki ni priporočljiva, ker jo zelo poveča. Na voljo so naslednji tipi:- TINYBLOB: do 255 bajtov,- BLOB: do 64 KB,- MEDIUMBLOB: do 16 MB,- LONGBLOB: do 4 GB.
Osnovna pravila za pisanje SQL-a SQL ni razlikovalen za črke. Dogovor pa je, da se vse SQL ključne besede piše z velikimi črkami, vse ostalo pa z malimi. Prednost pri uporabi velikih črk za ključne besede je v tem, da se lahko SQL poizvedbe lažje najde v kodi. Prazen prostor se prezre in to omogoča, da lahko raztegneš SQL poizvedbe čez več vrstic in povečaš čitljivost. Prazen prostor pa ni dovoljen med imenom funkcije in odpiralnim narekovajem: COUNT (*) ustvari napako; pravilno je COUNT(*).Nizi morajo biti v narekovajih, ni pa važno ali uporabljaš enojne ali dvojne narekovaje. Z narekovaji znotraj nizov se ravna na način, da se niz pošlje funkciji mysql_real_escape_string().Splošno pravilo je, da se števila ne da v narekovaje, vendar MySQL sprejme tudi števila obdana z narekovaji in jih jemlje kot številčne ekvivalente. Treba je biti pozoren, da razlikuješ resnična števila in kateri drugi podatkovni tip sestavljen iz številk. Npr. datum je sestavljen iz številk, toda mora biti obdan z narekovaji in shranjen v datumski tip stolpca. Telefonske številke morajo biti obdane z narekovaji in shranjene v tekstovni tip stolpca.
Povezava MySQL-a s PHP-jem Postopek sporazumevanja PHP-ja z MySQL-om je sledeč:1. Najprej se povežeš z MySQL-om z uporabo imena gostitelja, uporabniškega imena in gesla.2. Nato izbereš zbirko, s katero želiš delati.3. Nato pripraviš SQL poizvedbo.4. Izvedeš poizvedbo in shraniš izid.5. Na koncu izvlečeš podatke iz izida (običajno z zanko).Ime gostitelja je v lokalnem testnem okolju localhost. MySQL pa običajno uporabi localhost tudi na oddaljenem strežniku. To je zato, ker je zbirkin strežnik običajno nameščen na istem strežniku kot spletna stran in sta spletni strežnik in MySQL lokalno drug glede na drugega. Če je MySQL nameščen na drugem računalniku, vpišeš tisti naslov.
MySQL-a s PHP-jem PripovezaviMySQL-a s PHP-jemnekaterimukazomslediukaz or die(). To ustaviskripto, čeukazspodleti in prikažesporočilo o napaki, kijovstaviš med narekovaje. Na MySQLstrežnik se povežeš s funkcijomysql_connect(), kijemlje tri argumente - imegostitelja, uporabniškoime in geslonanaslednjinačin:$conn = mysql_connect($imeGostitelja, $uporabniskoIme, $geslo) or die ('Ne morem se povezati z MySQLstrežnikom');Vseeno je, alipošlješargumentekotspremenljivkealikotdobesednenize. Če je bilapovezavauspešna, funkcijavrnesklicevanjenapovezavo, ki se lahkoshranikotspremenljivka.Po povezovanju je potrebnoizbratiposameznozbirko z uporabomysql_select_db() takole:mysql_select_db('imeZbirke') or die ('Ne moremodpretizbirke.');
MySQL-a s PHP-jem Kosmo z zbirkopovezani, pripravimo SQL poizvedbo in shranimorezultatpoizvedbe v spremenljivko.$sql='SELECT * FROM ime_tabele';$rezultat=mysql_query($sql);Priizvlečenjuinformacijizrezultatapoizvedbe se je potrebnoukvarjati z vsakimzapisomposebej. Ponavadi se za to uporabljazanka v povezavi s funkcijo, kiizvlečetrenutnizapis v začasnopolje, ki se ganatouporabizaprikazinformacij, kijihvsebuje. To se naredinanaslednjinačin:while ($vrstica=mysql_fetch_assoc($rezultat)) {//naredinekaj s trenutnimzapisom}$vrstica je asociativnopolje, kivsebujevsepodatke v tekočemzapisu. Vsak element je poimenovanpoustrezajočemstolpcu v tabeli.
SELECT SELECT se uporablja za pridobivanje zapisov iz ene ali več tabel. Osnovna skladnja je naslednja:SELECT [DISTINCT] seznam_stolpcev FROM seznam_tabel [WHERE where_izraz] [ORDER BY ime_stolpca | formula ] [ASC | DESC] [LIMIT [stevilka_izpusceni,] stevilka_prikazanih_od]DISTINCT možnost pove bazi, da želiš odstraniti podvojene vrstice iz rezultatov.Izraz seznam_stolpcev je z vejicami ločen seznam stolpcev, ki jih želiš vključiti v rezultat. Za prikaz vseh stolpcev se uporabi zvezdico (*). Če je isto ime stolpca uporabljeno v več kot eni tabeli, moraš uporabiti nedvoumna sklicevanja z uporabo skladnje: ime_tabele.ime_stolpca.Izraz seznam_tabel je z vejicami ločen seznam tabel, iz katerih naj se vleče rezultate. Vse tabele, ki jih želiš prikazati morajo biti naštete.
SELECT WHERE stavek določa iskalno merilo. Uporablja primerjalne, aritmetične, logične operatorje ter vzorec-ustrezajoče operatorje (tabela 10).Tabela 10: Seznam operatorjev v WHERE stavkihTip operatorja Oznaka Pomenprimerjalni IN() vključen v seznam vrednostiprimerjalni BETWEEN min AND max med (vključno z) dvema vrednostimalogični AND logični inlogični && logični alilogični OR logični alilogični || logični ali vzorec-ustrezajoči LIKE ujemanje – nerazlikovalno za črkevzorec-ustrezajoči NOT LIKE neujemanje – nerazlikovalno za črkevzorec-ustrezajoči LIKE BINARY ujemanje – razlikovalno za črkevzorec-ustrezajoči NOT LIKE BINARY neujemanje – razlikovalno za črke
SELECT IN() ovrednoti z vejico ločen seznam vrednosti v narekovajih in vrne pravilno, če je najdenih ena ali več od teh vrednosti. Čeprav se BETWEEN običajno uporablja za števila, se lahko uporabi tudi za nize. Naprimer BETWEEN 'a' AND 'd' vrne resnično za a, b, c in d. Tako operatorju IN() kot operatorju BETWEEN lahko damo predpono NOT, da se izvede nasprotna primerjava.LIKE, NOT LIKE in povezani BINARY operatorji se uporabljajo za iskanje po besedilu v povezavi z dvema nadomestnima znakoma: % ustreza katerikolemu zaporedju znakov ali nič in _ (podčrtaj) ustreza točno enemu znaku.Pogoji so ovrednoteni iz leve na desno, toda lahko se združujejo v oklepaje, če želiš, da so posamezni skupki pogojev obravnavani skupaj.ORDER BY določa vrstni red izidov. To je lahko določeno z enim stolpcem, z vejicami ločenim seznamom stolpcev ali z izrazom kot je RAND(), ki naredi vrstni red naključno. Privzeti vrstni red je naraščajoč (ASC), toda lahko določiš padajoč (DESC) za obraten vrstni red.LIMIT, ki mu sledi številka, omeji število vrnjenih zapisov, s tem da določiš največje število zapisov, ki se vrnejo. Če sta dve številki ločeni z vejico, prva številka pove, koliko vrstic naj se spusti.
INSERT Ukaz INSERT se uporablja za dodajanje novih zapisov v podatkovno zbirko. Splošna skladnja je naslednja:INSERT [INTO] ime_tabele (imena_stolpcev) VALUES (vrednosti)Beseda INTO je neobvezna. Imena stolpcev in vrednosti sta seznama ločena z vejico in oba morata biti v istem vrstnem redu. Primer:INSERT INTO vreme (Ljubljana, Maribor, Kredarica) VALUES ('sončno', 'delno oblačno', 'megla')Vzrok za to nenavadno skladnjo je omogočanje vnos več kot enega zapisa naenkrat. V naslednjem primeru je vsak zapis v ločenem skupku oklepajev, z vsakim skupkom ločenim z vejico:INSERT numbers (x,y) VALUES (10,20), (20,30),(30,40),(40,50)Vsak stolpec, ki ga ni v INSERT poizvedbi, je postavljen na privzeto vrednost. Nikoli ne določi eksplicitno vrednost za primarni ključ, kjer je stolpec postavljen na auto_increment. Ime tega stolpca naj ne bo v INSERT stavku.
UPDATE Ukaz se uporablja za spremembo obstoječih vnosov. Osnovna skladnja izgleda takole:UPDATE ime_tabele SET ime_stolpca = vrednost [, ime_stolpca = vrednost] [WHERE where_izraz]WHERE izraz pove MySQL kateri zapis ali zapise želiš posodobiti.
DELETE DELETE se lahko uporabi za izbris le enega zapisa, več zapisov ali celotne vsebine tabele. Splošna sintaksa za brisanje iz ene tabele je naslednja:DELETE FROM ime_tabele [WHERE where_izraz]Pri uporabi ukaza DELETE moraš biti previden, ker je izbris nepovraten. Naslednja poizvedba bo zbrisala vse zapisa iz tabele narocniki, kjer je datum datum_poteka že potekel:DELETE FROM narocniki WHERE datum_poteka < NOW()
Primer Create table: CREATE TABLE Persons(FirstNamevarchar(15),LastNamevarchar(15),Age int);
Primer kreiranja tabele z primarnim ključem CREATE TABLE Persons (personIDint NOT NULL AUTO_INCREMENT, PRIMARY KEY(personID),FirstNamevarchar(15),LastNamevarchar(15),Age int)";
Vnos podatkov - insert INSERT INTO Persons (FirstName, LastName, Age)VALUES ('Peter', 'Griffin', '35'); INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Glenn', 'Quagmire', '33‘);
Select SELECT * FROM Persons Ali npr. SELECT * FROM PersonsWHERE FirstName='Peter'