Webprogramozó tanfolyam MySql alapjai Az Sql nyelv
Adatbázis (database) Egy (többnyire) serveren tárolt adathalmaz, melyhez strukturált módon férhetünk hozzá. Adattáblák Lekérdezések Magán az adatbázison belül is vannak adatbázisok, de ez csak névbeli egyezés, inkább mappáknak felelnek meg.
Olvasnivaló MySql tutorial-ok: Sql leírások: http://dev.mysql.com/doc/refman/5.0/en/tutorial.html http://www.tizag.com/mysqlTutorial/ Sql leírások: http://www.w3schools.com/sql/default.asp http://www.1keydata.com/sql/sql.html http://www.sql-tutorial.net/
Adattáblák (datatable) Sorokkal (rekordok) és oszlopokkal (column) rendelkeznek, ezenkívül van még nevük is amivel hivatkozhatunk rájuk.
Példa egy adattábla tartalmára és szerkezetére KeresztNev VezetekNev Cim Varos Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Pettersen Kari Storgt 20 Stavanger
Oszlopok Az oszlopoknak neve és típusa van, ez utóbbi határozza meg hogy milyen adatot képes tárolni. Ilyen típusok például: Számok (int), logikai érték (bool), változó hosszúságú szöveg (varchar)
Rekordok Bennük tárolódik a tényleges információ. Egy átlagos adattábla általában néhány oszloppal (3-10) és rengeteg rekorddal rendelkezik (50 - ... ).
Sql – Szabványos lekérdező nyelv Valójában csak a nevében szabványos, a különböző adatbázisok mind rendelkeznek egyéni sajátosságokkal. Az Sql segítségével tudjuk manipulálni az adatbázis tartalmát, feltölteni azt információval, törölni ha szükséges stb.
Biztonság a MySql-ben Van egy tábla ami a felhasználók jogosultságait és adatait tárolja. Lehetséges jogosultságok: Írás Olvasás Létrehozás Törlés Módosítás Jogosultság adása
Biztonság a MySql-ben Kezdetben a root felhasználó létezik csak. A mi esetünkben még jelszava sincs. Jó trükk: ‘admin’ felhasználó, aki mindent tud szerkeszteni amire csak programozóként szükségünk lehet ‘public’ felhasználó, aki csak és kizárólag olvasni tud és csak azokat a táblákat amiket a böngészőben majd használni kell
Sql nyelv alapjai Az sql is tekinthető egy programozási nyelvnek (valójában csupán adatmanipuláló nyelv), a parancsok megírásával és az adatbázison való lefuttatásával módosíthatjuk annak tartalmát vagy nyerhetünk ki belőle információt. Mi a PhpMyAdmin-on ill. php kódon keresztül fogunk sql parancsokat futtatni.
Hasznos utasítások SHOW tables; USE ‘<adatbázis_név>’; Kilistázza az adott adatbázisban található összes tábla nevét USE ‘<adatbázis_név>’; A továbbiakban elhagyható az adatbázis név a hivatkozásokból. Pl. Select * from proba.szemlyek; Helyette: use proba; select * from szemelyek; MySql-ben annyira nem akar működni...
Create - létrehozás Create table <táblanév> ( <oszlopnév1> <típus1>, ... <oszlopnévn> <típusn> ); Létrehoz egy új (üres) adattáblát a megfelelő oszlopokkal.
Speciális megszorítások Not null Kötelező az oszlop kitöltése Unique Egyedinek kell lenni a tartalmának Primary Key Egyedinek kell lennie és kötelező kitölteni Check Egyedi megszorítás pl. Check(kor>5) Auto_increment Magától növeli egyesével az értékét
Megszorítások használata CREATE TABLE Customer(SID integer auto_increment, Last_Name varchar (30), First_Name varchar(30)); CREATE TABLE Customer(SID integer not null, Last_Name varchar (30), First_Name varchar(30)); CREATE TABLE Customer(SID integer CHECK (SID > 0), Last_Name varchar (30), First_Name varchar(30)); CREATE TABLE Customer(SID integer unique, Last_Name varchar (30), First_Name varchar(30)); CREATE TABLE Customer(SID integer primary key, Last_Name varchar (30));
I. Feladat Készítsünk egy saját adatbázist és abban egy táblát amely a leendő webshop-unk termékeit fogja tárolni! Termékek Id: egyedi azonosító Név: szöveg Ár: szám Kép: szöveg Leírás: szöveg
Insert Insert into <táblanév> (<oszlop1>,...,<oszlopn>) values(<érték1>,...,<értékn>); Egy új rekordot vehetünk fel vele a megadott értékekkel. Pl. Insert into Szemelyek(KeresztNev, Kor) values (‘József’,43);
II. Feladat A már elkészített táblánkat töltsük fel öt rekorddal!
Select - kiválasztás SELECT <oszlop_nevek> FROM <adattábla>; Helyettesítő karakter: * - ez az összes oszlopot jelöli Az eredménye egy ilyen lekérdezésnek egy eredmény halmaz, mely általában szintén egy adattábla. Select * from Szemelyek; Select VezetekNev, Kor from Szemelyek;
Select, where select <oszlopok> from <tábla> where <feltétel>; Szűkíthetőek a kiválasztani kívánt rekordok. Pl. Select * from szemelyek where kor>18; AND ill. OR itt is használható: Select * from szemelyek where kor>18 and kor<25;
Select és a limit Select <oszlopok> from <táblanév> limit <mettől>,<mennyi darabot>; Pl. select * from proba limit 5,15;
III. Feladat Írjunk néhány lekérdezést ami a valóságban is előfordulhatna egy webshop esetében!
Update Update <táblanév> set <oszlop1>=<érték1>,...,<oszlopn>=<értékn> where <feltételek>; Már létező rekordok tartalmát írhatjuk át.
IV. Feladat Drágul a beszerzés, úgyhogy ezt áthárítjuk a fogyasztókra. Minden termék árát emeljük meg 10%-al.
Delete Delete from <tábla_név> where <feltétel>; Delete from szemelyek where VezetekNev=‘Ola’; Delete from Szemelyek; Minden adatot töröl a táblából, de a táblát nem! ”Természetesen” nem kérdez rá a törlésre, azonnal töröl!
Tábla törlése Drop table <táblanév>; Drop table ‘Szemelyek’; Magáért beszél, természetesen a tartalmat is törli. Ezt most nem próbáljuk ki.
Adatbázis törlése Drop database <adatbázisnév>; Pl. drop database ‘proba’;
Php és a MySql
Kapcsolódás a serverhez Mysql_connect(<server>,<user>,<jelszó>); Pl. Mysql_connect(‘localhost’,’root’,’valami’); Egy kapcsolatot ad vissza, ezt érdemes letárolni. $kapcsolat=mysql_connect(...); A későbbiekben sok olyan függvény lesz amely egy kapcsolatot igényel, amennyiben azt elhagyjuk a legutolsó kapcsolódást veszi figyelembe.
Kapcsolat lezárása Mysql_close(<kapcsolat>); Pl. Mysql_close($connection); Mindig zárjuk le az adatbázis kapcsolatainkat ha már tudjuk hogy nem lesz rá szükség! Persze a kód végén mindenképpen lezárásra kerül, azonban ezt általában nem illik kihasználni.
V. Feladat Kapcsolódjunk az adatbázisunkhoz, majd zárjuk is le a kapcsolatot.
Hibajelzés Mysql_error(); Ha az adatbázis server valami hibát jelez, akkor ez a függvény ki tudja az írni. Persze ez nem mindíg hasznos vagy biztonságos! If (!$kapcsolat) { print mysql_error(); }
VI. Feladat Használjuk fel az előbb tanult függvényt a kapcsolódás ellenőrzéséhez!
Adatbázis kiválasztása Mysql_select_db(<adatbázisnév); Pl. Mysql_select_db(‘proba’); Ez működik a USE parancs helyett mysql alatt.
Lekérdezések futtatása Mysql_query(<sql_utasítás>,<kapcsolat>); Pl. Mysql_query(‘select * from szemelyek;’,$kapcsolat); Egy eredmény erőforrást ad vissza ez a függvény ill. False-t ha valami hiba történt (mysql_error() !). $eredmeny=mysql_query(...);
Eredmény feldolgozása Mysql_fetch_assoc(<eredmény_sor>); Pl. Mysql_fetch_assoc($eredmeny); Ez vagy egy tömböt ad vissza amiben elérhető a lekérdezett rekord vagy pedig false-t (ha elfogytak a rekordok).
VII. Feladat Írjunk egy egyszerű lekérdezést, futtassuk le a serveren majd írjuk ki az eredményül kapott rekordokat!
Php és MySql Die(<szöveg>); A program futása leáll, a szöveg kerül kiírásra.
Ömlesztve MAX, MIN, COUNT ORDER BY, DESC DISTINCT LIKE, BETWEEN, IN GROUP BY JOIN, FOREIGN KEY ALTER TABLE