>> [Muzikos grojimo]
Doug LLOYD: Mūsų video nuo interneto plėtros temomis
mes paminėti sąvoką duomenų bazė kelis kartus, tiesa?
Taigi duomenų esate tikriausiai susipažinęs su iš
pasakyti, naudojant Microsoft Excel ar "Google" skaičiuoklės.
Tai tikrai tik organizuotas lentelių rinkinys, eilutės, ir stulpelius.
>> Ir duomenų bazė yra kur Mūsų svetainė parduotuvės
informacija, kuri yra svarbi mūsų svetainėje, kad tinkamai veiktų.
Vėlgi, tikrai bendra pavyzdys čia yra saugoti naudotojų vardus ir slaptažodžius
į duomenų bazę, taip, kad kai vartotojas prisijungia prie mūsų svetainėje,
duomenų bazė gali būti paieškoma pamatyti jei tas vartotojas yra duomenų bazėje.
Ir jei jie yra, patikrinti, jų slaptažodis yra teisingi.
Ir jei jų slaptažodis yra teisingi, tada mes galime suteikti jiems kokia puslapis
jie prašo.
>> Taigi jūs tikriausiai vėl susipažinę su šia idėja iš Excel arba Google
Skaičiuoklės.
Mes turime duomenų bazes, stalai, eilutės, stulpeliai ir.
Ir tai tikrai Rūšiuoti Svarbiausieji rinkinys
hierarchinės gedimo čia.
Taigi čia Excel skaičiuoklę.
Ir jei jūs kada nors atidarytas tai ar kitą panašią programą
jūs žinote, kad jie čia yra rows-- 1, 2, 3, 4, 5, 6, 7.
Tai yra stulpeliai.
>> Gal žemyn čia, nors jums gali ne naudoti šią funkciją siaubingai much--
Aš padidinti in-- turime Šis lapo idėja.
Taigi gal šie lakštai, jei Aš pakaitomis pirmyn ir atgal,
Yra įvairių lentelių, kad egzistuoja mano duomenų bazėje.
Ir jei mes ir toliau pavyzdį visus būdas, šio duomenų bazės pavadinimą
yra Užsakyti 1.
Gal turiu knyga 2 ir 3 knygą.
Taigi, kiekvienas Excel failas yra duomenų, kiekvienas lapas yra lentelė,
ir viduje kiekvienos lentelės Turiu Šis eilučių ir stulpelių idėja.
>> Taigi, kaip aš dirbu su šia duomenų bazėje?
Kaip gauti informaciją iš jo?
Na ten kalba vadinama SQL-- kurį aš paprastai tiesiog paskambinkite Sequel--
ir jis stovi už Struktūrinių užklausų kalba.
Ir tai yra programavimo kalba, bet tai gana ribotas programavimas
kalba.
Tai ne visai kaip ir kiti kad mes dirbo su.
Bet tai tikslas programavimo kalba
yra užklausą duomenų bazę, į paklausti informacijos duomenų bazės,
rasti informacijos į duomenų, ir taip toliau.
>> Mes taip pat, kad CS50-- ir tai labai bendra platforma, ji vadinama "MySQL.
Štai ką mes naudojame kurso.
Tai atviro kodo platforma, kuri nustato
vadinamasis reliacinės database-- duomenų bazė, efektyviai.
Mums nereikia gauti į pernelyg daug detalių
apie tai, kas reliacinės duomenų bazės yra.
Bet SQL kalba yra puikiai sugeba dirbti
su MySQL ir kitų panašių stilius reliacinių duomenų bazių.
>> Ir dar daug įrenginiai MySQL ateiti su kažkuo
vadinamas phpMyAdmin, kuris yra grafinė vartotojo
interface-- yra GUI-- kad todėl šiek tiek daugiau
patogi vykdyti Duomenų bazės užklausos,
nes duomenų bazės nėra tik naudojamas Išplėstinė programuotojų, tiesa?
Kartais yra Šios mažos įmonės,
ir jie negali sau leisti samdyti komandą programuotojų,
bet jie vis tiek reikia laikyti informacija duomenų bazėje.
>> Kažkas panašaus phpMyAdmin labai lengva kažkam
kas manimi niekada užprogramuotas anksčiau, kad pasiimti ir susipažinti su tuo, kaip
dirbti su duomenų baze.
Problema yra, phpMyAdmin, o tai fantastinis įrankis mokymosi
apie duomenų bazių, ji yra instrukcijos.
Jūs ketinate turi prisijungti IT ir vykdyti komandas ir tipas
viskas rankiniu būdu.
>> Ir kaip mes žinome iš mūsų pavyzdys PHP web programavimas,
būtinybės rankiniu būdu padaryti dalykų mūsų svetainėje,
jei norime dinamiškas, aktyvus reaguoja svetainė, galbūt nėra pats geriausias būdas.
Norėtume rasti kelią į galbūt automatizuoti šį kažkaip.
Ir SQL leis tai padaryti.
Taigi, kai mes ketiname pradėti dirbti su SQL,
pirmiausia turime turėti duomenų bazė dirbti.
Sukurti duomenų bazę, yra ką jūs tikriausiai
darys phpMyAdmin, nes jums reikia padaryti, tai tik vieną kartą,
ir už tai sintaksė yra daug paprastesnė.
Tai daug lengviau tai padaryti į grafinę vartotojo sąsają
nei rašyti jį kaip komanda.
Komandą gali gauti šiek tiek sudėtinga.
Be to, kuriant lentelę gali gauti gana šiek tiek sudėtinga, taip pat.
Ir taip tokie dalykai kaip sukurti duomenų bazę ir sukurti lentelę, kuri esate
tikriausiai tik ketinate daryti once-- kartą per stalo, kartą per database--
viskas OK padaryti, kad grafinė sąsaja.
Atsižvelgiant į proceso sukurti lentelę, jūs
taip pat turi nurodyti visas kolonos, kurios bus iš toje lentelėje.
Kokios informacijos padaryti norite išsaugoti į lentelę?
Gal vartotojo vardas ir gimimo data, slaptažodis, vartotojo ID numerį, o gal
miestas ir valstybė, tiesa?
>> Ir kiekvieną kartą, kai mes norime pridėti vartotoją į duomenų bazę, mes norime gauti visų šešių
iš šių informacijos vienetų.
Ir mes tai darome, kad pridėjus eilutės prie stalo.
Taigi, mes pirmiausia reikia sukurti duomenų bazę, tada mes sukurti lentelę.
Kaip dalis sukuriant lentelė, mes paprašė
nurodyti kiekvieną stulpelį, mes norėtume šioje lentelėje.
Ir tada, kaip mes pradėti pridėti informacija į duomenų bazę
ir užklausos duomenų bazėje daugiau generally-- ne tik pridedant,
bet visa kita mes do-- mes būsime sprendžiant
su eilių stalo, kuris yra vienas vartotojo informacija iš visą rinkinį.
>> Taigi kiekvieną SQL stulpelis yra pajėgi laikydami duomenis tam tikros duomenų tipą.
Taigi, mes tarsi eliminuojamas tai idėja duomenų tipų PHP,
bet jie vėl čia SQL.
Ir ten yra duomenų tipų aikštelė.
Štai tik 20 iš jų, bet tai net ne visi iš jų.
Taigi, mes turime idėjų, kaip INTs-- Integers-- mes tikriausiai žinote
kad šis stulpelis gali turėti sveikieji skaičiai.
Ir yra variacijos thereon-- SMALLINT, tinyint, MEDIUMINT, bigint.
Gal mes ne visada turime keturis įkandimų.
Gal mums reikia aštuoni baitai, ir todėl mes galite naudoti šiuos variantus skaičiais
būti šiek tiek daugiau vietos veiksminga.
Mes galime padaryti dešimtųjų mes gali padaryti slankiojo kablelio skaičių.
Tai yra gana panašios.
Yra keletas skirtumų, o jei būtų
patinka žiūrėti up SQL tarsi vadovas, galite
gali pamatyti, kas šiek tiek skirtumai yra tarp jų.
>> Gal mes norime laikyti informacijos apie datą ir laiką.
Gal mes sekti kai vartotojas prisijungė prie mūsų svetainę,
ir taip gal mes norime turėti stulpelį, kad yra
data laikas arba laiko žymos, kad rodo, kai vartotojas iš tikrųjų
užsiregistravau.
Mes galime padaryti geometrija ir linestrings.
Tai tikrai gana kietas.
Mes galime suplanuoti geografinėje vietovėje aprašoma naudojant
GIS sklypas iš zoną.
Taigi iš tikrųjų galima laikyti, kad rūšiuoti Informacijos SQL skiltyje.
>> Tekstas tik milžinišką BLOB teksto, galbūt.
ENUMs yra rūšies įdomus.
Jie iš tikrųjų egzistuoja C. Mes ne kalbėti apie juos, nes jie nėra
siaubingai dažniausiai naudojamas bent CS50.
Bet tai yra išvardytų duomenų tipas, kuris yra pajėgi Holding Limited reikšmes.
>> Tikrai geras pavyzdys būtų sukurti ENUM kur septynių
Galimos reikšmės yra sekmadienis, pirmadienis, Antradienis, Trečiadienis, Ketvirtadienis, Penktadienis,
Šeštadienį, tiesa?
Tai duomenų tipas diena Savaitė neegzistuoja,
bet mes galime sukurti išvardyti duomenų tipas, pavyzdžiui
kad stulpelis gali tik kada nors turėti vienas iš tų septynių galimų verčių.
Mes išvardyti visi iš galimų reikšmių.
>> Tada mes turime CHAR ir VARCHAR, Ir aš spalva tai žalia
nes mes iš tikrųjų ketina imtis antrą
kalbėti apie skirtumą tarp šių dviejų dalykus.
Taigi CHAR, skirtingai nuo C, kur CHAR buvo vienas simbolis,
SQL char remiasi fiksuoto ilgio eilutę.
Ir kai mes sukurti šią kolona, ​​mes iš tikrųjų
gali nurodyti eilutės ilgį.
>> Taigi, šiame pavyzdyje, mes galime pasakyti, CHAR (10).
Tai reiškia, kad, kad kiekvienas elementas tame stulpelyje
sudarys 10 baitų informacijos.
Ne daugiau, ne mažiau.
Taigi, jei mes stengiamės ir įdėti į 15 bitų ar 15 simbolių elementas
arba vertė į šią skiltį, mes gauti tik pirmąsias 10.
Jei mes įdėti į dvi simbolių ilgio vertė,
mes ketiname turėti du simbolių, tada aštuoni null įkandimų.
Mes niekada efektyviau nei tai.
>> VARCHAR yra lyg Mūsų samprata eilutę
kad mes pažįstami su iš C arba nuo PHP.
Tai kintamo ilgio eilutę.
Ir, kai jūs sukuriate Šioje skiltyje jūs tiesiog
nustatyti didžiausi galimi ilgiai.
Taigi gal 99 ar paprastai 255.
Kad būtų didžiausias ilgis.
Ir todėl, jei mes buvo saugoti 15 simbolių,
mes naudoti 15 baitų, o gal 16 baitų null terminatorius.
Jeigu mes buvo saugoti trijų simbolių,
mes naudoti tris arba keturis baitus.
Bet mes ne naudoti pilną 99.
>> Taigi kodėl mes turime tiek?
Na, jei mes turime išsiaiškinti, kaip seniai kažkas yra su VARCHAR,
turime rūšies pakartoti visoje jis tiesiog, kaip mes padarėme C
ir išsiaiškinti, kur ji sustos.
Kadangi, jeigu mes žinome, kad viskas Šioje skiltyje yra 10 baitų, o gal
Mes žinome, kad informaciją, mes galime šokinėti 10 baitų, 10 baitai, 10 baitai, 10 baitai,
ir visada rasti pradžioje eilutę.
>> Taigi, mes gali turėti tam tikrų iššvaistoma erdvę su CHAR,
bet gal ten prekyba off turintys geresnį greitį
naršyti duomenų bazę.
Bet gal mes norime, kad lankstumas VARCHAR
vietoj having-- Jei mūsų CHAR buvo 255, tačiau dauguma mūsų vartotojams
buvo tik įvedusi tris ar keturis baitus Verta informacijos ir trijų ar keturių
simbolių verta informacija.
>> Tačiau kai kurie vartotojai buvo naudojama visa 255, o gal
VARCHAR būtų tikslingiau ten.
Tai tarsi prekybos išjungti, ir paprastai tikslais CS50,
Jums nereikia nerimauti per daug apie ar jūs naudojate CHAR arba VARCHAR.
Bet realiame pasaulyje, šie dalykai do klausimas, nes visi šie stulpeliai
imtis tikrąją fizinę erdvę.
Ir fizinė erdvė, į realiame pasaulyje, ateina priemoka.
>> Taigi vienas kito atlygio kai kuriate lentelę
yra pasirinkti vieną stulpelį turi būti kas vadinama pirminis raktas.
Ir pirminis raktas yra stulpelis kur kiekvienas vertė yra unikalus.
O tai reiškia, kad jūs galite lengvai išskirti vieną eilutę tiesiog ieškote
į pirminio rakto tos eilės.
Taigi, pavyzdžiui, galite Apskritai, su vartotojais,
nenoriu du vartotojus, kurie turi tą pačią vartotojo ID numerį.
Ir taip gal turite Daug informacijos,
o gal du vartotojai gali turi tą pačią name--
turite John Smith ir John Smith.
Tai nebūtinai yra problema, nes ten yra keli žmonės
pasaulyje pavadintas John Smith.
Tačiau turime tik vieną vartotojo ID numerį 10, vienas vartotojas ID numeris 11, 12, 13.
Neturime du vartotojai su tuo pačiu numeriu,
ir tai gal vartotojo ID numeriai būtų geras pirminis raktas.
>> Mes Neturime dubliavimo, Ir mes galime dabar unikaliai
nustatyti kiekvieną eilutę tiesiog pažvelgus tame stulpelyje.
Nurodykite pirminius raktus iš tikrųjų gali vėlesnius stalo operacijas
daug lengviau, nes galite sverto tai, kad kai eilutės bus
būti unikalus, arba tam tikros stulpelis savo duomenų bazės arba stalo
bus unikalus pasirinkti iš konkrečių eilučių.
>> Jūs taip pat gali turėti bendrą pirminis raktas, kuris jums gali rasti proga
naudoti, kuri yra tik derinys iš dviejų stulpelių, kad
garantuoja, kad bus unikalus.
Taigi gal turite vieną stulpelis tai kaip ir BS,
vienas stulpelis, kad vienas, du, ir tris, bet jūs tik kada nors
turėti vieną A1, vieno A2, ir taip toliau, ir taip toliau.
Tačiau galite turėti B2 A C2, arba A1, A2, A3, A4.
Taigi jums gali turėti keletą Kaip, išsėtinė BS, keli iš jų, daug poromis,
bet jūs galite kada nors tik vieno A1, B2, C3, ir taip toliau.
Taigi, kaip sakiau, "SQL yra programavimo kalba,
bet jis turi gana ribotas žodyną.
Tai ne visai taip, kaip išsiplėtusi C ir PHP ir kitomis kalbomis
kad mes kalbame kurso.
Tai daugiau daugiakalbė kalba, nei ką mes
ketiname kalbėti apie šiame vaizdo, nes šiame video
mes ketiname kalbėti apie keturi operacijos, kad mes
gali atlikti ant stalo.
>> Yra daugiau nei šis.
Mes galime padaryti daugiau nei tai, bet mūsų tikslais,
mes paprastai ketinate naudoti tik keturi operations-- įterpti,
pasirinkti, atnaujinti ir ištrinti.
Ir jūs tikriausiai galite intuityviai atspėti, ką visi šie dalykai keturių daryti.
Bet mes pereiti į šiek tiek detalumo kiekvieną iš jų.
>> Taigi tikslais tai Vaizdo, tarkime,
mes taip du stalai vienoje duomenų bazėje.
Mes turime lentelę vadinamas vartotojų, kurie turi keturių columns-- ID numerį, vardą,
slaptažodis, vardas ir pavardė.
Ir mes turime sekundę lentelėje toje pačioje duomenų bazėje
vadinamas Moms, kad tik saugo informaciją apie vardą ir motinos.
Taigi, visiems pavyzdžių Šiame vaizdo, mes
būti naudojant šią duomenų bazę ir vėlesni atnaujinimai į jį.
Taigi tarkime, mes norime pridėti informaciją stalo.
Štai ką įterpti operacija daro.
Aiškinant visus Šios komandos, aš ruošiuosi
suteikti jums bendrą skeletas naudoti.
Nes iš esmės, užklausų ketinate atrodyti gana panašūs,
mes tik ketina keičiasi šiek tiek įvairią informaciją
daryti skirtingus dalykus su stalo.
>> Taigi INSERT, skeleto atrodo lyg tai.
Mes norime, įterpti į ypač stalo.
Tada mes turime atvirą skliaustų ir stulpelių sąrašas
kad mes norime įdėti vertybes.
Uždaryti skliaustai, The Žemiau reikšmes, ir po to
mes vėl sąrašą iš vertybes mes norime įdėti į lentelę.
>> Taigi To pavyzdys būtų tokia.
Noriu įterpti į lentelę Vartotojų taip columns--
vartotojo vardą, slaptažodį ir FULLNAME.
Taigi naujos eilutės, kur aš pradėti tose trijų stulpelių ir mes
ketina įdėti į vertybių Newman, USMAIL ir Newmanas.
Taigi šiuo atveju, aš išleisti mažąją Newman
į kolonėlę vardą, slaptažodis USMAIL ir pavardė kapitalo N
Newman į FULLNAME skiltyje.
>> Taigi štai ką duomenų bazė Atrodė anksčiau.
Štai ką vartotojai stalas Top atrodė, kol mes tai padarėme.
Kai mes vykdyti šią užklausa, kurią mes gauname tai.
Mes pridėjome naują eilutę į lentelę.
Bet pastebėsite šį vieną dalyką kad aš nenurodė,
bet kažkaip aš turiu vertę už, kuris yra tai 12 čia.
Aš nesakiau aš norėjau įdėti ID numerį ten.
Norėjau įdėti vardą, slaptažodis, FULLNAME.
Ir aš padariau, kad tai gerai.
>> Bet aš taip pat turiu šį 12.
Kodėl man tai 12?
Na, it turns out, kad kai jūs apibrėžiant
kolona, ​​kuri bus jūsų pirminis raktas, kuris yra paprastai,
Kaip ir sakiau, identifikacinį numerį.
Tai ne visada būtinai ketina tapti ID numerį,
bet tai paprastai yra gera idėja būti šiek tiek sveiko skaičiaus rūšiuoti.
Jūs turite galimybę phpMyAdmin kai kuriate savo duomenų bazę
ar jūsų stalo nustatyti, kad stulpelis kaip auto pokyčio.
>> Kuris yra tikrai gera idėja, kai jūs dirbate su pirminio rakto,
nes norite kiekvieną vertę tame stulpelyje turi būti unikalus.
Ir jei jūs pamiršote nurodyti tai daugiau nei vienam asmeniui,
dabar jūs turite padėtį, kai kad stulpelis nebėra unikalus.
Jūs turite dvi ruošinius, todėl jūs galite ne ilgiau identifikuoti column--
Arba galite nebėra unikaliai nustatyti eilutę remiantis tame stulpelyje.
Jis prarado visus savo vertė, kaip pirminės raktu.
>> Ir taip, matyt, ką aš padariau Čia yra sukonfigūruota vartotojo ID
stulpelis auto prieaugio, kad kiekvienas kartą aš įdėti informaciją į lentelę,
ji bus automatiškai man vertė už pirminio rakto.
Taigi, aš niekada negali pamiršti tai padaryti, nes duomenų bazė bus tai padaryti už mane.
Taigi, kad tipo gražus.
Ir taip, tai kodėl mes gauname 12 ten, nes aš
nustatyti, kad kolonėlės iki auto prieaugio.
Jei aš pridėjo kažkas tai būčiau 13, jei aš pridėjo
kažkas tai būčiau 14, ir pan.
>> Taigi tegul tiesiog padaryti dar vieną įdėjimo.
Mes įterpti į mamų stalo, į pirma, vardas ir mama
stulpelyje vertės Kramer ir Babs Kramer.
Ir todėl mes turėjome anksčiau.
Kai mes atlikti, kad SQL užklausos, mes turime tai.
Mes pridėjome Kramer ir babs Kramer į mamų stalo.
>> Taigi, kad įterpiant.
PASIRINKITE yra tai, ką mes naudojame išgauti informacija iš lentelės.
Taigi, tai, kaip mes gauti informacija iš duomenų bazės.
Ir taip SELECT komandos bus labai dažnai naudojamas programas.
Bendras framework-- Apskritai skeletas atrodo taip.
Pasirinkite stulpelių rinkinį iš lentelė, o tada, pasirinktinai
galite nurodyti condition-- arba tai, ką mes paprastai vadiname predikato,
paprastai yra terminas, naudojamas SQL.
>> Tačiau tai iš esmės ką ypatingos eilutės norite gauti.
Jei norite, užuot viskas, susiaurinti jį žemyn,
tai kur jums būtų tai padaryti.
Ir tada pasirinktinai, taip pat galite užsisakyti konkretaus skiltyje.
Taigi gal norite turėti dalykų, surūšiuotus abėcėlės tvarka, remiantis vieno stulpelio
ar pagal abėcėlę, remiantis kitu.
>> Vėlgi, kur ir ORDER BY yra neprivalomas.
Bet jie tikriausiai bus useful-- ypač
Kur bus būti naudinga susiaurinti, todėl jūs neturite
gauti savo visą duomenų bazę ir atgal turi apdoroti, jūs tiesiog gauti
Į jį gabalus, kurie jums rūpi.
Taigi, pavyzdžiui, aš galbūt norėsite pasirinkti ID numeris ir FULLNAME iš vartotojų.
Taigi, kas gali tai atrodys?
Taigi čia mano vartotojai stalo.
Noriu pasirinkti idnum ir FULLNAME iš vartotojų.
Ką aš ketina gauti?
Aš ruošiuosi gauti tai.
Aš ne susiaurinti jį žemyn, todėl aš gauti ID numerį kiekvienoje eilutėje
ir aš gaunu visą vardą iš kiekvienos eilės.
>> GERAI.
Ką daryti, jei norite pasirinkti slaptažodį iš vartotojų WHERE-- todėl dabar
Aš pridėti sąlygą, ši predicate-- kur idnum yra mažesnis nei 12.
Taigi čia mano duomenų ir vėl, mano vartotojai stalo viršaus.
Ką aš ketina gauti, jei aš noriu pasirinkti, kad informacija, slaptažodis,
kur vartotojo vardas arba idnum yra mažesnis nei 12?
Aš ruošiuosi gauti šią Informacija atgal, tiesa?
Taip atsitinka, kad idnum yra 10 mažiau nei 12 ID numeris 11 mažiau nei 12.
Gaunu tų eilučių slaptažodį.
Štai ką aš paklausiau.
Ką apie tai?
Ką daryti, jei norite pasirinkti iš sąrašo žvaigždę mama lentelę, kurioje Nick lygus Džeris?
Gerai, pasirinkite žvaigždė yra specialus Rūšiuoti laukinių kortelę vadinamoji
kad mes naudojame gauti viską.
Taigi jie sako pasirinkite naudotojo vardas kableliais motiną, kuri
atsitiko, kad tik du stulpeliai šios lentelės
Galiu tiesiog pasirinkite žvaigždę ir gauti viską
kur Nick lygus Džeris.
Ir taip, kad tai, ką aš norėčiau gauti jei aš padariau, kad ypač užklausą.
>> Dabar, duomenų bazės didelis, nes jie leidžia
mums organizuoti informacijos galbūt šiek tiek efektyviau nei mes
priešingu atveju.
Mes nebūtinai saugoti kiekvienas suinteresuotas gabalas informacijos
apie į tą pačią lentelę vartotojui.
Mes turėjome dvi lenteles ten.
>> Mums reikia saugoti visiems mamos vardas,
o gal mes neturime socialinį saugumą skaičius, turime savo gimimo datą.
Tai ne visada reikia būti toje pačioje lentelėje.
Tol, kol mes galime apibrėžti santykiai tarp tables--
ir tai, kur, kad reliacinės duomenų terminas rūšies ateina
į play-- tol, kol mes galime apibrėžti santykiai tarp lentelių,
mes galime tarsi skaldo arba abstrakčių dalykų būdą,
kur mes tik turėti tikrai svarbi informacija
mes rūpinamės į vartotojo stalo.
Ir tada mes turime papildoma informacija ar papildomos informacijos kitose lentelėse
kad mes galime prijungti Grįžti į pagrindinį Vartotojų stalo tam tikru būdu.
>> Taigi čia mes turime šias dvi lenteles, bet ten tarp jų santykiai,
tiesa?
Atrodo vardą gali būti kažkas
kad egzistuoja bendra tarp šių dviejų skirtingų lentelių.
Taigi ką daryti, jei mes dabar turime situacija, kai mes
noriu gauti vartotojo vardą, pavardę iš vartotojas stalo ir jų motinos
vardą iš gimtosios stalo?
Neturime būdą, kaip gauti Kad ir kaip ten stovi, tiesa?
Nėra vieno stalo, kad yra tiek vardas, pavardė ir motinos vardas.
Neturime šią parinktį iš to, ką mes matėme iki šiol.
>> Ir todėl mes turime pristatyti iš Uždaroji idėja.
Ir prisijungia tikriausiai labiausiai complex--
tai tikrai dauguma sudėtinga operacija mes ketiname kalbėti apie vaizdo įrašą.
Jie šiek tiek sudėtinga, bet kai jūs gaunate pakabinti jį,
jie iš tikrųjų nėra labai blogai.
Tai tiesiog ypatingas atvejis pasirinkite.
Mes ketiname pasirinkti iš rinkinio kolonos stalo suvienija
antrame stalo kai tarinio.
>> Šiuo atveju, manau, apie tai patinka this-- viena lentelė yra vienas ratas per čia
dvi lentelės yra dar daugiau čia ratas.
Ir kad tarinys dalis viduryje, tai
tarsi, jei jūs manote apie kaip Veno diagrama, kas
jie turi bendro?
Mes norime susieti šias dvi lenteles remiantis ką jie turi bendro
ir sukurti šį hipotetinį lentelę kad yra du kartu susijungimas.
Taigi mes matome tai nurodytame pavyzdys, o gal, kad padėsime
išvalyti jį šiek tiek.
Taigi gal norite pasirinkti user.fullname ir moms.mother
iš vartotojų prisijungs mama lentelė kiekvienoje situacijoje
kur stulpelis vardas yra tarp jų tos pačios.
Ir tai yra nauja sintaksės čia šį vartotoją.
ir mama ..
Jei darau kelis stalus kartu, galiu nurodyti lentelėje.
Galiu atskirti, visų pirma dėl kad pačioje apačioje ten.
Galiu atskirti vardą skiltyje vartotojų stalo
iš vartotojo vardą skiltyje mama stalas, kurie yra otherwise--
jei mes ką tik pasakė Nick lygus Nick, kad tikrai ne
reiškia nieko.
Mes norime tai padaryti kur jie nesutampa.
>> Taigi aš galiu nurodyti lentelė ir stulpelis vardas atveju į padėtį,
kur jis būtų neaišku ką aš kalbu apie.
Taigi, kad viskas, ką aš darau yra aš sakydamas šį stulpelį iš šios lentelės,
ir yra labai aiškus.
Taigi dar kartą, aš pasirinkdami vardas, pavardė ir motinos vardas
iš vartotojų lentelės susietos kartu su mama lentelę kiekvienoje situacijoje
kur jie dalijasi kad column-- jie dalijasi ši sąvoka vardą.
>> Taigi čia yra stalai mes turėjome anksčiau.
Tai yra valstybinė mūsų duomenų, kaip jis egzistuoja dabar.
Informacija mes gavybos tai pradėti.
Tai nauja lentelė mes ketiname sukurti derinant, kartu.
Ir pastebėsite mes ne išryškinti Newman anketa eilutė vartotojo stalo,
ir mes ne išryškinti KRAMER anketa eilutė mamų stalo
nes nei vienas egzistuoja tiek sets-- abiejose lentelėse.
>> Vienintelė informacija, kuri yra bendra tarp jų yra Džeris yra abiejose lentelėse
ir gcostanza yra abiejose lentelėse.
Ir todėl, kai mes darome SQL prisijungti, ką mes get-- ir darome iš tikrųjų gauti tai.
Tai tarsi laikinas kintamasis.
Tai kaip hipotetinis Susijungimas iš dviejų lentelių.
Mes iš tikrųjų gauti kažką kaip tai, kur
mes susijungė kartu su ant stalų informacija, kad jie turi bendro.
>> Taigi pastebėti, kad users.username ir moms.username stulpelio
tai lygiai tas pats.
Tai buvo informacija, kuri buvo suderinta iš vartotojų
stalo ir mama lentelė.
Ir todėl mes susijungė juos kartu.
Mes išmesti Kramer, nes jis neegzistavo naudotojų stalo,
ir mes išmesti Newman, nes jis neegzistuoja mama lentelėje.
Taigi tai yra hipotetinis susijungimas naudojant prisijungti operacijos rinktinių.
>> Ir tada mes buvome ieškote vartotojo vardas, pavardė ir vartotojas motina,
ir todėl tai yra informacija, kuri mes gauti iš bendro užklausą
kad mes padarėme su Rinktis.
Taigi, mes prisijungė lenteles kartu ir mes išgauti tuos du stulpelius,
ir taip, kad tai, ką mes norėtume gauti.
Bet SQL prisijungia komplikuoto natūra.
Jūs tikriausiai nebus padaryti jiems per daug, bet tiesiog turėti tam tikrą skeleto idėją
, kad galėtumėte naudotis sujungti du stalai kartu, jei jums reikia.
Paskutiniai du yra tiek paprastesnis pažadu.
Taigi atnaujinti, mes galime naudoti UPDATE pakeisti informaciją lentelėje.
Bendras formatas yra atnaujinti kai stalas, nustatyti tam tikras stulpelį tam tikru vertės
Kur kai tarinys yra įvykdyta.
Taigi, pavyzdžiui, mes norime atnaujinti Vartotojų lentelę
ir nustatykite bla slaptažodį bla, kur identifikacinis numeris yra 10.
>> Taigi, šiuo atveju, mes atnaujinti Vartotojų lentelę.
ID numeris 10 kad pirmoji eilutė ten,
ir mes norime atnaujinti slaptažodis tauškalai.
Ir taip, kad tai, kas nutiktų.
Tai gana paprasta, tiesa?
Tai tiesiog labai paprastas modifikacija į lentelę.
>> DELETE yra operacija mes naudojamas pašalinti informaciją iš lentelės.
DELETE FROM stalo, kur kai tarinys yra įvykdyta.
Mes norime ištrinti iš Vartotojų lentelė pavyzdžiui
kur username is Newmanas.
Jūs tikriausiai galite atspėti, kas vyksta atsitikti čia, kai mes paleisti SQL
Užklausa Newman dingo nuo stalo.
>> Taigi visos šios operacijos, kaip aš jau sakiau, yra labai lengva padaryti phpMyAdmin.
Tai labai patogi sąsaja.
Tačiau ji reikalauja vadovą pastangų.
Mes nenorime, kad įdarbinti vadovą pastangų.
Mes norime, kad mūsų programas tai padaryti už mus, tiesa?
Taigi mes norime padaryti tai programiškai.
Mes norime įtraukti SQL ir turi kažkas tai padaryti už mus.
>> Bet ką mes matėme, kad leidžia mums programiškai padaryti kažką?
Mes matėme PHP, tiesa?
Ji pristato kai dinamiškumas į mūsų programas.
Ir taip, laimei, SQL ir PHP žaisti labai gražiai kartu.
Yra PHP funkcija vadinamas užklausos, kuris gali būti naudojamas.
Ir jūs galite praeiti, nes parametras arba argumentas
užklausti SQL užklausą, norėtumėte vykdyti.
Ir PHP tai padarys Jūsų vardu.
>> Taigi, kai jūs prijungtas į savo duomenų bazę su PHP,
ten du pirminių jums tai padaryti.
Yra kažkas vadinamas MySQLi ir kažkas vadinamas SKVN.
Mes neisiu į didžiulis suma detalė ten.
Be CS50 mes naudojame SKVN.
Po to, jūs prijungtas į savo duomenų bazę, jums
tada galite padaryti užklausas savo duomenų bazę išlaikius užklausas kaip argumentų
PHP funkcijas.
Ir, kai jūs darote, kad jums laikyti rezultatų rinkinys į masyvą.
>> Ir mes žinome, kaip dirbti su Association masyvai PHP.
Taigi, aš gali pasakyti kažką kaip this-- $ results--
Tai yra PHP-- lygus užklausą.
Ir tada viduje Užklausa funkcija šis argumentas
kad aš artimųjų užklausą kad atrodo SQL.
Ir iš tiesų tai yra SQL.
Štai Užklausos kad aš patinka vykdyti mano duomenų bazėje.
>> Ir taip raudonai, tai yra PHP.
Tai SQL, kad aš integruojant į PHP darant
tai į užklausos funkcijos argumentas.
Noriu pasirinkti FULLNAME nuo Vartotojų kur identifikacinis numeris prilygsta 10 d.
Ir tada gal po aš padariau, kad Galėčiau pasakyti kažką panašaus į tai.
Noriu išsispausdinti pranešimas Ačiū už prisijungdami.
>> Ir aš noriu ją interpolate-- Noriu interpoliuoti $ rezultatų FULLNAME.
Ir taip, kad, kaip aš dirbu su tuo masyvą, kad aš gavau atgal.
$ rezultatai FULLNAME būtų iš esmės baigti spausdinti,
Ačiū už prisijungdami, Jerry Seinfeld.
Tai buvo pilnas pavadinimas kur idnum lygus 10.
>> Ir taip visi darau yra aš now-- Aš saugomi
Mano užklausos, iš mano užklausą rezultatai ir padidėja masyvą,
ir FULLNAME yra vardas stulpelis aš buvo gauti už.
Taigi, kad mano raktas į rezultatus masyvą, kad aš noriu.
Taigi Ačiū už prisijungdami $ rezultatus, FULLNAME bus išspausdinti, prilips
tiesiai tarp tų Curly petnešos, Jerry Seinfeld.
Ir aš norėčiau atsispausdinti pranešimą Ačiū už prisijungdami Jerry Seinfeld.
>> Dabar, mes tikriausiai nenorite sunku kodas tokie dalykai kaip, kad, tiesa?
Mes galbūt norėsite padaryti kažką panašaus Spausdinti F, kur mes galime pakeisti, o gal
rinkti įvairią informaciją, arba gal turite užklausos procesą
skirtinga informacija.
Ir taip užklausą, užklausos funkcija turi tai tarsi pavadavimų samprata
labai panašios į spausdinti f procentų s ir procentai c, yra klaustukai.
>> Ir mes galime naudoti klausimą ženklai labai analogiškai
spausdinti f, kad pakaitinių kintamųjų.
Tai gal savo vartotojo prisijungęs anksčiau, ir jūs išsaugojote savo vartotojo ID numerį
į $ _SESSION PHP super Pasaulinė į rakto ID.
Taigi gal po jos prisijungus, jūs nustatote $ _SESSION ID lygus 10,
ekstrapoliuojamų iš Pavyzdžiui mes tik pamačiau antrą prieš.
>> Ir todėl, kai mes iš tikrųjų įvykdyti Ši užklausa rezultatus dabar
ji prijungti 10, ar kas $ _SESSION ID reikšmė yra.
Ir taip, kad leidžia mums būti šiek tiek labiau dinamiškas.
Mes ne sunku kodavimo dalykų nebėra.
Mes taupymo informacija kur nors ir tada
mes galime naudoti šią informaciją dar kartą rūšiuoti apibendrinti tai, ką norime daryti,
ir tiesiog plug-in ir pakeitimas mūsų puslapyje elgesį
remiantis tuo, kas naudotojo ID numeris iš tikrųjų yra, kai jie jau prisijungęs.
Taip pat įmanoma, nors, kad jūsų rezultatai nustatyti
gali sudaryti kelių eilučių.
Tokiu atveju, jūs turite AN arrays-- masyvo
Association masyvų masyvas.
Ir jūs tiesiog reikia pakartoti per ją.
Ir mes žinome, kaip pakartoti per PHP masyvas, tiesa?
Taigi čia yra tikriausiai labiausiai kompleksas dalykas, mes matėme iki šiol.
Tai iš tikrųjų sujungia trys kalbos kartu.
>> Čia raudonai, tai kai HTML.
Aš, matyt, starting-- tai kokio nors HTML kad aš fragmentą.
Aš pradedu naują pastraipą, kad Sako televizoriaus Seinfeld mamytės.
Ir tada iš karto po Aš pradedu staliuką.
Ir tada, po to, aš turėti tam tikrą PHP, tiesa?
Turiu visą šį PHP kodo ten.
Aš, matyt, ketina padaryti užklausą.
Ir padaryti užklausą, aš ruošiuosi būti naudojant SELECT motinoms IŠ mama.
>> Taigi tai yra getting-- tai SQL.
Taigi mėlyna yra SQL.
Raudona matėme antrą prieš buvo HTML.
Ir žalia čia yra PHP.
Taigi, aš padaryti užklausą mano duomenų bazėje, aš
parenkant visas motinų mama lentelėje.
Ne tik efektingai jį žemyn ypač eilutė, aš prašydama juos visus.
>> Tada aš patikrinti, ar rezultatas yra nėra lygu lygu klaidinga.
Tai tik mano būdas patikrinti Rūšiuoti informacija, jei rezultatai nėra lygus nuliui,
kad mes norėtume pamatyti C pavyzdyje.
Iš esmės tai yra tik patikrinti, kad įsitikinkite, kad jis iš tikrųjų gavo duomenis atgal.
Nes aš nenoriu pradėti spausdinti iš duomenų, jei aš negavau jokių duomenų.
Tada kiekvienai rezultatų kaip rezultatas foreach sintaksė iš PHP, visi darau
spausdina iš $ result motinas.
Ir todėl aš ruošiuosi gauti rinkinį Visų iš each-- motinos
tai yra iš masyvą arrays-- ir aš spausdinti
kiekvienas iš jų, kaip savo eilėje lentelėje.
Ir tai tikrai gana daug visi yra į jį.
Žinau, šiek tiek tiek vyksta čia
Šiame paskutiniame pavyzdyje su matricomis arrays-- masyvus Association matricos.
Bet tai tikrai tik virti nustatytų SQL priėmimo užklausą
paprastai pasirinkdami mes po jau ve įdėti informaciją į lentelę,
ir tada tiesiog traukdami jį.
>> Ir tai mes traukti ją iš šiuo konkrečiu atveju.
Mes būtų išgauti visi individo motinos iš mamų lentelėje.
Mes turime visą rinkinį iš jų, ir mes noriu pakartoti per ir atsispausdinti
kiekvienas.
Taigi dar kartą, tai tikriausiai Sudėtingiausia pavyzdys
mes matėme, nes mes maišymo trys skirtingos kalbos kartu, tiesa?
>> Vėlgi, mes turime HTML čia raudonai, sumaišyti su trupučiu SQL čia, mėlyna,
maišyti su tikru žalia PHP.
Tačiau visi šie žaisti gražiai kartu, tai
tik kurti nesvarbu gerus įpročius taip, kad jūs galite gauti
jiems dirbti kartu, kaip jūs norite.
Ir vienintelis būdas iš tiesų tai padaryti yra praktika, praktika, praktika.
Aš Doug Lloyd, tai CS50.