Flokkar: Allir, Almennt, Kvikmyndir, PHP, Nörd, Tón- og leiklist

Deila á Facebook
MySQL fyrir byrjendur
Skrifað af Arnór Heiðar þann 28. nóvember 2005 - 18:06
athugasemdir skrifaðar - toppur / botn
Fjöldi lestra: 2013
MySQL fyrir byrjendur.

Kynning

MySQL er algengasti "open-source" gagnagrunnurinn sem til er. Hann var hannaður með hraða, kraft og nákvæmni í fyrirrúmi.
Í þessum tutorial er farið yfir byrjendaatriði varðandi gagnagrunna yfir höfuð ásamt því að ég nefni nokkur atriði varðandi gagnagrunnsfræði. Einnig fer ég þó nokkuð í SQL. Það verður litið á MySQL sérstaklega út frá því sjónamiði að það sé notað í samhengi við internetið. Athugið að ég geri einungis ráð fyrir að lesendur séu á Windows kerfi. Fyrst fer ég aðeins yfir gagnagrunna yfir höfuð og skýri einstök hugtök en síðan breytist þetta í svona skref-fyrir-skref kynningu. Ég vil líka aðeins afsaka mig, því ég nota frekar laust sql í dæmunum fyrir neðan og það er ekki eins formlegt hjá mér og það ætti að vera, en það er bara til að láta þetta ekki virðast of flókið.

Ástæða fyrir skrifum þessa tutorials

Ég skrifaði hann til að auðvelda byrjendum að skilja og kynnast hinum geysivinsæla gagnagrunni, MySQL. Það er fjöldinn allur af fólki sem hefur gert heimasíður en langar til að læra PHP og MySQL til að geta búið til fréttakerfi, gestabók, spjallborð eða eitthvað álíka. Ég ætlaði bara að búa til einn sem fer yfir þetta en svo ákvað ég út frá því hvað það vantaði betri upplýsingar um þessi efni á íslensku að gera þennan alveg sjálfstæðan. Þá sér fólk líka að þessir hlutir eru ekkert bundnir saman, eins og er oft misskilið.

Fyrsta skrefið, "Hvað er gagnagrunnur?".

Fyrst af öllu skulum við hugsa aðeins um hvað gagnagrunnur eiginlega sé. Til að byrja með eru gagnagrunnar notaðir allstaðar í kringum okkur. Þeir eru notaðir í innkaupakerfum, skriðdrekum, kassakerfum, ofl ofl. Eins og augljóslega liggur fyrir, er gagnagrunnur eitthvað fyrirbæri sem geymir gögn. Í raun og veru gætuð þið alveg eins litið á venjulegt textaskjal sem gagnagrunn. Hinsvegar er textaskjal frekar lélegur gagnagrunnur, þar sem að það hefur enga örugga skipulagningu og afar takmarkaðar leiðir til að ná upplýsingum úr því. Gagnagrunnar geyma gögn á skipulagðan hátt með því að setja ákveðnar reglur um hvernig eigi að meðhöndla gögnin.

Öll gagnagrunnsforrit geta geymt marga gagnagrunna í einu og yfirleitt unnið með marga í einu (þó að flestir notendur láti sér nú nægja að vinna með einn í einu). Hver gagnagrunnur er byggður upp af safni af töflum (sem við búum til). Þessar töflur eru í raun og veru bara listar af gögnum um hina ýmsu hluti. Til að útskýra betur skulum við nefna smá dæmi.

Segjum að við ætluðum að geyma gögn um allar nærbuxurnar í nærbuxna skúffunni okkar. Í textaskjali mundum við setja upplýsingarnar niður svona:

nærbuxur.txt:

Einar nærbuxurnar eru rauðar með hvítum doppum, reyndar eru þær orðnar dálítið rifnar, en þær eru samt uppáhalds nærbuxurnar mínar. Hinar eru bláar með hvítri rönd og eru ekkert mikið rifnar en það hefur samt gulur blettur fests í þeim. Svo á ég líka þrjár svartar nærbuxur sem ég geng sjaldan í og því eru þær í fullkomnu ástandi. Ég á líka einar grænar nærbuxur sem eru mjög þægilegar.

Þarna eru upplýsingarnar algerlega óskipulagðar og ekki er auðvelt fyrir forrit að nýta sér þessar upplýsingar. Hinsvegar í gagnagrunni yrðu upplýsingarnar geymdar svona:

Númer Litur Munstur Ástand Einkunn
1 rauðar hvítar doppur soldið rifnar 10
2 bláar hvít rönd ekki mikið rifnar, gulur blettur 6
3 svartar einlitar fullkomið 2
4 svartar einlitar fullkomið 2
5 svartar einlitar fullkomið 2
6 grænar einlitar gott 8

Tilgangur skipulagsinns er svo að tölvan geti náð út upplýsingum á fljótlegan og einfaldan hátt. Tölva á mjög erfitt með að skilja mælt mál (eins og í 'nærbuxur.txt') og í raun öll venjuleg skjöl, en í gagnagrunni er allt sett niður á skipulagðan hátt sem gagnagrunnsforritið veit alltaf hvar hún getur fundið vissar upplýsingar.

Að tengjast gagnagrunnsforriti

Gagnagrunnar bjóða yfirleitt upp á ýmsar leiðir fyrir okkur að tengjast þeim, td. gegnum internetið (af heimasíðu td.), í gegnum einhverskonar console (í command prompt td.) eða gegnum sérstök forrit. Í þessum tutorial munum við aðeins tengjast MySQL í gegnum console-ið.

Að tala við gagnagrunnsforrit (SQL)

Til að tala við gagnagrunn, notum við sérstakt staðlað tungumál sem ber nafnið 'SQL', sem stendur fyrir 'Structured Query Language'. Þetta tungumál er *nokkurnveginn* eins í flestum gagnagrunnum og hefur engar beygingar eða persónu (ho ho).

Hvernig eru gagnagrunnsforrit eins og MySQL?

MySQL er einfaldlega bara forrit sem er alltaf í gangi á einhverri tölvu (yfirleitt netþjóni). Það situr bara þarna og bíður eftir að einhver vilji tala við sig, alveg eins og netþjónn gerir.
Svo kemur einhver saklaus notandi og tengist, td. gegnum console, og biður um einhverjar upplýsingar, og notar til þess SQL. Forritið sendir þá notandanum upplýsingarnar til baka sem hann biður um (alla skúffuna þessvegna ;).

Að pota í MySQL

Jæja, nóg af blaðri um einhverja fræði og einhverja vitleysu, nú getum við byrjað af fullum krafti.

Það fyrsta sem þið þurfið að gera er auðvitað að sækja MySQL (Þið finnið link á download-síðu MySQL á botninum á síðunni (innanlands linkur)).

Þar næst skulið þið keyra upp install forritið. þegar uppsetningu er lokið þurfið þið kannski að starta tölvunni upp á nýtt, ég er ekki alveg viss, en þegar það er búið ætti WinMySQLAdmin forrit að poppa upp. Þetta þýðir að allt virkar bara vel hjá ykkur. Ég vil taka það fram að þessi gluggi er ekki sjálft gagnagrunnsforritð, því það er ósýnilegt og keyrir bara í bakgrunninum á tölvunni ykkar.

Notum Console-ið

Þegar MySQL er fyrst sett inn þá er umsjónarmaðurinn (þe. 'root') ekki með neitt password, svo að í sjálfu sér gæti hver sem er þóst vera hann, við þurum nú að byrja á að breyta því. Þú skulum við opna command prompt (ég geri ráð fyrir grunnþekkingu á DOS). Farðu á þann stað sem þú installaðir MySQL (vonandi C:/MySQL/). Þar skaltu fara inn á 'bin' möppuna. Skrifaðu mysql -u root. Þá kemur að öllum líkindum:

Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 630 to server version: 3.23.46
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

Og þá ertu tengdur. Taktu eftir því að allar skipanir þurfa að enda á ';'. Næst skaltu skrifa:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('þitt_lykilorð');

Nú ertu búinn að breyta passwordinu. Þá þurfum við bara að búa til gagnagrunn því í rauninni er enginn gagnagrunnur til ennþá (nema 'mysql', en það skiptir ekki máli strax). Búum til grunn:

create database naerbuxnagrunnur;

Búinn að búa til gagnagrunn (JEJ!). Þú ert að verða helvíti góð(ur) í þessu. Nú þurfum við að velja þennan gagnagrunn sem við bjuggum til, skrifaðu þá:

use naerbuxnagrunnur;

og þá er gagnagrunnurinn 'naerbuxur' valinn! Þetta var nú ekki svo erfitt, eða hvað?

Búa til Nærbuxna töfluna

Nú höfum við tengst sem root, búið til nýjan gagnagrunn og veljið hann, þannig að nú þurfum við bara að búa til töflur í grunninum. Nú skulum við nota smá SQL (þetta sem við skrifuðum er í raun og veru ekki staðlað sql, því þetta er mismunandi eftir gagnagrunnsforritum). Það sem við þurfum að gera núna er að búa til nýja töflu sem við skulum skýra 'naerbuxur'. Þessi tafla þarf að innihalda allar upplýsingar sem við töluðum um áðan, þe. númer, lit, munstur, ástand og einkunn. Við þurfum líka að láta hana vita hverskonar upplýsingar eru geymdar í hverjum reit. Þe. að númer og einkunn eru auðvitað tölur (eða integer á ensku tölvumáli), en litur, munstur og ástand eru textastrengir.
Skrifaðu þá:

create table naerbuxur (
  numer integer not null primary key,
  litur text,
  munstur text,
  astand text
);

Og þá er taflan bara tilbúin... eða hvað? Úps, við gleymdum einkunnar dálkinum! Það er ekkert mál, við þurfum ekkert að eyða henni og byrja frá byrjun heldur getum við bætt honum inn með:

alter table naerbuxur add einkunn integer;

OK. Þá ætti hún að vera tilbúin. Nú skulum við aðeins fara yfir þetta sem við gerðum. Fyrsta línan skýrir sig mikið sjálf. Hún segir bara að við séum að búa til töflu sem heitir 'naerbuxur'. Næsta lína er öllu flóknari. Hún segir okkur að við séum að búa til dálk sem heitir 'numer' og að hann sé 'integer' (þe. tala). 'not null' segir til um að í þessari töflu megi engar nærbuxur vera með tómt númer, þe. að það verður alltaf að vera einhver tala þarna. 'primary key' segir mysql að þessi dálkur (numer) sé sá dálkur sem einkennir hverja færslu. Allar töflur verða að hafa svona 'primary key' dálk og í þá má aldrei sama gildi koma fyrir tvisvar. Þetta framfylgir því að alltaf verði hægt að þekkja eina röð (nærbuxur) frá öðrum. Næstu þrjár línur ættu að skýra sig nokkurnveginn sjálfar.
Línan þar sem við bætum við einkunnadálki ætti líka að skýra sig sjálf, því hún er frekar lík eðlilegu tal-máli.

Setja inn upplýsingar í nærbuxnatöfluna

Nú þurfum við að setja inn allar nærbuxurnar okkar í þessa töflu. Þá skrifum við:

insert into nearbuxur (numer,litur,munstur,astand)
values (1,"rauðar","hvítar doppur","soldið rifnar");

og aftur:

insert into naerbuxur (numer,litur,munstur,astand)
values (2,"bláar","hvít rönd","ekki mikið rifnar, gulur blettur");

Nú höfum við sett inn tvær nærbuxur. Förum aðeins yfir þetta. 'insert into naerbuxur' segir að við séum að setja nýja línu af upplýsingum í nærbuxnatöfluna. '(numer,litur,munstur,astand)' segir að við séum að setja inn í þessa dálka. Svigarnir eru nauðsynlegir ásamt kommunum. Svo kemur 'values' sem segir hvaða gildi koma í þessa reiti, með svigum utan um eins og dálkarnir. Takið sérstaklega eftir því að það eru gæsalappir utan um alla strengi sem við setjum inn.

En úps, sjáið þið hverju ég gleymdi aftur? ég gleymdi að setja inn einkunn, en sem betur fer er númera dálkur sem merkir allar færslur. þá skulum við skrifa:

update naerbuxur set einkunn = 10;
update naerbuxur set einkunn = 6 where numer = 2;

Þá höfum við breytt einkunninni á þeim tveim nærbuxum sem við höfum sett inn. 'update naerbuxuer' segir til um að við séum að uppfæra (breyta) röð í naerbuxnatöflunni. 'set einkunn = 10' setur einkunnina sem 10 á ALLAR raðir í töflunni, þe. líka röðina með bláu nærbuxunum, því það er engin setning sem segir á hvaða röð eigi að breyta þessu. Næsta lína segir hinsvegar að við ætlum að setja einkunnina sem 6 'where numer = 2' - þar sem númer raðarinnar er 2.

Nú skulið þið sjálf fikta við að setja inn raðirnar með hinum nærbuxunum og setjið bara endilega inn fleiri nærbuxur því maður lærir LANG MEST af því að fikta sjálfur.

Skoða nærbuxna töfluna

Þið hafið kannski, einhverntíma, heirt um hina víðfrægu "SELECT" skipun. Hún er ekkert merkilegri en aðrar SQL skipanir, eins og þið fáið nú að sjá. Segjum sem svo að allar nærbuxurnar séu hreinar og við viljum finna allar nærbuxur sem eru sæmilega þægilegar, þe. eru með góða einkunn. Nú skulum við velja númer og lit þeirra töflunni þar sem einkunnin er hærri en fimm:

select numer, litur from naerbuxur where einkunn > 5;

Þá kemur listi yfir numer og lit þeirra nærbuxna sem eru með hærra en 5 í einkunn. Prufum nokkar fleiri:

select numer, einkunn from naerbuxur where astand like "%rifnar%";
select munstur,einkunn,numer from nearbuxur where astand = "fullkomið";
select litur, astand, einkunn from naerbuxur where munstur = "einlitar" order by litur;


Taktu eftir annari setningunni. Þar skrfum við 'like' í staðinn fyrir '=' sem segir að við viljum velja þessa dálka sem eru ekki alveg nákvæmlega eins og '%rifnar%'. prósentumerkið (%) inn í textastrengnum er svona "hvað sem er" merki, þe. það getur hvað sem er verið þarna. Semsagt við veljum þær nærbuxur þar sem ástands textinn inniheldur textan 'rifnar'. Taktu því næst eftir síðustu línunni. Þar kemur 'order by litur' sem segir mysql að það eigi að raða niðurstöðunum okkar eftir 'litur' dálkinum (þe. í stafrófsröð eftir honum). Við gætum alveg eins valið numer sem röðunar-dálk og þá raðast eftir númerum.

Nú skulum við henda öllum svörtu nærbuxunum því við förum hvort-eð-er aldrei í þær:

delete from naerbuxur where litur = "svartar";

og svo til að hætta skrifaru:

exit;

... og þá er þetta búið

Nú ættir þú bara að vera tilbúinn í að nota MySQL í heimasíðuna þína eða bara til að geyma upplýsingar um hvað sem er. Til hamingju.

MySQL download mirror síða hjá Draupni




Athugasemdir ():