>> [Predvaja glasba]
Doug LLOYD: V naših video posnetkov Na spletnih razvojnih temah,
smo omenili koncept zbirka podatkov nekajkrat, kajne?
Torej podatkovna baza ste verjetno seznanjeni z od
pravijo uporabo Microsoft Excel ali Google Spreadsheets.
To je res samo organizirano niz tabel, vrstic in stolpcev.
>> In je podatkovna baza, kjer naše spletne trgovine
informacije, ki so pomembne za našo spletno stran, da deluje pravilno.
Še enkrat, res običajen primer tukaj je shranjevanje uporabniških imen in gesel
v podatkovno bazo, tako da, ko uporabnik prijavi v naši spletni strani,
baze podatkov se lahko poizveduje za prikaz če obstaja, da si v bazo podatkov.
In če so, preverjanje, njihovo geslo je pravilno.
In če je njihova geslo pravilna, Nato smo jim karkoli strani lahko dam
oni zahtevajo.
>> Torej ste verjetno spet pozna s to idejo iz Excela ali Google
Preglednic.
Imamo podatkovnih baz, tabele, vrstice in stolpce.
In to je res nekako temeljnega niza
od hierarhične členitve tukaj.
Torej, tukaj je Excel.
In če ste kdaj to odprta ali drug podoben program
veš, da tukaj gre za rows-- 1, 2, 3, 4, 5, 6, 7.
To so stebri.
>> Mogoče sem dol, čeprav si lahko to funkcijo ne uporabljajte strašno much--
Bom povečavo in-- imamo ta ideja stanja.
Mogoče ti listi, če Sem izmenično naprej in nazaj,
različne tabele, ki obstajajo v moji zbirki podatkov.
In če bomo še naprej zgled vse pot, ime te baze podatkov
je knjiga 1.
Mogoče imam Book 2 in rezervirajte 3.
Torej vsak Excel datoteka Podatkovna baza, vsak list je tabela,
in znotraj vsakega mizi imam ta ideja vrstic in stolpcev.
>> Torej, kako naj delam s to zbirko podatkov?
Kako dobim informacije od njega?
No, tam je jezik imenuje SQL-- ki sem ponavadi samo pokliči Sequel--
in se zavzema za Structured Query Language.
In to je programski jezik, ampak to je precej omejena programiranje
jezik.
To ni čisto tako kot drugi da smo delali s.
Toda namen tega programski jezik
je, da se pozanima bazo podatkov, da vprašajte podatke iz baze podatkov,
iskanje informacij v Sistemu Podatkovna baza, in tako naprej.
>> Prav tako je v CS50-- in to je zelo skupna platforma, je pozval MySQL.
To je tisto, kar bomo uporabili v teku.
To je open source platforma, ki vzpostavlja
tako imenovani relacijske database-- baze podatkov, učinkovito.
Mi ne potrebujemo, da bi dobili v preveč podrobnosti
o tem, kaj je relacijska podatkovna baza.
Toda SQL jezik zelo spretni pri delajo
z MySQL in druge podobne stili relacijskih podatkovnih baz.
>> In številne inštalacije MySQL pridejo z nečim
imenovano phpMyAdmin, ki je grafični uporabniški
interface-- je GUI-- da zaradi česar je malo bolj
uporabniku prijazen izvršiti poizvedbe zbirke podatkov,
ker so baze podatkov, ne samo uporablja z naprednimi programerji, kajne?
Včasih obstajajo ta mala podjetja,
in si ne morejo privoščiti, da bi najeti ekipo programerjev,
vendar jih še vedno potrebujejo za shranjevanje Podatki v zbirki podatkov.
>> Nekaj ​​podobnega phpMyAdmin je zelo enostavno za nekoga
ki je nikoli ni programiran prej pick up in se seznanili s tem, kako
za delo z bazo podatkov.
Problem je, phpMyAdmin, medtem to je fantastično orodje za učenje
o bazah podatkov, je ročno.
Boste morali prijaviti v to in izvajanje ukazov in vrste
stvari v ročno.
>> In kot vemo iz naše Primer za PHP programiranje web,
ob ročno narediti stvari na naši spletni strani,
če želimo, dinamičen, aktiven odziven spletna stran, morda ni najboljši pristop.
Radi bi, da bi našli pot do morda avtomatizirati to nekako.
In nam bo SQL omogočiti, da to storijo.
Torej, ko bomo začeti delati z SQL,
moramo najprej imeti Podatkovna baza za delo z.
Ustvarjanje baze podatkov je nekaj, kar verjetno
bo naredil v phpMyAdmin, saj morate le, da to storite enkrat,
in sintakso za to je veliko bolj enostavno.
To je veliko lažje, da to storite v grafičnega uporabniškega vmesnika
kot da ga vnesete ven kot ukaz.
Ukaz lahko dobili malo okorni.
Podobno ustvarja tabelo lahko dobili kar precej zapleten, kot dobro.
In tako stvari, kot so ustvarjanje baze podatkov in ustvarjanje tabelo, ki ste
Verjetno samo boš naredil once-- enkrat na mizi, enkrat na database--
to je v redu, da to storim v grafični vmesnik.
V procesu ustvariti tabelo, boste
tudi opredeliti vse stebri, ki bodo v tej tabeli.
Kakšne informacije storiti želite shraniti v tabeli?
Mogoče naštejemo uporabnikov in datum rojstva, gesla, uporabniški ID številko, in morda
mesto in državo, kajne?
>> In vsakič, ko želimo dodati uporabnika do baze podatkov, želimo, da bi dobili vseh šest
teh informacijami.
In to storimo z dodajanjem vrstic k mizi.
Torej moramo najprej ustvariti bazo podatkov, Nato smo ustvarili tabelo.
Kot del ustvarjanja miza, smo vprašal
navesti vsak stolpec, ki Radi bi v tej tabeli.
In potem, kot smo začeli, da dodate Podatki v podatkovno bazo
in se pozanima podatkovna baza več generally-- ne samo dodal,
ampak vse ostalo smo do-- bomo ukvarjajo
z vrstic v tabeli, ki je ena Podatki uporabnikov iz celotnega sklopa.
>> Torej vsak SQL stolpec je sposoben držite podatke določenega podatkovnega tipa.
Tako smo nekako odpraviti to Ideja vrste podatkov v PHP,
ampak oni so spet tukaj v SQL.
In tam je veliko podatkovnih tipov.
Tu je samo 20 od njih, ampak to ni še vse od njih.
Torej imamo ideje, kot INTs-- Integers-- bomo verjetno veste
da lahko ta stolpec imajo cela.
In obstajajo razlike thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT.
Mogoče ne bomo vedno potrebovali štiri ugrizi.
Morda bomo potrebovali osem bajtov, in tako smo Lahko uporabite te razlike na števil
da bo malo več prostora učinkovito.
Mi lahko naredimo decimalnih številk, smo lahko storite s plavajočo vejico.
To so precej podobni.
Obstajajo nekatere razlike, in če bi
želeli pogledati gor SQL nekako vodilo, boste
lahko videli, kaj se rahlo Razlike so med njimi.
>> Morda želimo shraniti informacije o datumu in času.
Mogoče smo sledenja ko uporabnik pridružil našo spletno stran,
in zato morda želimo da ima steber, ki je
čas, datum ali časovni žig, ki označuje ko uporabnik dejansko
prijavili.
Mi lahko naredimo geometrij in linestrings.
To je pravzaprav zelo kul.
Mi lahko karto ven Geografsko območje uporabe
GIS koordinate parcelo iz območja.
Tako dejansko lahko shranite, da se takšne informacij v stolpcu SQL.
>> BESEDILO je le velikan mehurčki besedila, morda.
ENUMs so nekako zanimivo.
Dejansko obstajajo v C. Mi ne govori o njih, ker oni ne
strašno pogosto uporablja, vsaj CS50.
Ampak to je našteta vrsta podatkov, ki je sposobna zadržati omejene vrednosti.
>> Res dober primer tukaj bi ustvariti ENUM, kjer sedem
možne vrednosti so nedelja, ponedeljek, Torek, sreda, četrtek, petek,
Sobota, kajne?
Ta vrsta podatkov dan Teden ne obstaja,
vendar smo lahko ustvarite našteta vrsta podatkov, kot
da lahko ta kolona le vedno drži eden od teh sedmih možnih vrednosti.
Mi smo našteli vse od možnih vrednosti.
>> Potem imamo CHAR in VARCHAR, in sem barve Ta zelena
ker smo dejansko bo trajalo sekundo
govoriti o razliki med tema dvema stvarema.
Torej CHAR, za razliko od C, kjer CHAR je bil en sam znak,
v SQL char nanaša določen niz dolžine.
In ko smo ustvarili to stolpec, smo dejansko
lahko določite dolžino niza.
>> Torej v tem primeru, lahko bi rekli CHAR (10).
To pomeni, da je vsak element te kolone
bo sestavljen iz 10 bajtov podatkov.
Nič več, nič manj.
Torej, če se trudimo in dal v 15 bit ali element 15 znakov
ali vrednost v tem stolpcu, smo dobili le prvo 10.
Če smo se v dveh značaj dolgo vrednost,
bomo imeli dva znakov, nato pa osem null ugrizi.
Nikoli ne bomo bolj učinkoviti kot to.
>> VARCHAR je nekako kot naš pojem niz
da smo seznanjeni s izmed C ali PHP.
To je spremenljiva dolžina niz.
In ko ustvarite ta stolpec, ki ste jo pravkar
določa največje možne dolžine.
Torej, morda 99 ali običajno 255.
To bi bila največja dolžina.
In tako, če smo bili shranjevanje 15 znakov niz,
bomo uporabili 15 bajtov, morda 16 bajti za null terminator.
Če smo bili shranjevanje tri niz znakov,
bomo uporabili tri ali štiri bajte.
Vendar pa ne bi uporabil polno 99.
>> Torej, zakaj bi imeli oboje?
No, če smo morali ugotoviti, kako Dokler je nekaj z VARCHAR,
moramo vrste ponovitev čez to šele radi smo v C
in ugotoviti, kje se ustavi.
Ker se, če vemo, da je vse V tem stolpcu je 10 bajtov, morda
vemo, da so informacije, da lahko skoči 10 bajtov, 10 bajtov, 10 bajtov, 10 bajtov,
in vedno najdejo začetka niza.
>> Tako bomo lahko imeli nekateri zapravljen prostor z CHAR,
a morda obstaja trgovina off imajo boljšo hitrost
na navigacijo baze podatkov.
Ampak morda želimo, Fleksibilnost je varchar
namesto having-- Če naš CHAR je bilo 255, vendar je večina naših uporabnikov
so samo vnesla tri ali štiri bajte vredno informacij ali tri ali štiri
znaki vredno informacij.
>> Ampak nekateri uporabniki so uporabljali celotna 255, morda
VARCHAR bi bilo bolj primerno tam.
To je neke vrste kompromis, in na splošno za namene CS50,
vam ni treba skrbeti preveč o ali uporabite CHAR ali VARCHAR.
Toda v resničnem svetu, te stvari pa važno, ker so vse te stolpce
traja do dejanskega fizičnega prostora.
In fizični prostor, v realnem svetu, prihaja na premijo.
>> Torej, eno drugo obravnavo Ko ste izgradnjo mizo
je, da izberete en stolpec, da bi kar se imenuje primarni ključ.
In primarni ključ je stolpec kjer je vsak vrednost unikatna.
In to pomeni, da lahko enostavno izločiti enovrstna samo jih je videti
Na primarnem ključu tej vrstici.
Tako na primer, na splošno, z uporabniki,
Ne želim dveh uporabnikov, ki imajo enako uporabniški ID številko.
In tako morda imate veliko informacij,
in morda dva lahko uporabniki imajo enako name--
imate John Smith in John Smith.
To ni nujno težava, ker obstaja več ljudi
na svetu z imenom John Smith.
Vendar imamo le en uporabniški ID številko 10, en uporabnik številka 11, 12, 13 ID.
Nimamo dveh uporabnikov z isto številko,
in tako morda uporabniški ID številke bi bila dobra primarni ključ.
>> Nimamo nobenega podvajanja, in bomo lahko zdaj nedvomno
identificirati vsak vrstico tik ga je videti na ta stolpec.
Izbira primarne ključe lahko dejansko bi nadaljnje poslovanje tabele
veliko lažje, saj lahko vzvod dejstvo, da so nekatere vrstice bo
biti edinstvena, ali neka stolpec vaše baze podatkov ali tabele
bo edinstvena izbrati od posebne vrste.
>> Lahko imajo tudi skupno primarni ključ, ki ga lahko najdejo priložnost
za uporabo, ki je le Kombinacija dveh stolpcih, ki
je zagotovljeno, da je edinstven.
Mogoče imate eno stolpec, ki je tako in Bs,
en stolpec, ki je ena, dva, in tri, vendar boste le kdaj
imajo en sam A1, enoten A2, in tako naprej in tako naprej.
Ampak morda imate B2, A C2, ali A1, A2, A3, A4.
Torej, imate morda več kot, multipla Bs, več tisti, več dvojke,
vendar lahko samo kdaj ima enojna A1, B2, C3, in tako naprej.
Torej, kot sem rekel, SQL je programski jezik,
vendar ima precej omejen besednjak.
To ni čisto tako širok, kot je C in PHP in drugih jezikih
da govorimo v teku.
To je bolj verbose jezik, kot tisto, kar smo
dogaja, da govorimo o pri tem video, saj v tem videu
bomo govorili o štiri operacije, da smo
lahko izvaja na mizi.
>> Obstaja več kot to.
Lahko storimo več kot to, vendar za naše namene,
smo na splošno bodo s pomočjo samo štiri operations-- vložek,
izberite, posodobitev in brisanje.
In ti si verjetno lahko intuitivno uganiti kaj vse štiri od teh stvari narediti.
Bom, ampak gremo v malo podrobnosti o vsakega od njih.
>> Torej za namene tega video, predpostavimo
smo naslednjih dveh tabele v enotni bazi podatkov.
Imamo tabelo imenovano uporabnike, ki jih ima štiri columns-- ID številko, uporabniško ime,
geslo, ime in priimek.
In imamo sekundo tabelo v isti podatkovni bazi
imenuje mame, ki so pravkar shranjuje informacije o ime in mati.
Torej za vse primere v tem videu, bomo
je treba uporabo te podatkovne baze in poznejše posodobitve z njo.
Torej, recimo, da želimo Dodajanje informacij za mizo.
To je tisto, kar operacija vložek počne.
Pri pojasnjevanju vse ti ukazi, jaz grem
da bi vam splošno ogrodje za uporabo.
Ker v bistvu, poizvedb gredo videz precej podoben,
smo le, da bo treba spreminjajoče nekoliko različni informaciji
storiti z mizi različne stvari.
>> Torej za vstavljanje, okostja izgleda nekako takole.
Želimo, da vstavite posebno tabelo.
Potem imamo odprt oklepaj in seznam stolpcev
da želimo postaviti vrednote.
Zapri oklepaje je po vrednosti, nato pa
spet smo seznam vrednote, želimo postaviti na mizo.
>> Torej primer tega bi bili naslednji.
Hočem vstaviti v tabelo Uporabniki naslednje columns--
uporabniško ime, geslo in fullname.
Torej novo vrstico, kjer sem dajanje v teh treh stolpcih in smo
bo dal v vrednosti Newman, USMAIL in Newman.
Torej, v tem primeru sem dajanje male Newman
v kolono uporabniškim imenom, geslo USMAIL ter polno ime kapital N
Newman v kolono FULLNAME.
>> Torej, tukaj je, kaj je baza podatkov izgledala prej.
Evo, kaj tabela uporabniki na top izgledala preden bomo to storili.
Ko smo izvršiti to poizvedbe, smo dobili to.
Dodali smo novo vrstico v tabelo.
Ampak obvestilo, to eno stvar da nisem določite,
ampak nekako imam vrednosti , kar je za to 12 tukaj.
Nisem rekel, da sem si želel dal ID številka tam.
Želel sem dati ime, geslo, fullname.
In sem to storil, da je v redu.
>> Ampak sem tudi dobil to 12.
Zakaj sem to dobil 12?
No, izkaže se, da ko se opredeljujejo
stolpec, da se bo vaš primarni ključ, ki je običajno,
kot sem rekel, identifikacijsko številko.
To ni nujno vedno dogaja, da je identifikacijska številka,
ampak to je običajno dobra ideja, da neke vrste celoštevilsko vrednost.
Imate možnost v phpMyAdmin ko ste ustvarili svojo zbirko podatkov
ali vašo mizo, da določi, da Kolona auto povečevanje.
>> Ki je res dobra ideja, ko delate s primarnim ključem,
ker želite vse vrednosti v tem stolpcu, da je edinstven.
In če ste pozabili, da določite je za več kot eno osebo,
imate zdaj situacijo, v kateri da kolona ni več edinstven.
Imate dve prazne, tako da lahko brez več enolično identifikacijo column--
ali si ne more več enolično določiti vrstico, ki temelji na tej koloni.
To je izgubila vse njene vrednost kot primarni ključ.
>> In tako očitno, kaj sem naredil Tukaj je nastavljen uporabniški ID
stolpec auto prirastek, tako da je vsak Čas dodam podatke na mizo,
se bo samodejno mi vrednost za primarni ključ.
Torej, jaz nikoli ne more pozabiti, da to storite, ker baza podatkov, bo to za mano.
Tako da je nekako lepo.
In da je, zakaj smo dobili 12 tja, ker sem
nastavite, da kolono do auto prirastka.
Če sem dodal nekoga drugega da bi bilo 13, če sem dodal
nekdo drug bi bilo 14, in tako naprej.
>> Torej, kaj je samo naredil še eno vstavljanje.
Bomo vstavite v tabelo mame, v zlasti ime in mati
stolpcu vrednosti kramer in Babs Kramer.
In tako smo to imeli prej.
Ko smo izvršiti, da SQL poizvedba, imamo to.
Dodali smo Kramer in Babs Kramer na mizo mame.
>> Tako, da je vstavljanje.
SELECT je tisto, kar bomo uporabili za pridobivanje Podatki iz tabele.
Torej, to je, kako bomo dobili Podatki iz baze podatkov.
In tako izberete ukaze se bodo Zelo pogosto se uporabljajo pri programiranju.
Splošni framework-- splošno skeleton izgleda takole.
Izberite nabor stolpcev iz miza, in nato po izbiri
lahko določite condition-- ali kar običajno imenujemo predikat,
je običajno izraz, ki jih uporabljamo v SQL.
>> Ampak to je v bistvu kaj posebne vrstice želite.
Če želite, namesto da bi dobili Vse, ozki,
to je, če bi to naredil.
In potem po želji, lahko tudi vi naročite ga določenem stolpcu.
Torej, morda želite imeti stvari razvrščeni abecedi temelji na enem stolpcu
ali po abecedi, ki temelji na drugega.
>> Again, KJE in ORDER BY so obvezna.
Vendar jih bomo verjetno useful-- zlasti
Kjer bo koristno zožilo, tako da vam ne
dobite celotno zbirko podatkov in nazaj morali obdelati, ki ste jo pravkar dobil
kosi to, da vam je mar.
Tako, na primer, morda želim, da izberete ID številka in fullname od uporabnikov.
Torej, kaj bi to izgledal?
Torej, tukaj je moj uporabniki miza.
Želim izbrati IDNUM in FULLNAME od uporabnikov.
Kaj bom dobil?
Bom dobil to.
Nisem ga zožilo, tako da sem dobili ID številko za vsako vrstico
in sem že v celoti ime iz vsake vrstice.
>> V REDU.
Kaj pa, če hočem, da izberete geslo od uporabnikov WHERE-- zdaj
Jaz sem dodal pogoj, A predicate-- kjer IDNUM je manj kot 12.
Torej, tukaj je moja baza podatkov še enkrat, moj uporabniki tabela top.
Kaj bom, da bi dobili, če želim izberite, da so informacije, geslo,
kjer je uporabniško ime ali IDNUM manj kot 12?
Jaz bom dobil to Informacije nazaj, kajne?
To se zgodi, da je IDNUM 10, manj od 12, ID številka 11 manj kot 12.
Dobivam geslo za teh vrstic.
To je tisto, kar sem prosil za.
Kaj praviš na to?
Kaj pa, če hočem, da izberete zvezda iz mame miza, kjer username enaka Jerry?
OK, izberite zvezda je posebna sortiranje divjega kartice, tako imenovani
da bomo uporabili, da bi dobili vse.
Torej ti praviš, da izberete username vejico mater, ki
se je zgodilo, da je edina dva stolpca v tej tabeli,
Jaz lahko samo izbrati zvezda in dobili vse
kjer username enaka Jerry.
In tako, da je tisto, kar bi jaz dobil če sem to posebno vprašanje.
>> Zdaj pa so baze podatkov super, ker omogočajo
nam, da organizirajo informacije morda nekoliko bolj učinkovito kot mi
morda drugače.
Mi ne nujno za shranjevanje vsak pomembni podatek
o uporabniku v isti tabeli.
Imeli smo dve tabeli tam.
>> Moramo za shranjevanje Ime Vsi so matere,
in morda nimamo socialne varnosti Številka, imamo svoj datum rojstva.
Da vedno ne potrebujemo da je v isti tabeli.
Dokler bomo lahko opredelimo razmerja med tables--
in da je, če je ta relacijska Podatkovna baza izraz vrsta prihaja
v play-- tako dolgo, kot lahko definiramo odnosi med tabelami,
bomo lahko nekako delitve v ali abstraktnih stvari na način,
kjer imamo samo res pomembne informacije
skrbimo v uporabnikovi mizi.
In potem imamo pomožne informacije ali dodatne informacije v drugih tabelah
da bomo lahko povežete nazaj na glavno Uporabniki miza na določen način.
>> Torej, tukaj imamo teh dveh tabel, vendar obstaja povezava med njimi,
prav?
Zdi se, kot ime bi lahko kaj
da obstaja v skupno med ti dve različni mize.
Pa kaj, če imamo zdaj razmere, v katerih smo
želijo, da bi dobili uporabnikovo polno ime uporabnikovo miza, in njihova mati je
ime od matere mizo?
Nimamo način, da bi dobili da, kot je, kajne?
Ni ena tabela, ki vsebuje tako polno ime in ime matere.
Nimamo te možnosti od tega, kar smo videli doslej.
>> In zato moramo uvesti ideja pridruži.
In se pridruži so verjetno Najbolj complex--
to je res najbolj zapleten postopek bomo govorili o v videu.
Oni so nekoliko zapletena, ampak ko boste dobili visi za to,
oni dejansko ni preveč slabo.
To je samo poseben primer izbrancev.
Bomo izbrali niz stolpce iz tabele spajanja
v drugi tabeli na nek predikat.
>> V tem primeru, pomislite, da je všeč this-- miza ena je eden krog tukaj,
miza dveh je še en krog tukaj.
In da predikat del v sredini, to je
nekaj podobnega, če menite, približno kot Vennov diagram, kaj
pa imajo skupnega?
Želimo povezati teh dveh tabel ki temelji na tisto, kar imajo skupnega
in ustvariti to hipotetično tabelo da je združitev dveh skupaj.
Torej bomo to videli v primer in morda, da bomo pomagali
jo pospraviti malo.
Torej, morda želite izbrati user.fullname in moms.mother
od uporabnikov, ki povezujejo v mame miza v vsaki situaciji
kjer je kolona uporabniško ime je enak med njimi.
In to je nova skladnje tukaj, ta uporabnik.
in mame ..
Če delam več tabel skupaj, sem lahko določite tabelo.
Ne morem razlikovati zlasti na da je na samem dnu tam.
Ne morem razlikovati ime stolpec tabele uporabnikov
z imenom stolpcu mame miza, ki so otherwise--
če smo pravkar rekel username enaka uporabniško ime, ki v resnici ne
pomeni ničesar.
Želimo, da to storite, ko se ujemata.
>> Tako sem lahko določite mizo in Ime stolpca pri položaju
če bi bilo jasno, kaj sem govoril.
Tako, da je vse, kar delam, je, da sem pravijo, ta stolpec iz te tabele,
in je zelo jasna.
Torej še enkrat, jaz da izberete polno ime in ime matere
Iz tabele uporabnikov povezanega skupaj z mizo mame v vsaki situaciji
kjer si delijo to column-- si delijo to uporabniško ime pojem.
>> Torej, tukaj so mize smo jih imeli prej.
To je stanje našega baze podatkov, kot ga poznamo sedaj.
Informacije, ki smo ekstrakcijo je to za začetek.
To je nova tabela gremo ustvariti kombinacije teh skupaj.
In opazili nismo poudarjanje Vrstica Newman je v uporabnikovi mizi,
in ne bomo poudarjanje Vrstica Kramer je v tabeli mame
ker niti ena obstaja tako sets-- v obeh tabelah.
>> Edina informacija, ki je v skupni med njimi je Jerry je v obeh tabelah
in gcostanza je v obeh tabelah.
In tako, ko smo storili SQL JOIN, kar smo get-- in počnemo dejansko dobil to.
To je neke vrste začasno spremenljivko.
To je kot hipotetični Združitev dveh tabel.
Dejansko smo dobili nekaj kot je ta, kadar
smo združili skupaj mize na informacije, ki so jim skupne.
>> Tako opazili, da users.username in moms.username stolpec,
to je povsem enako.
Da so bili podatki, ki je bil dosleden od uporabnikov
in tabelo mame.
In tako smo jih združili skupaj.
Mi zavreči Kramer, ker je ne obstaja v tabeli uporabnikov,
in smo zavrgli Newman, ker on ne obstaja v tabeli mame.
Torej je to hipotetična združitev uporabo pridruži delovanje izberete.
>> In potem smo iskali za uporabnikov polno ime in uporabnikov mati,
in zato je ta podatek, da mi bi dobili od celotne poizvedbe
da smo se s SELECT.
Tako smo se pridružili tabel skupaj in smo ga dobili teh dveh stolpcev,
in tako, da je tisto, kar bomo dobili.
Ampak SQL pridruži nekakšno zapleteno.
Verjetno ste jim ne bo preveč, ampak imajo kakšno idejo okostja
da lahko uporabite za združitev dveh mize skupaj, če so potrebni za.
Zadnji dve sta bit enostavnejše obljubim.
Torej posodabljanje, lahko uporabite UPDATE spremeniti podatke v tabeli.
Splošna oblika je UPDATE nekateri Mizica, pogrni nekaj stolpec za nekaj vrednosti
KJE nekaj predikat zadovoljen.
Tako na primer, lahko želimo posodobiti tabelo uporabnikov
in nastavite geslo za Yada bla, pri čemer je identifikacijska številka 10.
>> Torej, v tem primeru smo posodabljanje tabelo uporabnikom.
Število ID 10 za da prvi vrsti tam,
in želimo posodobiti geslo za nakladanje.
In tako, da je tisto, kar se bo zgodilo.
To je zelo enostavno, kajne?
To je samo zelo enostavna sprememba na mizo.
>> DELETE se operacija smo uporabili za odstraniti podatke iz tabele.
DELETE FROM tabela WHERE nekateri predikat je zadovoljen.
Želimo izbrisati iz Uporabniki miza za primer
kjer je username Newman.
Si verjetno lahko uganiti, kaj se dogaja, da tukaj zgodilo po tem, ko smo se izvrši to SQL
poizvedbe, je Newman odšel iz tabele.
>> Torej vse te operacije, kot sem rekel, so zelo enostavno narediti v phpMyAdmin.
To je zelo uporabniku prijazen vmesnik.
Ampak to ne zahteva ročnega napora.
Mi ne želimo zaposliti ročnega napora.
Želimo, da naše programe To storite za nas, kajne?
Tako bomo morda želeli narediti to načrtno.
Želimo, da vključi SQL in imajo nekaj drugega, da to stori za nas.
>> Toda kaj smo videli, da omogoča nam programsko nekaj narediti?
Videli smo PHP, kajne?
Uvaja nekaj dinamičnost v naše programe.
In tako srečo, SQL in PHP igrajo zelo lepo skupaj.
Tam je funkcija v PHP imenovano izraz, ki se lahko uporabljajo.
In lahko prenese kot parameter ali argument
za poizvedbo SQL poizvedbo, bi želeli izvesti.
In bo PHP to storite v vašem imenu.
>> Torej, ko ste povezani na vašo bazo podatkov z PHP,
tam je dve Primarni to storite.
Nekaj ​​je pozval MySQLi in nekaj, kar ti ZOP.
Mi ne bo šel v ogromen detajl znesek tam.
V CS50 uporabljamo ZOP.
Ko ste povezani na vašo bazo podatkov,
Nato lahko poizvedbe zbirke podatkov z opravljanjem poizvedb kot argumente
za PHP funkcij.
In ko boste to storili, boste shranite komplet rezultatov v asociativni array.
>> In vemo, kako delati z asociativne nize v PHP.
Torej lahko rečem nekaj kot this-- $ results--
to je v PHP-- enaka poizvedbo.
In potem v notranjosti Funkcija poizvedba ta trditev
da sem mimo, da se pozanima ki izgleda kot SQL.
In v tem, da je SQL.
To je niz poizvedbe, da bi jaz želeli izvršiti na moji bazi podatkov.
>> In tako v rdeči barvi, to je PHP.
To je SQL, da sem vključevanje v PHP, tako da
je argument za funkcijo poizvedbe.
Želim izbrati FULLNAME od Uporabniki kjer ID številka enak 10.
In potem pa, ko sem to storil, Jaz bi rekel kaj takega.
Želim natisniti ven sporočilo Hvala, se prijavite.
>> In hočem jo interpolate-- želim za interpolacijo $ rezultate FULLNAME.
In da je, kako delam s tem asociativno paleto, da sem se vrnil.
$ rezultati fullname bi v bistvu končajo tiskanje,
hvala za prijavo v, Jerry Seinfeld.
To je bilo polno ime kjer IDNUM enaka 10.
>> In tako vse delam se bom now-- sem shranjena
moje vprašanje, rezultati mojega poizvedbe in rezultati v asociativni array,
in fullname je ime stolpec sem se za.
Torej, to je moj ključ v rezultatih asociativni niz, ki ga želim.
Torej, hvala za prijavo v $ rezultati, fullname bo izpisal, bo palico
prav med tistimi Curly naramnice, Jerry Seinfeld.
In bom všeč, da natisnete sporočilo Hvala za prijavo v Jerry Seinfeld.
>> Zdaj, mi verjetno ne želite, da težko Koda stvari, kot da, kajne?
Mi bi želeli narediti nekaj podobnega tisk f, kjer bomo lahko nadomestili in morda
zbira različne informacije, ali morda ima proces poizvedbo
različne informacije.
In tako vprašanje, funkcija poizvedba ima ta pojem vrste substitucij
Zelo podobna natisniti f odstotkov ih in odstotek c, je vprašljiva.
>> In bomo lahko uporabili vprašanje Oznake zelo analogno
natisniti f nadomestnih spremenljivk.
Torej, morda vaš uporabnik prijavljen v že prej, in ste shranili svoj uporabniški ID številko
v $ _session PHP super Globalna v ključnih ID.
Mogoče po tem, ko so prijavljeni, nastavite $ _session ID je enak 10,
ekstrapolacijo iz primera smo pravkar videli drugi nazaj.
>> In tako, ko smo dejansko izvrši to poizvedbo rezultate zdaj,
bi priključite v 10, ali karkoli ID vrednost $ _session je.
In tako, da nam omogoča lahko malo bolj dinamično.
Mi ni težko kodiranje stvari več.
Mi smo varčevanje informacije nekje nato
bomo lahko ponovno uporabijo te informacije nekako posploševati, kaj želimo narediti,
in samo plug-in sprememba obnašanje naši spletni strani
temelji na kakšnem ID uporabnika številu dejansko je po tem, ko so prijavljeni.
Prav tako je mogoče, čeprav, da nastavite vaš Rezultati
lahko sestavljen iz več vrstic.
V tem primeru, imate array arrays--
niz asociativnih polj.
In morate le Ponovil skozi to.
In vemo, kako Ponovil skozi array v PHP, kajne?
Torej, tukaj je verjetno najbolj kompleksna stvar, ki smo jih videli doslej.
To dejansko združuje trije jeziki skupaj.
>> Tu v rdeči barvi, to je nekaj HTML.
Jaz sem očitno starting-- to je košček neke HTML, ki jo imam.
Začenjam nov odstavek, ki se pravi, da so mame za TV Seinfeld.
In potem takoj zatem Začenjam mizo.
In potem, ko da sem nekaj PHP, kajne?
Imam vse te kode PHP tam.
Jaz sem očitno dogaja narediti poizvedbo.
In da bi se vprašanje, bom na uporabljali SELECT matere od mame.
>> Torej je ta getting-- to SQL.
Torej modra je SQL.
Rdeča smo videli pred eno sekundo je HTML.
In zelena tukaj je PHP.
Torej delam poizvedbo na mojo zbirko podatkov, da sem
izbiranje vse matere v tabeli mame.
Ne samo skrčila, da zlasti vrstica, bom prosil za vse od njih.
>> Potem sem preveriti, če izid Ne Ene enaka false.
To je samo moj način preverjanja vrste to, če rezultati niso enaka NULL,
da vidimo C za primer.
V bistvu je to samo preverjanje, da bi prepričani, da je dejansko dobil podatke nazaj.
Ker ne želim, da začnete tiskanje iz podatkov, če nisem dobil nobenih podatkov.
Nato pa za vsako rezultate kot rezultat foreach sintakso iz PHP, vse jaz delam
izpisuje $ rezultat matere.
In tako bom dobil niz od vseh mater each--
je niz asociativnega arrays-- in sem tiskanje
vsak za svoj vrsti tabele.
In to je res lepa veliko vse kar je z njo.
Vem, da je malo bit dogaja tukaj
V tem zadnjem primeru z nizi arrays-- nizi asociativnih polj.
Ampak to res samo zavre navzdol v SQL za izdelavo poizvedbo,
običajno izbiro, ko smo že dati podatke v tabelo,
in potem samo da jo izvlečete.
>> In to je, mi bi ga potegnite v tem konkretnem primeru.
Želimo izločiti vse posamezne matere iz tabele mame.
Imamo celo vrsto njih, in smo želijo skozi Ponovil in natisnete
vsak.
Torej še enkrat, to je verjetno najbolj zapleten primer
smo videli, ker smo mešanje tri različni jeziki skupaj, kajne?
>> Spet imamo HTML tu v rdeči barvi, zmešamo z nekaj SQL tukaj v modri barvi,
zmešamo z nekaj PHP v zeleno.
Ampak vsi ti igrajo lepo skupaj, to je
samo stvar v razvoju dobre navade, tako da jih lahko dobite
da delajo skupaj, tako, kot želite.
In edini način, da se res ne da je praksa, praksa, praksa.
Sem Doug Lloyd, to je CS50.