[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.