>> [Zenelejátszási]
DOUG LLOYD: A mi videók A web fejlesztési témák,
mi már említettem a koncepció egy adatbázis egy párszor, ugye?
Tehát egy adatbázis te Valószínűleg megszokhatta
mondjuk a Microsoft Excel vagy Google Táblázat.
Ez tényleg csak egy szervezett táblacsoportban, sorokat és oszlopokat.
>> És egy adatbázis, ahol honlapunkon üzletek
információ, amely fontos a honlapunkat, hogy működjön.
Ismét egy nagyon gyakori példa itt tárol, felhasználónevek és jelszavak
egy adatbázisban, hogy amikor a felhasználó belép a honlapunkon,
Az adatbázis lehet kérdezni, hogy Ha a felhasználó létezik az adatbázisban.
És ha igen, annak ellenőrzése, hogy a jelszó helyes.
És ha a jelszó helyes, akkor tudunk adni nekik, amit az oldal
ők kérő.
>> Szóval akkor valószínűleg ismét ismerős ezzel az ötlettel Excel vagy Google
Táblázatok.
Van adatbázisok, táblázatok, sorok és oszlopok.
És ez valóban egyfajta Az alaphalmaz
hierarchikus bontás itt.
Tehát itt egy Excel táblázatot.
És ha valaha is megnyitotta ezt vagy más hasonló programot
Tudja, hogy ezek itt vannak rows-- 1, 2, 3, 4, 5, 6, 7.
Ezek oszlopok.
>> Talán itt lent, bár lehet, Nem használhatja ezt a funkciót rettenetesen much--
Majd zoom in-- van ez a gondolat a lap.
Így talán ezek a lapok, ha I. felváltva oda-vissza,
Különböző táblázatok létezik az adatbázis.
És ha továbbra is a példát minden Apropó, a neve az adatbázisban
az 1. könyv.
Talán van Book 2 és 3. könyv.
Így minden Excel fájl egy adatbázis, minden lapon egy táblázat,
és azon belül az egyes táblázatok én ez a gondolat a sorok és oszlopok.
>> Nos, hogyan dolgoznak az adatbázisban?
Hogyan információt szerezni belőle?
Hát van egy nyelv úgynevezett SQL-- amit általában csak hívja Sequel--
és ez áll a Structured Query Language.
És ez egy programozási nyelv, de ez egy meglehetősen kevés programozási
nyelv.
Ez nem egészen olyan, mint mások hogy dolgoztunk együtt.
De a célja ennek programozási nyelv
az, hogy egy adatbázisból, hogy kérjen információt egy adatbázis,
információt találni a adatbázis, és így tovább.
>> Mi is, a CS50-- és ez egy nagyon közös platform, úgy hívják MySQL.
Ez az, amit használni során.
Ez egy nyílt forráskódú platform, amely megállapítja
egy úgynevezett relációs database-- egy adatbázis, hatékonyan.
Nem kell, hogy hogy túlságosan a részletekbe
milyen egy relációs adatbázis.
De az SQL nyelv Nagyon ügyesen dolgozik
MySQL és más hasonló stílusok relációs adatbázisok.
>> És sok létesítmények MySQL jön valami
nevű phpMyAdmin, amely egy grafikus felhasználói
interface-- egy GUI--, hogy teszi, hogy egy kicsit több,
felhasználóbarát, hogy végre adatbázis-lekérdezések,
mert adatbázisokat nem csak használt a fejlett programozók, ugye?
Néha vannak ezek a kis vállalkozások,
és nem engedhetik meg maguknak, hogy bérel egy csapat programozó,
de még így is meg kell tárolni információkat egy adatbázisban.
>> Olyasmi, mint a phpMyAdmin nagyon könnyűvé teszi valaki
aki soha nem programozott, mielőtt a felvenni és megismerjék, hogyan
dolgozni egy adatbázis.
A probléma az, phpMyAdmin, míg ez egy fantasztikus eszköz a tanulás
mintegy adatbázisokban, manuális.
Fogsz van, hogy jelentkezzen be , és futtatni parancsokat és típusa
dolgokat kézzel.
>> És mint tudjuk, a mi Például a PHP programozás,
kézzel kellene tenni dolgokat honlapunkon,
ha azt akarjuk, dinamikus, aktív reagáló honlapján, talán nem a legjobb megoldás.
Szeretnénk megtalálni a módját, hogy Talán automatizálni ezt valahogy.
És az SQL lehetővé teszi számunkra, hogy ezt.
Tehát amikor megyünk kezdeni dolgozni SQL,
először szükség van egy adatbázis dolgozni.
Adatbázis létrehozása is Valamit, amit talán
fog tenni phpMyAdmin, mert akkor csak be kell, hogy ezt egyszer,
és a szintaxis erre sokkal egyszerűbb.
Ez sokkal könnyebb csinálni egy grafikus felhasználói felület
mint a gépelés ki, mint egy parancs.
A parancs egy kicsit nehézkes.
Hasonlóképpen, ami egy tábla is kap egy kicsit nehézkes is.
És így a dolgok, mint adatbázis létrehozása illetve tábla létrehozása, amely maga
Valószínűleg csak csinálni once-- egyszer asztal, egyszer database--
nem baj, hogy ezt, hogy egy grafikus felületen.
A folyamat során a tábla létrehozása, akkor
is, hogy megadjuk a oszlopok lesznek a táblázatban.
Milyen információkra van szeretné tárolni a táblázatban?
Talán a felhasználó nevét és születési dátumát, jelszó, felhasználói azonosító számát, és talán
város és állam, ugye?
>> És minden alkalommal, amikor akarja adni a felhasználó az adatbázis, azt akarjuk, hogy mind a hat
ezen információkat.
És ezt tesszük hozzáadásával sorok az asztalra.
Tehát először hozzon létre egy adatbázist, akkor automatikusan létrejön egy asztalt.
Létrehozásának részeként egy asztal, akkor arra kérjük,
megadni minden oszlopban, hogy Szeretnénk ebben a táblázatban.
Aztán ahogy elkezdjük felvenni információt az adatbázisban
és lekérdezi az adatbázist több generally-- nem csak hozzátéve,
de minden mást do-- leszünk foglalkozó
sorok a táblázat, amely az egyik felhasználó adatait a teljes készlet.
>> Szóval minden SQL oszlopban képes az adatokat tároló egy bizonyos típusú adatokat.
Tehát egyfajta megszüntette ezt ötlete adattípusok PHP-
de ők vissza ide SQL-ben.
És van egy csomó adat típusok.
Itt csak 20 közülük, de ez nem is mindet.
Tehát van ötletekkel, mint INTs-- Integers-- azt valószínűleg tudja,
hogy ez az oszlop fér egészek.
És vannak eltérések thereon-- Smallint, tinyint, MEDIUMINT, BIGINT.
Talán nem kell mindig négy harap.
Talán meg kell nyolc byte, és így Ezekkel a variációk egészek
hogy egy kicsit több helyet hatékony.
Tehetünk decimális számokat, tehetünk lebegőpontos számok.
Ezek elég hasonlóak.
Vannak különbségek, és ha lenne
Szeretem, hogy néz ki a SQL egyfajta útmutató, akkor
láthatjuk, milyen enyhe különbségek közöttük.
>> Talán azt akarjuk tárolni információkat dátumot és az időt.
Talán mi vagyunk nyomon követését, ha a felhasználó csatlakozott a honlapunkon,
és így talán azt akarjuk, ha az oszlop, ami
dátum idő vagy időbélyeg, hogy jelzi, ha a felhasználó valójában
iratkozott fel.
Tehetünk geometriával és linestrings.
Ez tulajdonképpen elég jó.
Mi lehetne feltérképezni a földrajzi térség
GIS-koordinátákkal ábrázolni ki egy területet.
Tehát valóban tárolni az efféle Az adatokat egy SQL oszlopban.
>> SZÖVEG csak hatalmas foltok a szöveget, talán.
Enum is elég érdekes.
Ők valóban léteznek C. Mi nem róluk beszélni, mert ők nem
szörnyen általánosan használt, legalább CS50.
De ez egy felsorolt ​​adatok típusát, amely képes a gazdaság korlátozott értékeket.
>> Egy igazán jó példa lenne hogy hozzon létre egy enum, ahol a hét
lehetséges értékek vasárnap, hétfő, Kedd, szerda, csütörtök, péntek,
Szombat, ugye?
Ugyanilyen típusra napja Hét nem létezik,
de nem tudtunk létrehozni felsorolt ​​adatok típusát, mint
hogy az oszlop mindig csak tartsa az egyik a hét lehetséges értékeket.
Már felsorolt ​​valamennyi A lehetséges értékek.
>> Aztán ott van CHAR és VARCHAR, és én már színes Ezen zöld
mert mi vagyunk valójában fog tartani egy második
beszélni a különbség e két dolog között.
Szóval KAR, ellentétben a C, ahol CHAR volt egyetlen karakter,
SQL egy CHAR utal fix hosszúságú karakterlánc.
És amikor létre ezt oszlop, valójában
megadhatja a string hossza.
>> Tehát ebben a példában, mondhatnánk CHAR (10).
Ez azt jelenti, hogy minden eleme, hogy oszlop
áll 10 byte információt.
Nem több, nem kevesebb.
Tehát, ha megpróbáljuk, és hozott egy 15 bites vagy 15 karakter elem
vagy értéket ebbe az oszlopba, mi csak kap az első 10.
Ha teszünk a két karakter hosszú értéke,
megyünk, hogy a két karaktereket, majd nyolc null harap.
Mi soha nem lesz hatékonyabb, mint ezt.
>> A VARCHAR olyan, mint a fogalom egy string
hogy vagyunk tisztában A AC vagy PHP.
Ez egy változó hosszúságú karakterlánc.
És amikor létrehoz Ebben az oszlopban, csak
adja meg a maximális lehetséges hosszúságú.
Így talán 99 vagy gyakran 255.
Ez lenne a legnagyobb hossza.
És így ha mi tárolására 15 karaktersor,
szeretnénk használni 15 bájt, talán 16 byte a null terminátor.
Ha mi tárolására három karaktersor,
mi lenne három vagy négy bájt.
De akkor nem használja a teljes 99.
>> Szóval miért is van mindkettő?
Nos, ha kell kitalálni, hogyan Hosszú valami egy VARCHAR,
van, hogy a fajta iterate szerte, mint ahogyan tette C
és kitalálni, ahol megáll.
Mivel ha tudjuk, hogy mindent ebben az oszlopban pedig 10 bájt, talán
tudjuk, hogy információt tudunk ugrani 10 bájt, 10 byte, 10 byte, 10 bájt,
és mindig megtalálja a sor elejére.
>> Tehát lehet, hogy elpazarolt hely egy CHAR,
de talán van egy kereskedelmi off, hogy jobb sebességet
a navigációt az adatbázisban.
De talán azt akarjuk, rugalmasságát VARCHAR
ahelyett having-- Ha a CHAR volt 255, de a legtöbb felhasználó
csak megadásával három vagy négy bájt értékű információt, három vagy négy
karakterek értékű információkat.
>> De néhány felhasználókat arra használ az egész 255, talán
VARCHAR megfelelőbb lenne ott.
Ez egyfajta kompromisszum, és Általában céljából CS50,
Önnek nem kell túlságosan aggódnunk hogy használ-e CHAR vagy VARCHAR.
De a valós világban, ezek a dolgok nem baj, mert az összes ilyen oszlopok
vegye fel tényleges fizikai hely.
És a fizikai tér, a világban, jön egy prémium.
>> Tehát egy másik szempont ha építünk egy asztal
az, hogy vegye egy oszlopban lenni egy úgynevezett elsődleges kulcsot.
És elsődleges kulcs egy oszlopban ahol minden egyes értéke egyedülálló.
És ez azt jelenti, hogy könnyedén válasszon ki egy egysoros ránézésre
az elsődleges kulcsa, hogy a sorban.
Így például, ha általában a felhasználók,
Nem szeretnék két felhasználók, akik ugyanaz a felhasználói azonosító számát.
És így talán van sok információt,
és talán két felhasználók van egyforma name--
Van John Smith és John Smith.
Ez nem feltétlenül jelent problémát, mert vannak többen
A világ John Smith.
De már csak egy felhasználói azonosító száma 10, egy, a felhasználó azonosító száma 11, 12, 13.
Nincs két felhasználó az azonos számú,
és így talán felhasználói azonosító számok lenne egy jó elsődleges kulcsot.
>> Nem kell az átfedéseket, és most már egyértelműen
azonosítani minden egyes sorban csak nézi az oszlop.
Választott elsődleges kulcsok ténylegesen utólagos asztal műveletek
Sokkal könnyebb, mert akkor a tőkeáttétel az a tény, hogy bizonyos sorok lesz
egyedinek kell lennie, vagy egy bizonyos oszlop az adatbázis vagy asztalra
egyedi lesz, hogy vegye a konkrét sorokat.
>> Akkor is van egy közös primer kulcsot, amely lehet találni alkalmából
használható, amely csak egy kombináció két oszlopot,
garantáltan egyedi.
Így talán van egy oszlop, ami AS és BS,
egy oszlop, ami egy, kettő, és három, de akkor mindig csak
egyetlen A1, egyetlen A2, és így tovább, és így tovább.
De lehet, hogy egy B2, a C2, vagy egy A1, A2, A3, A4.
Szóval lehet, hogy több néven, több Bs, több is, több kettesével,
de akkor mindig csak egy Egyetlen A1, B2, C3, és így tovább.
Szóval, mint mondtam, SQL egy programozási nyelv,
de van egy meglehetősen korlátozott szókészletet.
Ez nem elég kiterjedt, mint C és a PHP és más nyelveken
hogy beszélünk során.
Ez még bővebb a nyelven, mint amit mi
fog beszélni ebben a videót, mert ez a videó
fogunk beszélni négy műveletet, hogy mi
végezhet az asztalra.
>> Jelenleg több mint ezt.
Ennél többre vagyunk képesek, mint ez, de a mi szempontunkból,
mi általában lesz használva Mindössze négy operations-- betét,
SELECT, UPDATE, és törölje.
És akkor talán ösztönösen hiszem mi mind a négy ezeket a dolgokat csinálni.
De elmegyünk egy kicsit részletességgel mindegyik.
>> Tehát jelen videó, tegyük fel,
Megvan a következő két asztalok egy adatbázisban.
Van egy asztal nevű felhasználó, amely Négy columns-- azonosító száma, felhasználónév,
jelszót, és teljes nevét.
És van egy második asztal ugyanabban az adatbázisban
nevű Moms, hogy csak az adatokat tárolja körülbelül egy felhasználónevet és egy anya.
Tehát az összes példák ez a videó, akkor
használja az adatbázisban, és további frissítések is.
Tehát mondjuk azt akarjuk, hogy Adatok felvétele asztalra.
Ez az, amit a betét működését teszi.
Magyarázatában minden Ezeket a parancsokat, megyek
hogy ön egy általános csontváz használni.
Mivel alapvetően a lekérdezések folynak megjelenés szép hasonló,
mi csak fog változni kissé eltérő információkat
hogy különböző dolgokat az asztalra.
>> Tehát INSERT, a csontváz úgy néz ki, olyan, mint ez.
Mi akar szúrni az adott táblán.
Aztán van egy nyitott zárójel és egy lista az oszlopok
hogy akarjuk helyezni értékeket.
Bezár zárójelben következő értékeket, majd
ismét felsoroljuk az értékeket akarjuk helyezni a táblázatban.
>> Tehát egy példa erre a következő lenne.
Azt akarom, hogy helyezze be a táblázatba a felhasználók a következő columns--
felhasználónév, jelszó, és fullname.
Tehát egy új sor, ahol leteszem E három oszlop és mi vagyunk
megy, hogy azokban az értékekben Newman, USMAIL, és Newman.
Tehát ebben az esetben, én vagyok amivel a kisbetűs Newman
a felhasználóneveddel oszlopban a jelszót USMAIL, és a teljes neve N betűvel
Newman a fullname oszlopot.
>> Tehát itt van, amit az adatbázis nézett ki, mint korábban.
Itt van, amit a felhasználók táblázatot a top nézett ki, mint mielőtt ezt tette.
Miután végre ezt Kérdés, megkapjuk ezt.
Felvettünk egy új sort a táblához.
De észre ezt az egy dolgot hogy nem adja meg,
de valahogy kaptam egy értéket A, ami a 12 itt.
Én nem mondtam akartam tedd azonosító száma van.
Azt akartam, hogy a felhasználóneveddel, jelszót, fullname.
És én csináltam, ez rendben van.
>> De én is kaptam ezt a 12.
Miért kaptam ezt a 12?
Nos, kiderült, hogy ha meghatározó
oszlopra, hogy lesz a elsődleges kulcsot, ami általában,
mint mondtam, egy azonosító számot.
Ez nem mindig feltétlenül lesz egy azonosítószámot,
de ez általában egy jó ötlet, hogy Valamiféle egész érték.
Van egy lehetőség a phpMyAdmin ha te létre az adatbázis
vagy az asztalon beállítani, hogy oszlopban az automatikus megnöveli.
>> Ami egy nagyon jó ötlet, ha dolgoztok egy elsődleges kulcsot,
mert azt szeretnénk, minden érték Az oszlop egyedi.
És ha elfelejti megadni ez több, mint egy személy,
most már van egy helyzet, amikor Az oszlop már nem egyedülálló.
Van két üres, így nem már egyedileg azonosítja a column--
vagy már nem tudja egyedileg azonosítani egy sorban alapuló oszlopon.
Hogy elveszett minden a értékét az elsődleges kulcsot.
>> És így látszólag mit tettem Itt van beállítva, a felhasználói azonosítót
oszlop automatikus növekmény hogy minden Mire adjunk információt az asztalhoz,
akkor automatikusan adj értékét az elsődleges kulcsot.
Tehát soha nem felejtem el csinálni, mert Az adatbázis megcsinálja nekem.
Szóval ez a fajta szép.
És ez az, amiért megkapjuk 12 ott, mert már
állítva, hogy oszlop akár automatikus növekmény.
Ha én hozzá valaki más ez lenne a 13., ha hozzáadott
valaki más lenne, 14, és így tovább.
>> Tehát lássuk csak ezt még egy szerelést.
Majd helyezze be a mamák asztalra, a Különösen a felhasználónév és anya
oszlop, az értékeket Kramer és Babs Kramer.
És így volt ez korábban.
Miután végre, hogy SQL lekérdezés, mi ez.
Már hozzá Kramer és Babs Kramer a mamák asztalra.
>> Szóval ez behelyezésével.
SELECT, amit használni kivonat információt a táblázatban.
Szóval így jutunk információkat ki az adatbázisból.
És így SELECT parancsok lesznek Nagyon gyakran használt programozási.
Az általános framework-- a általános csontváz néz ki.
Válasszon egy sor oszlopok egy táblázatot, és ezután adott esetben
megadhatja a condition-- vagy amit általában hívni egy állítmány,
Általában a kifejezést használjuk az SQL.
>> De ez alapvetően mi Különösen sorok szeretne kapni.
Ha azt szeretnénk, hogy, ahelyett, hogy mindent, keskeny le,
ez hol lenne erre.
Majd adott esetben, akkor is elrendelheti egy adott oszlopban.
Így talán azt szeretné, hogy a dolgokat rendezve betűrendben alapján egy oszlopban
vagy ABC alapján egy másik.
>> Ismét hol és ORDER BY opcionális.
De akkor valószínűleg useful-- különösen
HOL hasznos lesz leszűkíteni, így nem
kapni a teljes adatbázis-vissza kell feldolgoznia, akkor csak kap
A darab az, hogy törődsz.
Így például, talán szeretné kiválasztani Azonosító száma és fullname a felhasználóktól.
Szóval, mi ez kinézni?
Tehát itt az én felhasználók asztalra.
Azt akarom, hogy kiválassza IDNUM és FullName a felhasználóktól.
Mit fogok kapni?
Megyek, hogy ezt.
Én nem szűkül le, így nem vagyok azonosítójának számát minden sorban
és kapok a teljes Íme minden sorban.
>> OKÉ.
Mit tegyünk, ha a kiválasztott jelszó A felhasználóktól WHERE-- így most
Én vagyok hozzá egy állapot, egy predicate-- ahol IDNUM kevesebb, mint 12.
Tehát itt az én adatbázisban újra, én felhasználók asztal tetején.
Mit fogok, hogy ha azt akarom, válassza ki, hogy az információ, a jelszó,
ahol a felhasználói azonosító vagy IDNUM kevesebb mint 12?
Megyek, hogy ezt Vissza, ugye?
Előfordul, hogy IDNUM 10, kevesebb, mint 12, 11-es azonosítót kevesebb, mint 12.
Kezdek jelszavát azokat a sorokat.
Ez az, amit kértem.
Mi van ezzel?
Mit tegyek, ha ki szeretné választani világsztár az anyukák asztalhoz, ahol felhasználónevét egyenlő Jerry?
OK, válassza csillag a speciális egyfajta vad kártyát úgynevezett
hogy az általunk használt, hogy mindent.
Tehát azt mondják válasszuk felhasználónév vesszővel anya, amely
történt, hogy az egyetlen Két oszlopot ezt a táblázatot,
Én is csak válassza csillagos és mindent
ahol a felhasználónév megegyezik Jerry.
És ez az, amit szeretnék kapni ha tettem, hogy adott lekérdezés.
>> Most, adatbázisok nagy, mert lehetővé teszik
számunkra, hogy az információk talán egy kicsit hatékonyabban, mint mi
egyébként.
Mi nem feltétlenül kell tárolni minden szükséges információt,
körülbelül egy felhasználó ugyanannál az asztalnál.
Volt két asztal van.
>> Meg kell tárolni mindenki anyja neve,
és talán nincs szociális biztonság számú, már a születési dátum.
Ez nem mindig kell hogy ugyanebben a táblázatban.
Amíg tudjuk meg közötti kapcsolatok tables--
és ez az, ahol ez a relációs adatbázis távú fajta jön
a play-- ameddig tudjuk meg táblák közötti viszonyok,
akkor egyfajta felosztják vagy absztrakt dolgokat módon,
ahol már csak a Nagyon fontos információk
törődünk a felhasználó asztalra.
És akkor mi van kiegészítő információk vagy extra információt más táblákban
hogy tudunk kapcsolódni vissza a fő felhasználók tábla egy bizonyos módon.
>> Tehát itt van ez a két asztal, de van egy kapcsolat közöttük,
jobbra?
Úgy tűnik, mintha felhasználónév Lehet, hogy valami
hogy létezik a közös között E két különböző táblák.
Szóval mi van, ha most már van olyan helyzetet, ahol
szeretnénk, hogy egy felhasználó teljes nevét a felhasználó asztalra, és anyjuk
Íme az anya asztalra?
Nem kell a módját, hogy hogy ebben a formában, nem igaz?
Nincs egyetlen tartalmazó tábla mind a teljes nevét, anyja nevét.
Nem kell, hogy lehetőség attól, amit eddig láttunk.
>> És így meg kell bevezetni Az ötlet egy JOIN.
És csatlakozik valószínűleg A legtöbb complex--
ez tényleg legbonyolultabb művelet fogunk beszélni a videót.
Ők egy kicsit bonyolultabb, de ha egyszer kap a nyitjára,
ők valójában nem is olyan rossz.
Ez csak egy speciális esete a SELECT.
Fogunk válasszon egy sor oszlopok egy táblázat csatlakozás
a második táblázat néhány állítmány.
>> Ebben az esetben Gondolj bele, mint this-- asztal egyik egy kört itt,
asztal két másik kört ide.
És ez állítmány része a közepén, ez
Valahogy úgy, mint ha úgy gondolja, körülbelül olyan Venn-diagramot, mit
nem a közös bennük?
Azt akarjuk, hogy ezt a két asztalok annak alapján, amit a közös bennük
és hozzon létre ez a feltételezett asztal ez az egyesülés a kettő együtt.
Szóval majd meglátjuk, ez egy Például, és talán, hogy segítünk
takarítjuk el egy kicsit.
Így talán ki szeretné választani user.fullname és moms.mother
A felhasználóktól csatlakozott a anyukák táblázat minden helyzetben
ahol a felhasználónév oszlop ugyanaz közöttük.
És ez egy új mondattani itt, ebben a felhasználó.
és anyukák ..
Ha csinálok több tábla együtt, tudom meg táblát.
Tudom különböztetni különösen hogy a legalján van.
Tudom különböztetni a felhasználóneveddel oszlopa a felhasználók tábla
A felhasználónév oszlopa anyukák asztalra, amelyek otherwise--
ha csak azt mondta felhasználónév megegyezik felhasználóneveddel, hogy nem igazán
jelent semmit.
Azt akarom csinálni, ha azok megfelelnek.
>> Szóval adja meg a táblázat és a oszlop neve esetén olyan helyzet
ahol nem lesz egyértelmű, mit beszélek.
Szóval ez minden, amit csinálok van vagyok mondván ez az oszlop a táblázatból,
és hogy nagyon egyértelmű.
Szóval megint én vagyok kiválasztja a teljes név és az anyja neve
a felhasználók táblázat kapcsolódik egymáshoz A mamák táblázat minden helyzetben
ahol részt, hogy column-- osztoznak a felhasználónév fogalma.
>> Tehát itt van a táblákat a miénk volt.
Ez az állam a mi adatbázis, mert létezik most.
Az információs vagyunk kitermelése ez kezdeni.
Ez az új tábla megyünk létrehozásához kombinálja össze ezeket.
És észre nem vagyunk kiemelve Newman sorban a felhasználó asztal,
és mi nem kiemelve Kramer sor az anyukák táblázat
mert egyik sem létezik Mindkét sets-- mindkét táblázatban.
>> Az egyetlen információ, ami a közös köztük Jerry mindkét táblázatban
és gcostanza van mindkét táblázatban.
És így amikor mi az SQL JOIN, amit get-- és csinálunk valójában kap ez.
Ez egyfajta ideiglenes változó.
Ez olyan, mint egy hipotetikus egyesülés a két tábla.
Mi valóban kap valamit mint ez, ahol
mi már összefűzve a táblákat a információt, hogy a közös bennük.
>> Tehát észre, hogy users.username és moms.username oszlop,
ez pontosan ugyanaz.
Ez volt az információ, hogy összhangban volt a felhasználók
asztal és a mamák asztalra.
És így összevontuk őket.
Mi dobni Kramer mert Nem létezik a felhasználók tábla,
és mi dobni Newman, mert ő nem létezik a mamák asztalra.
Szóval ez a hipotetikus egyesülés használja a JOIN működését SELECT.
>> És akkor kerestünk a felhasználó teljes nevét és a felhasználó anyja,
és így ez az információ, hogy kapnánk az általános lekérdezés
hogy mi történt SELECT.
Így csatlakozott a táblákat együtt és kiemeltük a két oszlopot,
és hogy az, amit kapnánk.
De SQL csatlakozik egyfajta bonyolult.
Valószínűleg nem fog nekik túl sok, de csak néhány ötlet a csontváz
hogy akkor használja, hogy összevonja a két asztalok együtt, ha szükséges.
Az utolsó két egy kicsit egyszerűbb ígérem.
Szóval frissítése, tudjuk használni UPDATE megváltoztatni információt egy táblában.
Az általános formátum UPDATE néhány asztal, meg néhány oszlop valamilyen érték
Ahol néhány állítmány teljesül.
Így például nem árt frissíteni a felhasználók tábla
és állítsa be a jelszót, hogy blabla blabla, ahol az azonosító szám 10.
>> Tehát ebben az esetben, mi vagyunk frissíti a felhasználók asztalra.
Az azonosító szám 10 hogy első sorban ott,
és azt akarjuk, hogy frissítse a jelszó blabla.
És ez az, mi fog történni.
Ez elég egyszerű, ugye?
Ez csak egy nagyon egyszerű módosítását az asztalra.
>> Törölni a művelet szoktuk adatok eltávolításához egy asztal.
DELETE FROM asztal, ahol Néhány állítmány elégedett.
Azt akarjuk, hogy törölje a a felhasználók például az asztalra
ahol a felhasználónév Newman.
Akkor valószínűleg hiszem, hogy mi fog itt történik, miután végre, hogy az SQL
Kérdés, Newman elment az asztaltól.
>> Tehát mindezen műveletek, mint mondtam, nagyon könnyű csinálni phpMyAdmin.
Ez egy nagyon felhasználóbarát felület.
De ez nem igényel kézi erő.
Nem akarunk foglalkoztatni kézi erő.
Azt szeretnénk, programok ezt nekünk, ugye?
Tehát érdemes csinálni ez a programból.
Azt akarjuk, hogy bele SQL és valami mást csinálni ezt nekünk.
>> De mit láttunk, amely lehetővé teszi számunkra, hogy programozottan tenni valamit?
Láttuk PHP, ugye?
Bevezeti néhány dinamizálja a programokat.
És így szerencsére, az SQL és PHP játszani nagyon szépen össze.
Van egy funkció a PHP úgynevezett lekérdezés, amelyet fel lehet használni.
És akkor át a paraméter, vagy az érvet
lekérdezni SQL lekérdezést szeretne végrehajtani.
És a PHP fog tenni az Ön nevében.
>> Szóval, miután csatlakozik hogy az adatbázis PHP,
van két primer ezt megteszi.
Van egy úgynevezett MySQLi és egy úgynevezett OEM.
Mi nem megyünk bele egy hatalmas összegét részletet tartalmaz.
Ebben CS50 használjuk OEM.
Miután csatlakozik az adatbázishoz, akkor
Ezután lekérdezések az adatbázis átadásával a lekérdezések érvek
PHP függvények.
És ha ezt teszed, akkor tárolja a eredményhalmaz egy asszociatív tömbben.
>> És tudjuk, hogyan kell dolgozni asszociatív tömbök a PHP.
Szóval lehet, hogy mondjon valamit mint this-- $ results--
ez a PHP-- egyenlő lekérdezés.
És akkor belsejét lekérdezés funkció ezt az érvet
hogy én vagyok elhaladó lekérdezés úgy néz ki, mint az SQL.
És tény, hogy az SQL.
Ez a query string, hogy én is Szeretem, hogy végre én adatbázisban.
>> És így piros, ez a PHP.
Ez az SQL, hogy én vagyok integrálódva PHP azáltal, hogy
ez az érv, hogy a lekérdezés funkciót.
Azt akarom, hogy válasszon fullname re használók, ahol azonosító száma = 10.
És akkor talán miután megvagy, Lehet, hogy ilyet mondjon.
Azt akarom, hogy nyomtassa ki a Üzenet Kösz bejelentkezni.
>> És azt akarom, hogy interpolate-- akarok interpolálásához $ eredmények fullname.
És ez az, hogyan dolgozom, hogy asszociatív tömb, kaptam vissza.
$ eredmények fullname lenne Alapvetően a végén kinyomtatja,
kösz a bejelentkezés, Jerry Seinfeld.
Ez volt a teljes neve ahol IDNUM = 10.
>> És így minden, amit csinálok hogy én vagyok now-- tároltam
lekérdezésem, az eredmények az én lekérdezés és az eredményeket egy asszociatív tömbben,
és fullname a neve Az oszlop Kezdtem az.
Szóval ez az én kulcsot a találatok asszociatív tömb, ami akarok.
Tehát Kösz a bejelentkezés, $ eredmények, fullname kiírja, ragaszkodni fog
kellős között göndör nadrágtartó, Jerry Seinfeld.
És én szeretem, hogy nyomtassa ki az üzenetet Köszönöm a bejelentkezés Jerry Seinfeld.
>> Most valószínűleg nem szeretné, hogy kemény kód ilyesmi, nem?
Azt érdemes csinálni valamit, mint print f, ahol tudjuk helyettesíteni, és talán
gyűjtsük össze a különböző információkat, vagy talán van lekérdezési folyamat
különböző információkat.
És így query -ben funkció ez a fogalom egyfajta cserék
nagyon hasonló nyomtatni f százalékkal s és százalékos c, a kérdőjelek.
>> És tudjuk használni kérdést jelek nagyon hasonló módon
nyomtatni f helyettesítő változókat.
Így talán a felhasználó bejelentkezett a korábbi, és mentette a felhasználói azonosító száma
A a $ _SESSION PHP szuper globális key ID.
Szóval lehet, miután bejelentkezett, beállítja a $ _SESSION ID = 10,
levezetve a példa láttunk egy másodperccel ezelőtt.
>> És így amikor ténylegesen végre ez a lekérdezés eredményét most,
akkor csatlakoztassa a 10, vagy bármi $ _SESSION ID érték.
És úgy, hogy lehetővé teszi számunkra, hogy egy kicsit dinamikusabb.
Mi nem nehéz kódolás dolgokat többé.
Mi információk elmentése Valahol majd
tudjuk használni ezt az információt újra fajta általánosítani, mit akarunk csinálni,
és csak a plug-in és a változás viselkedését oldalunkon
annak alapján, amit a felhasználó azonosító száma valójában, miután már bejelentkezett.
Az is lehetséges azonban, hogy az eredményeket beállítva
állhat több sort.
Ebben az esetben meg kell egy sor arrays--
tömb asszociatív tömbök.
És akkor csak meg kell halad végig azt.
És tudjuk, hogyan kell ismételget a tömb PHP, ugye?
Tehát itt van talán a legnagyobb összetett dolog, amit eddig láttunk.
Ez valójában integrálja Három nyelven össze.
>> Itt a piros, ez valami HTML.
Én nyilván starting-- ez egy részlet a HTML kódot, hogy van.
Kezdek egy új bekezdést, amely mondja a mamák a TV Seinfeld.
Majd közvetlenül ezután az Kezdek egy asztalt.
És azután, hogy én Van néhány PHP, ugye?
Én már mindezt PHP kódot is.
Én nyilván fog tenni a lekérdezéshez.
És hogy a lekérdezés, megyek lennie a SELECT anyák anyukák.
>> Szóval ez getting-- ez SQL.
Tehát az a kék SQL.
A piros láttunk egy perce volt a HTML.
És a zöld itt PHP.
Úgyhogy lekérdezéssel hogy az adatbázis vagyok
kijelölte az összes anyák anyukák asztalra.
Nem csak szűkül le, hogy különösen sorban, kérek mindet.
>> Aztán ellenőrizni, ha az eredmény Nem egyenlő felek egyenlő hamis.
Ez csak az én utam az ellenőrzés egyfajta Az, ha az eredmények nem egyenlő null,
hogy látnánk c például.
Alapvetően ez csak ellenőrzi, hogy arról, hogy tényleg kapott adatokat vissza.
Mert nem akarom, hogy indítsa el a nyomtatást ki az adatokat, ha nem kaptam semmilyen adatot.
Ezután az egyes eredményeket ennek eredményeként a foreach szintaxis PHP, minden, amit csinálok
nyomtatja $ result anyák.
És így fogok kapni egy sor Az összes anyák each--
ez egy sor asszociatív arrays-- és én kinyomtatásával
mindegyiket külön sorban az asztalra.
És ez nagyon szép sok minden van hozzá.
Tudom, hogy van egy kis kicsit folyik itt
ebben az utolsó például tömbök arrays-- tömbök asszociatív tömbök.
De ez tényleg csak forraljuk megállapított SQL lekérdezéssel,
Általában kiválasztása után mi már tedd információt a táblázatba,
és aztán csak kihúzza.
>> És ez mi lenne húzza ebben a konkrét esetben.
Szeretnénk kivonat minden az egyes anyák a mamák asztalra.
Van egy egész sor őket, és mi szeretnénk, hogy halad végig, és nyomtassa ki
mindegyik.
Szóval megint, ez valószínűleg A legbonyolultabb példája
láttuk, mert mi vagyunk a keverés három különböző nyelveken együtt, ugye?
>> Ismét van HTML itt a piros, keverve némi SQL itt kék,
keverve némi PHP zöld.
De mindezen játszani szépen össze, ez
csak egy kérdés a fejlődő jó szokásokat, hogy lehet kapni
őket, hogy működjenek együtt a kívánt módon.
És az egyetlen módja annak, hogy tényleg, hogy a gyakorlás, gyakorlás, gyakorlás.
Én Doug Lloyd, ez CS50.