>> [Prehrávanie hudby]
DOUG LLOYD: V našich videí na témy, vývoj webových aplikácií,
sme sa zmienil koncepciu databázy niekoľkokrát, že jo?
Takže databázy ste pravdepodobne poznať z
hovoria, pomocou programu Microsoft Excel alebo Google Spreadsheets.
Je to naozaj len organizovaný sada tabuliek, riadkov a stĺpcov.
>> A je databáza, kde našich webových stránok predajne
informácie, ktoré sú dôležité na našich webových stránkach pracovať správne.
Opäť platí, že skutočne spoločný príkladom je ukladanie užívateľských mien a hesiel
v databáze, tak, že keď prihlásenie užívateľa do našich webových stránkach,
databázy môže byť dopytované vidieť v prípade, že užívateľ existuje v databáze.
A ak sú, overiť, že Ich heslo je správne.
A ak je ich heslo je správne, potom im môžeme dať čokoľvek strana
sú to požiada.
>> Takže ste pravdepodobne opäť oboznameny s touto myšlienkou z programu Excel alebo Google
Tabuliek.
Máme databáz, stoly, riadky a stĺpce.
A to je naozaj druh základného súboru
hierarchického členenie tu.
Takže tu je tabuľkový procesor Excel.
A ak ste niekedy otvorili alebo iný podobný program
viete, že to tu rows-- 1, 2, 3, 4, 5, 6, 7.
To sú stĺpy.
>> Možno, že tu dole, aj keď môže byť Nie je túto funkciu používať strašne much--
Budem zoom in-- máme Táto myšlienka listu.
Takže možno týchto listov, ak Aj striedavo tam a späť,
sú rôzne tabuľky, ktoré existujú v mojej databáze.
A ak budeme pokračovať príklad všetky tá cesta, názov tejto databázy
je Kniha 1.
Možno mám Kniha 2 a 3 knihy.
Takže každý súbor Excel je databázy, každý list je tabuľka,
a vo vnútri každej tabuľky mám Táto myšlienka riadkov a stĺpcov.
>> Tak ako som sa pracovať s touto databázou?
Ako získam informácie z neho?
No tam je jazyk s názvom SQL-- ktoré som zvyčajne len zavolať Sequel--
a to stojí pre Structured Query Language.
A to je programovací jazyk, ale je to pomerne obmedzené programovania
Jazyk.
Nie je to úplne ako ostatní že sme pracovali s.
Ale účel tohto programovací jazyk
je dotaz databázy, aby opýtajte sa informácie z databázy,
nájdete informácie v databázu, a tak ďalej.
>> Tiež sme v CS50-- a je to veľmi spoločná platforma, je to len MySQL.
To je to, čo používame v priebehu.
Je to open source platforma, ktorá stanovuje
takzvaný relačné database-- databázy, efektívne.
Nepotrebujeme, aby si do prílišných podrobností
na to, čo relačnej databázy.
Ale jazyk SQL je veľmi zbehlý v práci
s MySQL a iné podobné štýly relačných databáz.
>> A mnoho inštalácia MySQL prísť s niečím
volal phpMyAdmin, ktorý je grafické užívateľské
interface-- a GUI-- ktorý robí to trochu viac
užívateľsky prívetivý spustiť databázové dotazy,
preto, že databázy nie sú práve používané pokročilými programátorov, že jo?
Niekedy tam sú Tieto malé a stredné podniky,
a oni si nemôžu dovoliť najať tím programátorov,
ale stále potrebujete uložiť informácie v databáze.
>> Niečo ako phpMyAdmin je pre niekoho je veľmi ľahké
ktorí nikdy predtým naprogramované vyzdvihnúť a zoznámiť sa s tým, ako
pracovať s databázou.
Problém je v tom, phpMyAdmin, zatiaľ čo to je fantastický nástroj pre učenie
o databázy, je manuálne.
Budeš musieť prihlásiť do to a vykonávať príkazy a typ
veci ručne.
>> A ako vieme z našich Príklad na PHP webové programovanie,
museli ručne urobiť veci na našich webových stránkach,
Ak chceme dynamická, aktívna citlivý webové stránky, možno nie najlepší prístup.
Chceli by sme nájsť spôsob, ako snáď to nejako zautomatizovať.
A SQL nám umožní urobiť.
Takže keď ideme začať pracovať s SQL,
musíme najprv mať Databázy pracovať.
Vytvorenie databázy je niečo, čo pravdepodobne
bude robiť v phpMyAdmin, pretože budete potrebovať len to urobiť raz,
a syntax za to je oveľa priamočiarejšie.
Je to oveľa ľahšie robiť to v grafického užívateľského rozhrania
než písať to ako príkaz.
Príkaz môže dostať trochu ťažkopádne.
Podobne, vytvorenie tabuľky môže dostať trochu ťažkopádne rovnako.
A tak sa veci, ako je vytvorenie databázy a vytvorenie tabuľky, ktorý, ktorú ste
pravdepodobne len robiť once-- raz za tabuľkou, raz za database--
je to v poriadku na to, že v grafické rozhranie.
V procese vytvorenie tabuľky, budete
Tiež je potrebné zadať všetky stĺpce, ktoré budú v tejto tabuľke.
Aký druh informácií robiť Ak chcete uložiť v tabuľke?
Možno, že meno používateľa a dátum narodenia, heslo, ID číslo používateľa, a možno
mesto a štát, že jo?
>> A zakaždým, keď chceme pridať používateľa do databázy, chceme dostať všetkých šesť
z týchto častí informácií.
A robíme, že pridaním riadkov.
Tak sme najprv vytvoriť databázu, Potom sme sa vytvoriť tabuľku.
V rámci vytvorenia stôl, sme požiadaní
určiť, že každý stĺpec Radi by sme v tejto tabuľke.
A potom, ako začneme pridávať Informácie do databázy
a vyhľadávať v databáze viac generally-- nielen pridávať,
ale všetko ostatné sme do-- budeme zaoberať
s riadky v tabuľke, ktorá je jednou Informácie o užívateľovi z celého setu.
>> Takže každý SQL stĺpec je schopný držanie dát určitého typu dát.
Takže sme nejako eliminovať tento Myšlienka typov PHP,
ale sú späť v SQL.
A je tu veľa dátových typov.
Tu je len 20 z nich, ale to nie je ani všetky z nich.
Takže máme nápady ako INTs-- Integers-- sme asi viete,
že tento stĺpec môže držať celé čísla.
A tam sú variácie thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT.
Možno, že nie vždy potrebovať štyri sústa.
Možno potrebujeme osem bytov, a tak sme Môžete použiť tieto variácie na celé čísla
byť trochu viac priestoru efektívnejšie.
Môžeme si robiť, desatinné čísla, my môže robiť s plávajúcou desatinnou čiarkou.
To sú dosť podobné.
Tam sú niektoré rozdiely, a ak by
vyzerať zriaďuje SQL druh sprievodcu, budete
môže vidieť, čo mierny rozdiely medzi nimi.
>> Možno, že chceme uložiť informácie o dátume a čase.
Možno sme sledovanie keď sa užívateľ pripojil naše webové stránky,
a tak možno chceme mať stĺpec, ktorý je
čas dátum alebo časovú pečiatku, ktorá indikuje, či je užívateľ skutočne
prihlásený.
Môžeme si robiť, geometriou a linestrings.
To je vlastne celkom v pohode.
Mohli by sme zmapovať Zemepisná oblasť použitia
GIS súradníc na pozemok mimo oblasť.
Takže môžete skutočne uložiť taký druh informácií v SQL stĺpci.
>> TEXT je len obrie bodkami texte, možno.
Výpočty sú celkom zaujímavé.
Sú to vlastne existujú v C. Nemáme hovoriť o nich, pretože to nie sú
strašne bežne používajú, aspoň CS50.
Ale je to vymenovaného typu dát, ktorá je schopná pojať obmedzenej hodnoty.
>> Naozaj dobrý príkladom by tu vytvoriť ENUM, kde sa siedmimi
možné hodnoty sú nedele, pondelok, Utorok, streda, štvrtok, piatok,
Sobota, že jo?
Tento typ dát deň Týždeň neexistuje,
ale mohli by sme vytvoriť vymenovaného typu dát, ako
že stĺpec môže len niekedy držať jeden z týchto siedmich možných hodnôt.
Sme vymenované všetky z možných hodnôt.
>> Potom máme CHAR a VARCHAR, A ja som farbu týchto zelených
preto, že sme vlastne bude trvať druhý
hovoriť o rozdiele medzi týmito dvoma vecami.
Takže CHAR, na rozdiel od C kde CHAR bol jediný znak,
v SQL CHAR odkazuje pevné dĺžka reťazca.
A keď sme sa vytvoriť tento stĺpec, sme vlastne
možno určiť dĺžku reťazca.
>> Takže v tomto príklade, mohli by sme povedať, char (10).
To znamená, že každý prvok tohto stĺpca
sa bude skladať z 10 bytov informácií.
Nie viac, nie menej.
Takže keď sa snažíme dať do 15 bit alebo 15 znak element
alebo hodnoty do tohto stĺpca, sme len dostať na prvý 10.
Ak dáme do dvoch znak dlhá hodnota,
budeme mať dva znaky, a potom ôsmich null uhryznutie.
Nikdy byť účinnejšie ako to.
>> Varchar je niečo ako Naša predstava reťazca
že sme oboznámení sa z C, alebo z PHP.
Je to premenná dĺžka reťazca.
A pri vytváraní Tento stĺpec, ktorý ste práve
určiť maximálne možné dĺžky.
Takže možno 99 alebo bežne 255.
To by maximálna dĺžka.
A tak, keď sme boli skladovanie 15 reťazec znakov,
by sme použili 15 bajtov, možno 16 bajtov pre null zakončenie.
Ak by sme boli ukladanie Tri reťazec znakov,
by sme použili tri alebo štyri bajty.
Ale my nebude používať plnú 99.
>> Tak prečo by sme mať oboje?
No, ak budeme potrebovať zistiť, ako dlhá je niečo s VARCHAR,
musíme druhu iterovat cez to rovnako ako sme to urobili v C
a zistiť, kde sa zastaví.
Vzhľadom k tomu, keď vieme, že všetko V tomto stĺpci je 10 bajtov, možno
vieme, že informácie, môžeme skákať 10 bajtov, 10 bajtov, 10 bajtov, 10 bajtov,
a vždy nájsť začiatku reťazca.
>> Takže môžeme mať niektoré zbytočný priestor s char,
ale možno je tu obchod off mať vyššiu rýchlosť
navigáciu databázy.
Ale možno chceme, Flexibilita VARCHAR
miesto having-- Ak náš CHAR bolo 255, ale väčšina našich užívateľov
boli zadávanie iba tri alebo štyri byty hodnota informácií alebo tri alebo štyri
znaky v hodnote informácií.
>> Ale niektorí užívatelia používali celá 255, možno
VARCHAR by bolo vhodnejšie tam.
Je to akýsi kompromis, a všeobecne na účely CS50,
nemusíte príliš starať o či používate CHAR alebo VARCHAR.
Ale v reálnom svete, tieto veci to jedno, pretože všetky z týchto stĺpcov
zaberajú skutočný fyzický priestor.
A fyzický priestor, v reálnom svete, prichádza na prémie.
>> Takže jedného ďalšieho zváženie keď staviate tabuľku
je vybrať jeden stĺpec byť čo sa nazýva primárny kľúč.
A primárny kľúč je stĺpec kde každý hodnota je jedinečná.
A to znamená, že môžete ľahko vybrať jeden riadok púhym pohľadom
na primárny kľúč tohto riadku.
Tak napríklad, že Všeobecne platí, že s používateľmi,
Nechceme dvoch užívateľov, ktorí majú rovnaké ID používateľa číslo.
A tak možno budete mať Množstvo informácií,
a možno aj dvaja používatelia môžu majú rovnaký name--
Máte John Smith a John Smith.
To nemusí byť problém, pretože tam sú viac ľudí
vo svete menom John Smith.
Ale my máme len jedno užívateľské ID číslo 10, jeden používateľ ID číslo 11, 12, 13.
Nemáme dva užívateľa s rovnakým číslom,
a tak možno identifikačné čísla užívateľ by bol dobrý primárny kľúč.
>> Nemáme žiadnu duplicitu, a môžeme teraz jedinečne
identifikovať každý riadok práve pri pohľade na tento stĺpec.
Voľba primárne kľúče môže vlastne aby následné operácie tabuľky
oveľa jednoduchšie, pretože môžete využiť skutočnosť, že niektoré riadky budú
byť jedinečný, alebo určitá stĺpec z vašej databázy alebo tabuľky
bude unikátny vybrať out zvláštne riadky.
>> Môžete mať aj spoločný primárny kľúč, ktorý môžete nájsť príležitosť
na použitie, ktorý je len kombinácia dvoch stĺpcov, ktoré
je zaručené, že je jedinečný.
Takže možno máte jeden Stĺpec, ktorý je As a Bs,
jeden stĺpec, ktorý je jeden, dva, a tri, ale budete len niekedy
majú jediný A1, jedna A2, a tak ďalej a tak ďalej.
Ale môžete mať B2, je C2, alebo A1, A2, A3, A4.
Takže môžete mať viac As, viacnásobné BS, tí viac, viac dvojky,
ale môžete niekedy mať iba single A1, B2, C3, a tak ďalej.
Tak ako som povedal, SQL je programovací jazyk,
ale má pomerne obmedzenú slovnú zásobu.
Nie je to zas až tak expanzívna ako C a PHP a iné jazyky
že hovoríme v kurze.
To je viac verbose jazyka, než to, čo sme
hovoriť o v tomto video, pretože v tomto videu
budeme hovoriť o tom, štyri operácie, ktoré my
možno vykonávať na stôl.
>> Existuje viac ako toto.
Môžeme robiť viac než to, ale pre naše účely,
my všeobecne bude používať len štyroch operations-- vložka,
vyberte, aktualizujte, a odstrániť.
A môžete pravdepodobne intuitívne odhadnúť čo všetky štyri tieto veci robiť.
Ale pôjdeme do trochu podrobnosti o každej z nich.
>> Takže pre účely tohto video, predpokladajme
Máme nasledujúcich dvoch tabuľky v jednej databáze.
Máme tabuľku s názvom Používatelia, ktorý má štyroch columns-- číslo, užívateľské meno,
heslo, meno a priezvisko.
A máme druhý stôl v rovnakej databáze
volal mamičky, že práve ukladá informácie o užívateľské meno a matkou.
Takže pre všetky príklady V tomto videu, budeme
používať túto databázu a následné aktualizácie do nej.
Takže povedzme, že chceme, aby pridať informácie do tabuľky.
To je to, čo robí operácie vkladania.
Pri vysvetľovaní všetkých tieto príkazy, idem
aby vám všeobecnú kostru na použitie.
Vzhľadom k tomu, v podstate, dotazov idú vyzerajú celkom podobný,
sme len bude meniť mierne odlišné kusy informácií
robiť rôzne veci s tabuľkou.
>> Takže pre INSERT, kostry Vyzerá trochu ako toto.
Chceme vložiť do zvláštne tabuľka.
Potom máme otvorené zátvorky a zoznam stĺpcov
že chceme dať do hodnoty.
Zavrieť zátvorky sa nasledujúcich hodnôt, a potom
Znovu sme sa zoznam hodnôt Chceme, aby v tabuľke.
>> Takže príkladom by bol nasledujúci.
Chcem vložiť do tabuľky Užívatelia nasledujúce columns--
užívateľské meno, heslo a fullname.
Takže nový riadok, kde som uvedenie v týchto troch stĺpcoch a my sme
dám v hodnotách Newman, USMAIL, a Newman.
Takže v tomto prípade, ja som uvedenie malé písmená Newman
do stĺpci username, heslo USMAIL, a plné meno hlavné mesto N
Newman do fullname kolóny.
>> Tak tu je to, čo databázy vyzeral ako predtým.
Tu je to, čo používatelia na stôl top vyzerala pred sme to urobili.
Potom, čo sme to urobiť dotazu, sme si to.
Pridali sme nový riadok do tabuľky.
Ale jednu vec si všimnúť že som nešpecifikoval,
ale nejako mám hodnotu pre, čo je to 12 tu.
Nepovedal som, že som chcel vložiť identifikačné číslo tam.
Chcel som dať meno, heslo, fullname.
A ja som to urobil, to je v poriadku.
>> Ale tiež som dostal túto 12.
Prečo som si to 12?
No, to ukáže, že keď sa definovanie
stĺpec, ktorý bude vaše primárny kľúč, ktorý je zvyčajne,
ako som povedal, ID číslo.
Nie je to vždy nutne Bude ID číslo,
ale to je zvyčajne dobrý nápad byť nejaký celočíselnú hodnotu.
Máte možnosť v phpMyAdmin Pri vytváraní databázy
alebo váš stôl nastaviť, aby Stĺpik automatické zvyšovanie.
>> Čo je naozaj dobrý nápad, ak pracujete s primárnym kľúčom,
preto, že chcete každú hodnotu v tomto stĺpci, že je jedinečný.
A ak ste zabudli zadať to na viac ako jednu osobu,
teraz v situácii, keď že stĺpec už nie je ojedinelý.
Máte dve prázdne miesta, takže môžete bez dlhší jednoznačnej identifikácii column--
Alebo môžete už jedinečne identifikáciu riadku založené na tomto stĺpci.
Je to stratil všetky jeho hodnota ako primárny kľúč.
>> A tak vraj to, čo som urobil Tu je nakonfigurovaný ID užívateľa
stĺpec na automatický prírastok tak, aby každý Keď som pridať informácie do tabuľky,
to bude automaticky dať mi hodnota primárneho kľúča.
Tak som si nikdy nezabudnem na to, pretože databázy bude to pre mňa.
Tak to je celkom pekné.
A tak to je dôvod, prečo sme si 12 tam, pretože som
nastaviť, aby stĺpec až na auto prírastok.
Keby som pridal niekoho iného to by bolo 13, keď som pridal
niekto iný, že to bude 14, a tak ďalej.
>> Takže poďme jednoducho urobiť ešte jednu vloženie.
Budeme vložiť do tabuľky mamičky, v Zvlášť, užívateľské meno a matka
stĺpci hodnoty Kramer a Babs Kramer.
A tak sme mali predtým.
Potom, čo sme spustiť, že SQL dotaz, máme to.
Pridali sme Kramer a Babs Kramer k stolu mamičky.
>> Tak to je vkladanie.
SELECT je to, čo používame na extrakciu Informácie z tabuľky.
Takže to je to, ako sa dostaneme Informácie z databázy.
A tak SELECT príkazy sa bude veľmi často používaný v programovaní.
Všeobecná framework-- Všeobecne kostra vyzerá takto.
Vyberte sadu stĺpcov z stôl, a potom prípadne
môžete zadať condition-- alebo to, čo sme sa obvykle nazývajú predikát,
je zvyčajne termín používame v SQL.
>> Ale je to v podstate to, čo Jednotlivé riadky sa chcete dostať.
Ak chcete, namiesto toho, ako sa dostať všetko, zúžiť,
to je miesto, kde by ste to urobil.
A potom prípadne môžete tiež objednať podľa určitého stĺpca.
Takže možno, že chcete mať veci zoradené abecedne založené na jednom stĺpci
alebo abecedne na základe druhého.
>> Opäť platí, WHERE a ORDER BY sú voliteľné.
Ale oni si najskôr useful-- najmä
Kde bude užitočné zúžiť takže nie
dostať celú databázu späť a musieť spracovávať, môžete len získať
kusy to, že vám záleží.
Tak napríklad, mohol by som chcieť vybrať ID číslo a fullname od užívateľov.
Takže to, čo by to mohlo vyzerať?
Takže tu je moja užívatelia stôl.
Chcem vybrať IDNUM a fullname od užívateľov.
Čo mám urobiť?
Idem si to.
Nechcel som zúžiť, takže som získanie identifikačné číslo pre každý riadok
a ja som stále v plnej meno z každého radu.
>> OK.
Čo keď chcem vybrať heslo od užívateľov WHERE-- takže teraz
Ja som dodal podmienku, je predicate-- kde IDNUM je menšia ako 12.
Takže tu je moja databáza znova, môj Užívatelia tabuľka vrchol.
Čo mám urobiť, keď chcem zvoliť, že informácie, heslo,
kde ID užívateľa alebo IDNUM je menšia ako 12 rokov?
Idem si to Informácie späť, že jo?
Stáva sa, že je IDNUM 10, menej ako 12, identifikačné číslo 11 menej ako 12 rokov.
Začínam heslo pre tieto riadky.
To je to, čo som žiadal.
A čo toto?
Čo keď chcem vybrať hviezda z mamičky tabuľka, kde používateľské meno odpovedá Jerry?
OK, vyberte hviezda je špeciálna druh divoké karty tzv
že používame dostať všetko.
Tak hovoria select užívateľské meno čiarkou matku, ktorá
sa stalo, že je jediný dva stĺpce tejto tabuľky,
Ja si len vybrať hviezdu a dostať všetko
kde používateľské meno odpovedá Jerry.
A tak to je to, čo by som si či som urobil, že konkrétny dotaz.
>> Teraz, databázy sú skvelé, pretože umožňujú
nám na usporiadanie informácií možná o niečo efektívnejšie ako my
Možno inak.
My nemusí nutne k ukladaniu každý relevantný údaj
jedného užívateľa v rovnakej tabuľke.
Mali sme tam dve tabuľky.
>> Musíme uložiť Meno Všetci sú matky,
a možno nemáme sociálne zabezpečenie číslo, máme ich dátum narodenia.
To nie je vždy potrebovať byť v rovnakej tabuľke.
Tak dlho, ako môžeme definovať vzťahy medzi tables--
a to je miesto, kde že relačné Databáza termín druh pochádza
do play-- tak dlho, ako môžeme definovať vzťahy medzi tabuľkami,
môžeme nejako rozčleniť alebo abstraktné veci takým spôsobom,
kde sme len Naozaj dôležité informácie
staráme sa o v tabuľke používateľa.
A potom máme pomocné informácie alebo ďalšie informácie v iných tabuľkách
že je možné pripojiť znovu vráti do hlavnej Užívatelia tabuľka v určitým spôsobom.
>> Takže tu máme tieto dve tabuľky, ale tam je vzťah medzi nimi,
v poriadku?
Vyzerá to, že užívateľské meno by mohlo byť niečo
ktorá existuje v obyčajný medzi Tieto dva rôzne tabuľky.
A čo keď máme teraz situácia, keď sme
sa chcú dostať úplné meno používateľa z tabuľka užívateľov, a ich matky
meno z materskej tabuľky?
Nemáme spôsob, ako sa dostať že ako to stojí, nie?
Neexistuje jediná tabuľka, ktorá obsahuje ako celý názov a meno matky.
Nemáme túto možnosť z toho, čo sme doteraz videli.
>> A tak musíme zaviesť myšlienka JOIN.
A sa pripojí sú pravdepodobne najviac complex--
je to naozaj najzložitejšia operácie budeme hovoriť o vo videu.
Sú to trochu zložitejšie, ale akonáhle sa dostanete na kĺb,
sú to vlastne nie je tak zlé.
Je to len osobitný prípad SELECT.
Budeme vybrať sadu stĺpce z tabuľky spájanie
v druhej tabuľke na nejakom predikátu.
>> V tomto prípade, myslím, že o tom takto tohle-- stôl, kto je jeden kruh tu,
tabuľka dvoch je ďalší kruh tu.
A že predikát časť v stredu, je to
niečo ako, ak si myslíte , O ktorých v Vennov diagram, čo
to majú spoločného?
Chceme prepojiť tieto dve tabuľky na základe toho, čo majú spoločné
a vytvoriť túto hypotetickú tabuľku že je zlúčenie dvoch dohromady.
Tak uvidíme to v príklad a možno, že to pomôže
zrušte to trochu.
Takže možno budete chcieť vybrať USER.FULLNAME a moms.mother
od užívateľov spájanie v mamičky stôl v každej situácii
kde používateľské meno stĺpca je rovnaký medzi nimi.
A to je nový syntaxe tu, tohto používateľa.
a mamičky ..
Ak Robím viac tabuliek spolu, môžem zadať tabuľku.
Dokážem rozlíšiť najmä pokiaľ ide o že na tú v samom dne.
Môžem rozlíšiť užívateľské meno stĺpec tabuľky užívateľov
z užívateľské meno stĺpca mamičky stôl, ktoré sú otherwise--
keby sme práve povedal username rovná užívateľské meno, to nie je naozaj
znamenať čokoľvek.
Chceme urobiť to, kde sa zhodujú.
>> Takže môžem zadať tabuľky a názov stĺpca v prípade situácie
kde by bolo jasné, to, čo hovorím.
Tak to je všetko, čo robím, je, že som hovorí tento stĺpec z tejto tabuľky,
a je veľmi explicitné.
Takže znovu, som voľbou plné meno a meno matky
Z tabuľky užívateľov spojené s tabuľkou mamičky v každej situácii
kde sa zdieľať column-- oni zdieľať užívateľské meno pojem.
>> Takže tu sú tabuľky, ktoré sme mali predtým.
To je stav nášho databáz tak, ako existuje práve teraz.
Informácie sme extrahovania je to pre začiatok.
To je nová tabuľka ideme vytvoriť kombinovať tieto spolu.
A všimnite si nie sme zvýraznenie Newmanovho riadok v tabuľke užívateľa,
a nie sme zvýraznenie Kramerův riadok v tabuľke mamičky
pretože ani jeden existuje v ako sets-- v oboch tabuľkách.
>> Jediná informácie, ktoré sú v bežnej medzi nimi je Jerry je v oboch tabuľkách
a gcostanza je v oboch tabuľkách.
A tak, keď budeme robiť SQL JOIN, čo sme get-- a robíme vlastne si to.
Je to niečo ako dočasné premenné.
Je to ako hypotetický zlúčenie oboch tabuliek.
Vlastne sme si niečo ako je tento, kde
sme sa spojil tabuliek na informácie, ktoré majú spoločné.
>> Takže všimnúť, že users.username a moms.username stĺpec,
je to presne to isté.
To bola informácia, že bol v súlade od užívateľov
stôl, ktorý sa mamičky.
A tak sme zlúčili dohromady.
My sme tu zavrhli Kramer, pretože on neexistovali v tabuľke užívateľov,
a my zlikvidovať Newman, pretože nemal existovať v tabuľke mamičky.
Tak toto je hypotetický fúzie pomocou JOIN prevádzku SELECT.
>> A potom sme hľadali pre celé meno užívateľa a matka užívateľa,
a tak toto je informácia, že by sme sa dostali z celkového dopytu
že sme sa s SELECT.
Tak sme sa spojili tabuľky a my sa extrahuje tieto dva stĺpce,
a tak, že je to, čo dostaneme.
Ale SQL pripojí akýsi komplikovaný.
Vy pravdepodobne nebudete robiť im príliš veľa, ale jednoducho mať určitú predstavu o skeletu
že by ste mohli použiť na zlúčenie dvoch Tabuľky spoločne, ak ste potrebovali.
Posledné dva sú bit jednoduchšie sľubujem.
Takže aktualizovať, môžeme použiť UPDATE zmeniť údaje v tabuľke.
Všeobecný formát je UPDATE niektoré stôl, nastaviť niektoré stĺpec nejaké hodnoty
Kde niektorí predikát je splnená.
Tak napríklad, my by sme mohli chcieť k aktualizácii tabuľky užívateľov
a nastaviť heslo na Yada bla, kde identifikačné číslo 10.
>> Takže v tomto prípade, my sme aktualizáciu tabuľky užívateľov.
ID číslo je 10 pre že prvý riadok tam,
a chceme aktualizovať heslá tlachy.
A tak to je to, čo by sa stalo.
Je to celkom jednoduché, nie?
Je to len veľmi jednoduchá modifikácie k stolu.
>> DELETE je operácia sme sa odstránenie informácií z tabuľky.
DELETE FROM stolu, kde nejaký predikát je splnená.
Chceme odstrániť z Užívatelia stôl napríklad
kde používateľské meno je Newman.
Môžete si asi hádať, čo to bude sa stalo potom, čo sme tu vykonať SQL
dotaz, Newman je preč od stola.
>> Takže všetky tieto operácie, ako som už povedal, je veľmi ľahké robiť v phpMyAdmin.
Je to veľmi užívateľsky prívetivé rozhranie.
Ale to vyžaduje manuálnu úsilie.
Nechceme použiť manuálne úsilie.
Chceme, aby naše programy na to pre nás, že jo?
Takže by sme mohli chcieť urobiť tento programovo.
Chceme začleniť SQL a majú niečo iné, aby to pre nás.
>> Ale to, čo sme videli, že umožňuje nás programovo niečo urobiť?
Videli sme PHP, že jo?
To predstavuje niektoré dynamika do našich programov.
A tak našťastie, SQL a PHP hrajú veľmi pekne pohromade.
K dispozícii je funkcia v PHP volal dotazu, ktoré môžu byť použité.
A môžete odovzdať ako parameter alebo argument
do dotazu SQL dotazu, ktorý by ste chceli spustiť.
A PHP bude robiť za vás.
>> Takže potom, čo ste pripojení do databázy s PHP,
Sú dva primárne voľby to budete robiť.
Je tu niečo, čo nazýva MySQLi a niečo, čo nazýva PDO.
Nebudeme zachádzať do obrovský tam detail množstvo.
V CS50 používame PDO.
Potom, čo ste pripojení do databázy, vy
potom môže vytvoriť otázky na databázu odovzdaním otázky ako argumenty
do funkcie PHP.
A keď to urobíte, budete ukladať sada výsledkov v asociatívnom poli.
>> A my vieme, ako pracovať s asociatívne pole v PHP.
A tak by som mohol povedať niečo ako tohle-- $ results--
je to v PHP-- rovná dotazu.
A potom vnútornej strane Funkcia dotaz tento argument
že som okolo na dotaz že vyzerá ako SQL.
A v tom, že je SQL.
To je reťazec dotazu, že by som Páči sa vykonať na mojej databázy.
>> A tak v červenej farbe, to je PHP.
To je SQL, že som integráciu do PHP tým, že
to je argument pre funkciu dotazu.
Chcem vybrať zo CeléJméno Užívatelia kde ID číslo rovná 10.
A potom možno potom, čo som urobil, že, Mohol by som povedať niečo také.
Chcem pre vytlačenie Vďaka správa pre prihlásenie.
>> A chcem to interpolate-- Chcem interpolovať $ výsledky CeléJméno.
A tak to je, ako som sa pracovať s tým asociatívne pole, že som sa vrátil.
$ Výsledky fullname by v podstate skončiť vytlačenie,
vďaka za prihlásenie, Jerry Seinfeld.
To bolo plné meno kde IDNUM sa rovná 10.
>> A tak všetko, čo robím je, že som now-- Aj uložené
môj dotaz, výsledky môjho dotazu a výsledky v asociatívnom poli,
a fullname je názov stĺpec Bola som pre.
Takže to je môj kľúč do výsledkov asociatívne pole, ktoré chcem.
Takže vďaka za prihlásenie, $ výsledky, fullname vytlačí, sa bude držať
priamo medzi týmito kučeravé traky, Jerry Seinfeld.
A budem rád vytlačiť správu Vďaka za prihlásenie Jerry Seinfeld.
>> Teraz sme pravdepodobne nebudete chcieť tvrdo Kód veci ako, že v, že jo?
My by sme mohli urobiť niečo také tlače f, kde môžeme nahradiť a možná
zhromažďovať rôzne informácie, alebo možno majú proces dotazu
rôzne informácie.
A tak dotazu, funkcia dopytu má Toto poňatie druhu substitúciou
veľmi podobné pre tlač f percent s a percento c, je otázniky.
>> A môžeme použiť otázku značky veľmi analogicky
tlačiť f nahradiť premenných.
Takže možno si používateľ prihlásený skôr, a ste uložili svoje užívateľské identifikačné číslo
v $ _SESSION PHP Super globálne v kľúčovom ID.
Takže možno potom, čo sa prihlásite, Nastavíte $ _SESSION ID rovná 10,
extrapolácie z príkladu sme práve videli pred sekundou.
>> A tak, keď sme vlastne spustiť Tento dotaz výsledky teraz,
to by pripojiť 10, alebo čokoľvek ID hodnota $ _SESSION je.
A tak, že nám umožňuje byť trochu dynamickejšie.
Nie sme tvrdo kódovanie veci ešte.
Šetríme informácie niekde a potom
môžeme tieto informácie znovu použiť na nejako zovšeobecniť, čo chceme robiť,
a len plug-in a zmeny správanie našej stránke
základe toho, čo identifikačné číslo užívateľa v skutočnosti je potom, čo som prihlásený.
Je tiež možné, aj keď, že nastaviť vaše výsledky
sa môže skladať z viacerých radách.
V takom prípade máte Rad arrays--
Pole asociatívnych polí.
A stačí iterovat to.
A my vieme, ako iterovat cez pole v PHP, že jo?
Takže tu je pravdepodobne najviac zložitá vec, ktorú sme doteraz videli.
Je to vlastne integruje tri jazyky dohromady.
>> Tu v červenej farbe, to je nejaký HTML.
Som vraj starting-- to je úryvok nejakého HTML, ktoré mám.
Začínam nový odsek, ktorý hovorí, že mamičky z televízora Seinfeld.
A potom hneď nato Začínam tabuľku.
A potom po to, že som nejaké PHP, že jo?
Mám všetky tieto PHP kód tam.
Ja zrejme bude robiť dotaz.
A aby dotaz, budem byť pomocou SELECT matky od mamičky.
>> Takže toto je getting-- je to SQL.
Takže modrá je SQL.
Červená sme videli druhý pred bol HTML.
A zelená tu je PHP.
Takže robím dotaz do mojej databázy, ja som
výberu všetkých matiek v tabuľke mamičky.
Nielen zúženie nadol na konkrétny radové, pýtam pre všetky z nich.
>> Potom som sa skontrolovať, či výsledok je Nie je rovní rovná false.
To je len môj spôsob, ako kontrolovať sort of Ak výsledky nie je rovná NULL,
že by sme vidieť C počas napr.
V podstate je to len kontrolovať, aby sa istý, že to vlastne dostal dáta späť.
Pretože nechcem, aby začatia tlače out údajov, ak som nedostal žiadne údaje.
Potom pre každú výsledkov v dôsledku toho foreach syntaxe z PHP, všetko, čo robím
tlačí z $ result matky.
A tak budem mať súbor zo všetkých matiek each--
je to pole asociatívne arrays-- a ja som vytlačenie
každý z nich ako vlastné riadok tabuľky.
A to je naozaj dosť Koľko všetko, čo je k tomu.
Viem, že je to trochu bit tu deje
V tomto poslednom príklade s polí arrays-- pole asociatívnych polí.
Ale to naozaj len varí v SQL k tomu, že otázka,
obvykle výberu potom, čo sme už vložiť informácie do tabuľky,
a potom už len vytiahnutím.
>> A to je, že sme sa ho vytiahnuť v tomto konkrétnom prípade.
Radi by sme extrahovať všetky jedince matiek z tabuľky mamičky.
Máme celý rad z nich, a my sme Chcete iterovat a vytlačiť
každý.
Takže znova, toto je pravdepodobne najkomplikovanejšie príklad
videli sme, pretože sme miešanie tri rôzne jazyky spolu, nie?
>> Opäť platí, že máme HTML tu v červenej farbe, v zmesi s niektorými SQL tu v modrej farbe,
v zmesi s niektorými PHP v zelenej farbe.
Ale všetky tieto hrajú pekne pohromade, je to
len otázka rozvíjanie dobré návyky tak, že môžete získať
je pracovať spoločne tak, ako chcete.
A jediný spôsob, ako skutočne to urobiť je cvičiť, cvičiť, cvičiť.
Som Doug Lloyd, je to CS50.