[Přehrávání hudby] DOUG LLOYD: V našich videí na témata, vývoj webových aplikací, jsme se zmínil koncepci databáze několikrát, že jo? Takže databáze jste pravděpodobně znát z říkají, pomocí aplikace Microsoft Excel nebo Google Spreadsheets. Je to opravdu jen organizovaný sada tabulek, řádků a sloupců. A je databáze, kde našich webových stránek prodejny informace, které jsou důležité na našich webových stránkách pracovat správně. Opět platí, že skutečně společný příkladem je ukládání uživatelských jmen a hesel v databázi, tak, že když přihlášení uživatele do našich webových stránkách, databáze může být dotazovány vidět v případě, že uživatel existuje v databázi. A pokud jsou, ověřit, že Jejich heslo je správné. A pokud je jejich heslo je správné, pak jim můžeme dát cokoliv strana jsou to požádá. Takže jste pravděpodobně opět obeznámený s touto myšlenkou z aplikace Excel nebo Google Tabulek. Máme databází, stoly, řádky a sloupce. A to je opravdu druh základního souboru hierarchického členění zde. Takže tady je tabulkový procesor Excel. A pokud jste někdy otevřeli nebo jiný podobný program víte, že to zde rows-- 1, 2, 3, 4, 5, 6, 7. To jsou sloupy. Možná, že tady dole, i když může být Není tuto funkci používat strašně much-- Budu zoom in-- máme Tato myšlenka listu. Takže možná těchto listů, pokud I střídavě tam a zpět, jsou různé tabulky, které existují v mé databázi. A pokud budeme pokračovat příklad všechny ta cesta, název této databáze je Kniha 1. Možná mám Kniha 2 a 3 knihy. Takže každý soubor Excel je databáze, každý list je tabulka, a uvnitř každé tabulky mám Tato myšlenka řádků a sloupců. Tak jak jsem se pracovat s touto databází? Jak získám informace z něj? No tam je jazyk s názvem SQL-- které jsem obvykle jen zavolat Sequel-- a to stojí pro Structured Query Language. A to je programovací jazyk, ale je to poměrně omezené programování jazyk. Není to úplně jako ostatní že jsme pracovali s. Ale účel tohoto programovací jazyk je dotaz databáze, aby zeptejte se informace z databáze, naleznete informace v databázi, a tak dále. Také jsme v CS50-- a je to velmi společná platforma, je to jen MySQL. To je to, co používáme v průběhu. Je to open source platforma, která stanoví takzvaný relační database-- databáze, efektivně. Nepotřebujeme, aby si do přílišných podrobností na to, co relační databáze. Ale jazyk SQL je velmi zběhlý v práci s MySQL a jiná podobná styly relačních databází. A mnoho instalace MySQL přijít s něčím volal phpMyAdmin, který je grafické uživatelské interface-- a GUI-- který dělá to trochu víc uživatelsky přívětivý spustit databázové dotazy, proto, že databáze nejsou právě používány pokročilými programátory, že jo? Někdy tam jsou Tyto malé a střední podniky, a oni si nemohou dovolit najmout tým programátorů, ale stále potřebujete uložit informace v databázi. Něco jako phpMyAdmin je pro někoho je velmi snadné kteří nikdy předtím naprogramované vyzvednout a seznámit se s tím, jak pracovat s databází. Problém je v tom, phpMyAdmin, zatímco to je fantastický nástroj pro učení o databáze, je manuální. Budeš muset přihlásit do to a provádět příkazy a typ věci ručně. A jak víme z našich Příklad na PHP webové programování, museli ručně udělat věci na našich webových stránkách, Chceme-li dynamická, aktivní citlivý webové stránky, možná ne nejlepší přístup. Chtěli bychom najít způsob, jak snad to nějak zautomatizovat. A SQL nám umožní udělat. Takže když jdeme začít pracovat s SQL, musíme nejprve mít Databáze pracovat. Vytvoření databáze je něco, co pravděpodobně bude dělat v phpMyAdmin, protože budete potřebovat pouze to udělat jednou, a syntax za to je mnohem přímočařejší. Je to mnohem snazší dělat to v grafického uživatelského rozhraní než psát to jako příkaz. Příkaz může dostat trochu těžkopádné. Podobně, vytvoření tabulky může dostat trochu těžkopádné stejně. A tak se věci, jako je vytvoření databáze a vytvoření tabulky, který, kterou jste pravděpodobně jen dělat once-- jednou za tabulkou, jednou za database-- je to v pořádku k tomu, že v grafické rozhraní. V procesu vytvoření tabulky, budete Také je třeba zadat všechny sloupce, které budou v této tabulce. Jaký druh informací dělat Chcete-li uložit v tabulce? Možná, že jméno uživatele a datum narození, heslo, ID číslo uživatele, a možná město a stát, že jo? A pokaždé, když chceme přidat uživatele do databáze, chceme dostat všech šest z těchto částí informací. A děláme, že přidáním řádků. Tak jsme nejprve vytvořit databázi, Pak jsme se vytvořit tabulku. V rámci vytvoření stůl, jsme požádáni určit, že každý sloupec Rádi bychom v této tabulce. A pak, jak začneme přidávat Informace do databáze a vyhledávat v databázi více generally-- nejen přidávat, ale všechno ostatní jsme do-- budeme zabývat s řádky v tabulce, která je jednou Informace o uživateli z celého setu. Takže každý SQL sloupec je schopen držení dat určitého typu dat. Takže jsme nějak eliminovat tento Myšlenka datových typů v PHP, ale jsou zpátky v SQL. A je tu spousta datových typů. Tady je jen 20 z nich, ale to není ani všechny z nich. Takže máme nápady jako INTs-- Integers-- jsme asi víte, že tento sloupec může držet celá čísla. A tam jsou variace thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. Možná, že ne vždy potřebovat čtyři sousta. Možná potřebujeme osm bytů, a tak jsme Můžete použít tyto variace na celá čísla být trochu více prostoru efektivnější. Můžeme si dělat, desetinná čísla, my může dělat s plovoucí desetinnou čárkou. To jsou dost podobné. Tam jsou některé rozdíly, a pokud by vypadat zřizuje SQL druh průvodce, budete může vidět, co mírný rozdíly mezi nimi. Možná, že chceme uložit informace o datu a čase. Možná jsme sledování když se uživatel připojil naše webové stránky, a tak možná chceme mít sloupec, který je čas datum nebo časové razítko, která indikuje, zda je uživatel skutečně přihlásil. Můžeme si dělat, geometrií a linestrings. To je vlastně docela v pohodě. Mohli bychom zmapovat Zeměpisná oblast použití GIS souřadnic na pozemek mimo oblast. Takže můžete skutečně uložit takový druh informací v SQL sloupci. TEXT je jen obří puntíky textu, možná. Výčty jsou docela zajímavé. Jsou to vlastně existují v C. Nemáme mluvit o nich, protože to nejsou strašně běžně používají, alespoň CS50. Ale je to výčtového typu dat, která je schopna pojmout omezené hodnoty. Opravdu dobrý příkladem by zde vytvořit ENUM, kde se sedmi možné hodnoty jsou neděle, pondělí, Úterý, středa, čtvrtek, pátek, Sobota, že jo? Tento typ dat den Týden neexistuje, ale mohli bychom vytvořit výčtového typu dat, jako že sloupec může jen někdy držet jeden z těchto sedmi možných hodnot. Jsme vyjmenovány všechny z možných hodnot. Pak máme CHAR a VARCHAR, A já jsem barvu těchto zelených proto, že jsme vlastně bude trvat druhý mluvit o rozdílu mezi těmito dvěma věcmi. Takže CHAR, na rozdíl od C kde CHAR byl jediný znak, v SQL CHAR odkazuje pevné délka řetězce. A když jsme se vytvořit tento sloupec, jsme vlastně lze určit délku řetězce. Takže v tomto příkladu, mohli bychom říci, char (10). To znamená, že každý prvek tohoto sloupce se bude skládat z 10 bytů informací. Ne více, ne méně. Takže když se snažíme dát do 15 bit nebo 15 znak element nebo hodnoty do tohoto sloupce, jsme jen dostat na první 10. Dáme-li do dvou znak dlouhá hodnota, budeme mít dva znaky, a pak osmi null kousnutí. Nikdy být účinnější než to. Varchar je něco jako Naše představa řetězce že jsme obeznámeni se z C, nebo z PHP. Je to proměnná délka řetězce. A při vytváření Tento sloupec, který jste právě určit maximální možné délky. Takže možná 99 nebo běžně 255. To by maximální délka. A tak, když jsme byli skladování 15 řetězec znaků, bychom použili 15 bajtů, možná 16 bajtů pro null zakončení. Pokud bychom byli ukládání Tři řetězec znaků, bychom použili tři nebo čtyři bajty. Ale my nebude používat plnou 99. Tak proč bychom mít obojí? No, pokud budeme potřebovat zjistit, jak dlouhá je něco s VARCHAR, musíme druhu iterovat přes to stejně jako jsme to udělali v C a zjistit, kde se zastaví. Vzhledem k tomu, když víme, že všechno V tomto sloupci je 10 bajtů, možná víme, že informace, můžeme skákat 10 bajtů, 10 bajtů, 10 bajtů, 10 bajtů, a vždy najít začátku řetězce. Takže můžeme mít některé zbytečný prostor s char, ale možná je tu obchod off mít vyšší rychlost navigaci databáze. Ale možná chceme, Flexibilita VARCHAR místo having-- Pokud náš CHAR bylo 255, ale většina našich uživatelů byly zadávání pouze tři nebo čtyři byty hodnota informací nebo tři nebo čtyři znaky v hodnotě informací. Ale někteří uživatelé používali celá 255, možná VARCHAR by bylo vhodnější tam. Je to jakýsi kompromis, a obecně pro účely CS50, nemusíte příliš starat o zda používáte CHAR nebo VARCHAR. Ale v reálném světě, tyto věci to jedno, protože všechny z těchto sloupců zabírají skutečný fyzický prostor. A fyzický prostor, ve reálném světě, přichází na prémie. Takže jednoho dalšího zvážení když stavíte tabulku je vybrat jeden sloupec být co se nazývá primární klíč. A primární klíč je sloupec kde každý hodnota je jedinečná. A to znamená, že můžete snadno vybrat jeden řádek pouhým pohledem na primární klíč tohoto řádku. Tak například, že Obecně platí, že s uživateli, Nechceme dva uživatele, kteří mají stejné ID uživatele číslo. A tak možná budete mít Množství informací, a možná i dva uživatelé mohou mají stejný name-- Máte John Smith a John Smith. To nemusí být problém, protože tam jsou více lidí ve světě jménem John Smith. Ale my máme jen jedno uživatelské ID číslo 10, jeden uživatel ID číslo 11, 12, 13. Nemáme dva uživatele se stejným číslem, a tak možná identifikační čísla uživatel by byl dobrý primární klíč. Nemáme žádnou zdvojování, a můžeme nyní jedinečně identifikovat každý řádek právě při pohledu na tento sloupec. Volba primární klíče může vlastně aby následné operace tabulky mnohem jednodušší, protože můžete využít skutečnost, že některé řádky budou být jedinečný, nebo určitá sloupec z vaší databáze nebo tabulky bude unikátní vybrat out zvláštní řádky. Můžete mít také společný primární klíč, který můžete najít příležitost k použití, který je jen kombinace dvou sloupců, které je zaručeno, že je jedinečný. Takže možná máte jeden Sloupec, který je As a Bs, jeden sloupec, který je jeden, dva, a tři, ale budete jen někdy mají jediný A1, jedna A2, a tak dále a tak dále. Ale můžete mít B2, je C2, nebo A1, A2, A3, A4. Takže můžete mít více As, vícenásobné BS, ti více, více dvojky, ale můžete někdy mít pouze single A1, B2, C3, a tak dále. Tak jak jsem řekl, SQL je programovací jazyk, ale má poměrně omezenou slovní zásobu. Není to zas až tak expanzivní jako C a PHP a jiné jazyky že hovoříme v kurzu. To je více verbose jazyka, než to, co jsme mluvit o v tomto video, protože v tomto videu budeme mluvit o tom, čtyři operace, které my lze provádět na stůl. Existuje více než tohle. Můžeme dělat víc než to, ale pro naše účely, my obecně bude používat jen čtyř operations-- vložka, vyberte, aktualizujte, a odstranit. A můžete pravděpodobně intuitivně odhadnout co všechny čtyři tyto věci dělat. Ale půjdeme do trochu podrobnosti o každé z nich. Takže pro účely tohoto video, předpokládejme Máme následujících dvou tabulky v jedné databázi. Máme tabulku s názvem Uživatelé, který má čtyř columns-- číslo, uživatelské jméno, heslo, jméno a příjmení. A máme druhý stůl ve stejné databázi volal maminky, že právě ukládá informace o uživatelské jméno a matkou. Takže pro všechny příklady V tomto videu, budeme používat tuto databázi a následné aktualizace do ní. Takže řekněme, že chceme, aby přidat informace do tabulky. To je to, co dělá operace vkládání. Při vysvětlování všech tyto příkazy, jdu aby vám obecnou kostru k použití. Vzhledem k tomu, v podstatě, dotazů jdou vypadají docela podobný, jsme jen bude měnit mírně odlišné kusy informací dělat různé věci s tabulkou. Takže pro INSERT, kostry Vypadá trochu jako toto. Chceme vložit do zvláštní tabulka. Pak máme otevřené závorky a seznam sloupců že chceme dát do hodnoty. Zavřít závorky se následujících hodnot, a poté Znovu jsme se seznam hodnot Chceme, aby v tabulce. Takže příkladem by byl následující. Chci vložit do tabulky Uživatelé následující columns-- uživatelské jméno, heslo a fullname. Takže nový řádek, kde jsem uvedení v těchto třech sloupcích a my jsme dám v hodnotách Newman, USMAIL, a Newman. Takže v tomto případě, já jsem uvedení malá písmena Newman do sloupci username, heslo USMAIL, a plné jméno hlavní město N Newman do fullname kolony. Tak tady je to, co databáze vypadal jako předtím. Tady je to, co uživatelé na stůl top vypadala před jsme to udělali. Poté, co jsme to provést dotazu, jsme si to. Přidali jsme nový řádek do tabulky. Ale jednu věc si všimnout že jsem nespecifikoval, ale nějak mám hodnotu pro, což je to 12 tady. Neřekl jsem, že jsem chtěl vložit identifikační číslo tam. Chtěl jsem dát jméno, heslo, fullname. A já jsem to udělal, to je v pořádku. Ale také jsem dostal tuto 12. Proč jsem si to 12? No, to ukáže, že když se definování sloupec, který bude vaše primární klíč, který je obvykle, jak jsem řekl, ID číslo. Není to vždy nutně Bude ID číslo, ale to je obvykle dobrý nápad být nějaký celočíselnou hodnotu. Máte možnost v phpMyAdmin Při vytváření databáze nebo váš stůl nastavit, aby Sloupek automatické zvyšování. Což je opravdu dobrý nápad, pokud pracujete s primárním klíčem, proto, že chcete každou hodnotu v tomto sloupci, že je jedinečný. A pokud jste zapomněl zadat to na více než jednu osobu, nyní v situaci, kdy že sloupec už není ojedinělý. Máte dvě prázdná místa, takže můžete bez delší jednoznačné identifikaci column-- Nebo můžete již jedinečně identifikaci řádku založené na tomto sloupci. Je to ztratil všechny jeho hodnota jako primární klíč. A tak prý to, co jsem udělal Zde je nakonfigurován ID uživatele sloupec na automatický přírůstek tak, aby každý Když jsem přidat informace do tabulky, to bude automaticky dát mi hodnota primárního klíče. Tak jsem si nikdy nezapomenu na to, protože databáze bude to pro mě. Tak to je docela hezké. A tak to je důvod, proč jsme si 12 tam, protože jsem nastavit, aby sloupec až na auto přírůstek. Kdybych přidal někoho jiného to by bylo 13, když jsem přidal někdo jiný, že to bude 14, a tak dále. Takže pojďme prostě udělat ještě jednu vložení. Budeme vložit do tabulky maminky, v Zvláště, uživatelské jméno a matka sloupci hodnoty Kramer a Babs Kramer. A tak jsme měli předtím. Poté, co jsme spustit, že SQL dotaz, máme to. Přidali jsme Kramer a Babs Kramer ke stolu maminky. Tak to je vkládání. SELECT je to, co používáme k extrakci Informace z tabulky. Takže to je to, jak se dostaneme Informace z databáze. A tak SELECT příkazy se bude velmi často používán v programování. Obecná framework-- Obecně kostra vypadá takto. Vyberte sadu sloupců z stůl, a potom případně můžete zadat condition-- nebo to, co jsme se obvykle nazývají predikát, je obvykle termín používáme v SQL. Ale je to v podstatě to, co Jednotlivé řádky se chcete dostat. Chcete-li, místo toho, jak se dostat všechno, zúžit, to je místo, kde byste to udělal. A potom případně můžete také objednat podle určitého sloupce. Takže možná, že chcete mít věci seřazené abecedně založené na jednom sloupci nebo abecedně na základě druhého. Opět platí, WHERE a ORDER BY jsou volitelné. Ale oni si nejspíš useful-- zejména Kde bude užitečné zúžit takže ne dostat celou databázi zpět a muset zpracovávat, můžete jen získat kusy to, že vám záleží. Tak například, mohl bych chtít vybrat ID číslo a fullname od uživatelů. Takže to, co by to mohlo vypadat? Takže tady je moje uživatelé stůl. Chci vybrat IDNUM a fullname od uživatelů. Co mám udělat? Jdu si to. Nechtěl jsem zúžit, takže jsem získání identifikační číslo pro každý řádek a já jsem stále v plné jméno z každé řady. DOBŘE. Co když chci vybrat heslo od uživatelů WHERE-- takže teď Já jsem dodal podmínku, je predicate-- kde IDNUM je menší než 12. Takže tady je moje databáze znovu, můj Uživatelé tabulka vrchol. Co mám udělat, když chci zvolit, že informace, heslo, kde ID uživatele nebo IDNUM je menší než 12 let? Jdu si to Informace zpátky, že jo? Stává se, že je IDNUM 10, méně než 12, identifikační číslo 11 méně než 12 let. Začínám heslo pro tyto řádky. To je to, co jsem žádal. Co tohle? Co když chci vybrat hvězda z maminky tabulka, kde uživatelské jméno odpovídá Jerry? OK, vyberte hvězda je speciální druh divoké karty tzv že používáme dostat všechno. Tak říkají select uživatelské jméno čárkou matku, která se stalo, že je jediný dva sloupce této tabulky, Já si jen vybrat hvězdu a dostat vše kde uživatelské jméno odpovídá Jerry. A tak to je to, co bych si jestli jsem udělal, že konkrétní dotaz. Nyní, databáze jsou skvělé, protože umožňují nám k uspořádání informací možná o něco efektivněji než my Možná jinak. My nemusí nutně k ukládání každý relevantní údaj jednoho uživatele ve stejné tabulce. Měli jsme tam dvě tabulky. Musíme uložit Jméno Všichni jsou matky, a možná nemáme sociální zabezpečení číslo, máme jejich datum narození. To není vždy potřebovat být ve stejné tabulce. Tak dlouho, jak můžeme definovat vztahy mezi tables-- a to je místo, kde že relační Databáze termín druh pochází do play-- tak dlouho, jak můžeme definovat vztahy mezi tabulkami, můžeme nějak rozčlenit nebo abstraktní věci takovým způsobem, kde jsme jen Opravdu důležité informace staráme se o v tabulce uživatele. A pak máme pomocné informace nebo další informace v jiných tabulkách že lze připojit znovu vrátí do hlavní Uživatelé tabulka v určitým způsobem. Takže tady máme tyto dvě tabulky, ale tam je vztah mezi nimi, právo? Vypadá to, že uživatelské jméno by mohlo být něco která existuje v obyčejný mezi Tyto dva různé tabulky. A co když máme nyní situace, kdy jsme se chtějí dostat úplné jméno uživatele z tabulka uživatele, a jejich matky jméno z mateřské tabulky? Nemáme způsob, jak se dostat že jak to stojí, ne? Neexistuje jediná tabulka, která obsahuje jak celý název a jméno matky. Nemáme tuto možnost z toho, co jsme dosud viděli. A tak musíme zavést myšlenka JOIN. A se připojí jsou pravděpodobně nejvíce complex-- je to opravdu nejsložitější operace budeme mluvit o ve videu. Jsou to trochu složitější, ale jakmile se dostanete na kloub, jsou to vlastně není tak špatné. Je to jen zvláštní případ SELECT. Budeme vybrat sadu sloupce z tabulky spojování ve druhé tabulce na nějakém predikátu. V tomto případě, myslím, že o tom takhle tohle-- stůl, kdo je jeden kruh tady, tabulka dvou je další kruh tady. A že predikát část ve středu, je to něco jako, pokud si myslíte , o kterých v Vennův diagram, co to mají společného? Chceme propojit tyto dvě tabulky na základě toho, co mají společného a vytvořit tuto hypotetickou tabulku že je sloučení dvou dohromady. Tak uvidíme to v příklad a možná, že to pomůže zrušte to trochu. Takže možná budete chtít vybrat user.fullname a moms.mother od uživatelů spojování v maminky stůl v každé situaci kde uživatelské jméno sloupce je stejný mezi nimi. A to je nový syntaxe tady, tohoto uživatele. a maminky .. Pokud Dělám více tabulek spolu, mohu zadat tabulku. Dokážu rozlišit zejména pokud jde o že na tu v samém dně. Můžu rozlišit uživatelské jméno sloupec tabulky uživatelů z uživatelské jméno sloupce maminky stůl, které jsou otherwise-- kdybychom právě řekl username rovná uživatelské jméno, to není opravdu znamenat cokoliv. Chceme udělat to, kde se shodují. Takže můžu zadat tabulky a název sloupce v případě situace kde by bylo jasné, to, co mluvím. Tak to je všechno, co dělám, je, že jsem říká tento sloupec z této tabulky, a je velmi explicitní. Takže znovu, jsem volbou plné jméno a jméno matky Z tabulky uživatelů spojeny s tabulkou maminky v každé situaci kde se sdílet column-- oni sdílet uživatelské jméno pojem. Takže tady jsou tabulky, které jsme měli předtím. To je stav našeho databází tak, jak existuje právě teď. Informace jsme extrahování je to pro začátek. To je nová tabulka jdeme vytvořit kombinovat tyto spolu. A všimněte si nejsme zvýraznění Newmanova řádek v tabulce uživatele, a nejsme zvýraznění Kramerův řádek v tabulce maminky protože ani jeden existuje v jak sets-- v obou tabulkách. Jediná informace, které jsou v běžné mezi nimi je Jerry je v obou tabulkách a gcostanza je v obou tabulkách. A tak, když budeme dělat SQL JOIN, co jsme get-- a děláme vlastně si to. Je to něco jako dočasné proměnné. Je to jako hypotetický sloučení obou tabulek. Vlastně jsme si něco jako je tento, kde jsme se spojil tabulek na informace, které mají společné. Takže všimnout, že users.username a moms.username sloupec, je to přesně to samé. To byla informace, že byl v souladu od uživatelů stůl, který se maminky. A tak jsme sloučili dohromady. My jsme tady zavrhli Kramer, protože on neexistovaly v tabulce uživatelů, a my zlikvidovat Newman, protože neměl existovat v tabulce maminky. Tak tohle je hypotetický fúze pomocí JOIN provoz SELECT. A pak jsme hledali pro celé jméno uživatele a matka uživatele, a tak toto je informace, že bychom se dostali z celkového dotazu že jsme se s SELECT. Tak jsme se spojily tabulky a my se extrahuje tyto dva sloupce, a tak, že je to, co dostaneme. Ale SQL připojí jakýsi komplikovaný. Vy pravděpodobně nebudete dělat jim příliš mnoho, ale prostě mít určitou představu o skeletu že byste mohli použít k sloučení dvou Tabulky společně, pokud jste potřebovali. Poslední dva jsou bit jednodušší slibuju. Takže aktualizovat, můžeme použít UPDATE změnit údaje v tabulce. Obecný formát je UPDATE některé stůl, nastavit některé sloupec nějaké hodnoty Kde někteří predikát je splněna. Tak například, my bychom mohli chtít k aktualizaci tabulky uživatelů a nastavit heslo na Yada bla, kde identifikační číslo 10. Takže v tomto případě, my jsme aktualizaci tabulky uživatelů. ID číslo je 10 pro že první řádek tam, a chceme aktualizovat hesla tlachy. A tak to je to, co by se stalo. Je to docela jednoduché, ne? Je to jen velmi jednoduchá modifikace ke stolu. DELETE je operace jsme se odstranění informací z tabulky. DELETE FROM stolu, kde nějaký predikát je splněna. Chceme odstranit z Uživatelé stůl například kde uživatelské jméno je Newman. Můžete si asi hádat, co to bude se stalo poté, co jsme tady provést SQL dotaz, Newman je pryč od stolu. Takže všechny tyto operace, jak už jsem řekl, je velmi snadné dělat v phpMyAdmin. Je to velmi uživatelsky přívětivé rozhraní. Ale to vyžaduje manuální úsilí. Nechceme použít manuální úsilí. Chceme, aby naše programy na to pro nás, že jo? Takže bychom mohli chtít udělat tento programově. Chceme začlenit SQL a mají něco jiného, ​​aby to pro nás. Ale to, co jsme viděli, že umožňuje nás programově něco udělat? Viděli jsme PHP, že jo? To představuje některé dynamika do našich programů. A tak naštěstí, SQL a PHP hrají velmi pěkně pohromadě. K dispozici je funkce v PHP volal dotazu, které mohou být použity. A můžete předat jako parametr nebo argument do dotazu SQL dotazu, který byste chtěli spustit. A PHP bude dělat za vás. Takže poté, co jste připojeni do databáze s PHP, Jsou dva primární volby to budete dělat. Je tu něco, co nazývá MySQLi a něco, co nazývá PDO. Nebudeme zacházet do obrovský tam detail množství. V CS50 používáme PDO. Poté, co jste připojeni do databáze, vy pak může vytvořit dotazy na databázi předáním dotazy jako argumenty do funkce PHP. A když to uděláte, budete ukládat sada výsledků v asociativním poli. A my víme, jak pracovat s asociativní pole v PHP. A tak bych mohl říci něco jako tohle-- $ results-- je to v PHP-- rovná dotazu. A pak vnitřní straně Funkce dotaz tento argument že jsem kolem na dotaz že vypadá jako SQL. A v tom, že je SQL. To je řetězec dotazu, že bych Líbí se vykonat na mé databáze. A tak v červené barvě, to je PHP. To je SQL, že jsem integraci do PHP tím, že to je argument pro funkci dotazu. Chci vybrat ze CeléJméno Uživatelé kde ID číslo rovná 10. A pak možná poté, co jsem udělal, že, Mohl bych říci něco takového. Chci pro vytištění Díky zpráva pro přihlášení. A chci to interpolate-- Chci interpolovat $ výsledky CeléJméno. A tak to je, jak jsem se pracovat s tím asociativní pole, že jsem se vrátil. $ výsledky fullname by v podstatě skončit vytištění, díky za přihlášení, Jerry Seinfeld. To bylo plné jméno kde IDNUM se rovná 10. A tak všechno, co dělám je, že jsem now-- I uloženy můj dotaz, výsledky mého dotazu a výsledky v asociativním poli, a fullname je název sloupec Byla jsem pro. Takže to je můj klíč do výsledků asociativní pole, které chci. Takže díky za přihlášení, $ výsledky, fullname vytiskne, se bude držet přímo mezi těmito kudrnaté šle, Jerry Seinfeld. A budu rád vytisknout zprávu Díky za přihlášení Jerry Seinfeld. Nyní jsme pravděpodobně nebudete chtít tvrdě Kód věci jako, že v, že jo? My bychom mohli udělat něco takového tisku f, kde můžeme nahradit a možná shromažďovat různé informace, nebo možná mají proces dotazu různé informace. A tak dotazu, funkce dotazu má Toto pojetí druhu substitucí velmi podobné pro tisk f procent s a procento c, je otazníky. A můžeme použít otázku značky velmi analogicky tisknout f nahradit proměnných. Takže možná si uživatel přihlášen dříve, a jste uložili své uživatelské identifikační číslo v $ _SESSION PHP Super globální v klíčovém ID. Takže možná poté, co se přihlásíte, Nastavíte $ _SESSION ID rovná 10, extrapolace z příkladu jsme právě viděli před vteřinou. A tak, když jsme vlastně spustit Tento dotaz výsledky nyní, to by připojit 10, nebo cokoliv ID hodnota $ _SESSION je. A tak, že nám umožňuje být trochu dynamičtější. Nejsme tvrdě kódování věci ještě. Šetříme informace někde a pak můžeme tyto informace znovu použít k nějak zobecnit, co chceme dělat, a jen plug-in a změny chování naší stránce základě toho, co identifikační číslo uživatele ve skutečnosti je poté, co jsem přihlášen. Je také možné, i když, že nastavit vaše výsledky se může skládat z více řadách. V takovém případě máte Řada arrays-- Pole asociativních polí. A stačí iterovat to. A my víme, jak iterovat přes pole v PHP, že jo? Takže zde je pravděpodobně nejvíce složitá věc, kterou jsme dosud viděli. Je to vlastně integruje tři jazyky dohromady. Zde v červené barvě, to je nějaký HTML. Jsem prý starting-- to je úryvek nějakého HTML, které mám. Začínám nový odstavec, který říká, že maminky z televizoru Seinfeld. A pak hned nato Začínám tabulku. A pak po to, že jsem nějaké PHP, že jo? Mám všechny tyto PHP kód tam. Já zřejmě bude dělat dotaz. A aby dotaz, budu být pomocí SELECT matky od maminky. Takže tohle je getting-- je to SQL. Takže modrá je SQL. Červená jsme viděli druhý před byl HTML. A zelená tady je PHP. Takže dělám dotaz do mé databáze, já jsem výběru všech matek v tabulce maminky. Nejen zúžení dolů na konkrétní řadové, ptám pro všechny z nich. Pak jsem se zkontrolovat, zda výsledek je Není rovni rovná false. To je jen můj způsob, jak kontrolovat sort of-li výsledky není rovna NULL, že bychom vidět C po dobu např. V podstatě je to jen kontrolovat, aby se jistý, že to vlastně dostal data zpět. Protože nechci, aby zahájení tisku out údajů, pokud jsem nedostal žádné údaje. Pak pro každou výsledků v důsledku toho foreach syntaxe z PHP, všechno, co dělám tiskne z $ result matky. A tak budu mít soubor ze všech matek each-- je to pole asociativní arrays-- a já jsem vytištění každý z nich jako vlastní řádek tabulky. A to je opravdu dost Kolik všechno, co je k tomu. Vím, že je to trochu bit tady děje V tomto posledním příkladu s polí arrays-- pole asociativních polí. Ale to opravdu jen vaří v SQL k tomu, že dotaz, obvykle výběru poté, co jsme již vložit informace do tabulky, a pak už jen vytažením. A to je, že jsme se ho vytáhnout v tomto konkrétním případě. Rádi bychom extrahovat všechny jedince matek z tabulky maminky. Máme celou řadu z nich, a my jsme Chcete iterovat a vytisknout každý. Takže znovu, toto je pravděpodobně nejkomplikovanější příklad viděli jsme, protože jsme míchání tři různé jazyky spolu, ne? Opět platí, že máme HTML zde v červené barvě, ve směsi s některými SQL tady v modré barvě, ve směsi s některými PHP v zelené barvě. Ale všechny tyto hrají pěkně pohromadě, je to jen otázka rozvíjení dobré návyky tak, že můžete získat je pracovat společně tak, jak chcete. A jediný způsob, jak skutečně to udělat je cvičit, cvičit, cvičit. Jsem Doug Lloyd, je to CS50.