>> [Muzika]
DOUG Lloyd: Në videot tona mbi tema web zhvillim,
ne kemi përmendur konceptin e një bazë të dhënash disa herë, e drejtë?
Pra, një bazë të dhënash ju jeni ndoshta i njohur me nga
thonë se duke përdorur Microsoft Excel ose Google Spreadsheets.
Është me të vërtetë vetëm një i organizuar vendosur i tabelave, rreshtave dhe kolonave.
>> Dhe një bazë të dhënash është ku dyqanet tona Website
informacion që është i rëndësishëm për faqen tonë të internetit për të punuar si duhet.
Përsëri, një shembull i vërtetë i zakonshëm këtu po ruajtjen dhe fjalëkalimet
në një bazë të dhënash, në mënyrë që kur një përdorues logs në faqen tonë të internetit,
Baza e të dhënave mund të kërkohet për të parë nëse që përdoruesi ekziston në bazën e të dhënave.
Dhe në qoftë se ata janë, duke kontrolluar se fjalëkalimi i tyre është i saktë.
Dhe në qoftë se fjalëkalimi i tyre është i saktë, atëherë ne mund t'u japim atyre çfarëdo faqe
ata janë duke kërkuar.
>> Pra, ju jeni me siguri, përsëri, i njohur me këtë ide nga Excel ose Google
Spreadsheets.
Ne kemi bazat e të dhënave, tavolina, rreshta, dhe kolona.
Dhe kjo është me të vërtetë lloj i vendosur themelore
i avari hierarkik këtu.
Kështu që këtu është një spreadsheet Excel.
Dhe në qoftë se ju keni hapur ndonjëherë kjo apo një tjetër program i ngjashëm
ju e dini se këto këtu janë rows-- 1, 2, 3, 4, 5, 6, 7.
Këto janë kolona.
>> Ndoshta këtu poshtë, edhe pse ju mund të nuk e përdorin këtë funksion tmerrësisht much--
Unë do të zoom in-- ne kemi kjo ideja e një fletë.
Pra, ndoshta këto fletë, në qoftë se Unë alternativ mbrapa dhe me radhë,
tavolina të ndryshme që ekzistojnë në bazën e të dhënave time.
Dhe në qoftë se ne vazhdojmë shembullin gjithë mënyra, emri i kësaj baze të dhënash
është Libri 1.
Ndoshta unë kam Librin 2 dhe 3 Librin.
Pra, çdo skedar Excel është një bazës së të dhënave, çdo fletë është një tabelë,
dhe brenda çdo tavolinë kam kjo ide e rreshtave dhe kolonave.
>> Pra, si mund të punojnë me këtë bazë të dhënash?
Si mund të merrni informacion nga ajo?
E pra nuk është një gjuhë e quajtur SQL-- që unë zakonisht vetëm thirrje Sequel--
dhe ajo qëndron për Strukturuar Query Language.
Dhe kjo është një gjuhë programimi, por kjo është një programimit mjaft i kufizuar
gjuhë.
Kjo nuk është fare si të tjerët që ne kemi punuar me.
Por qëllimi i këtij gjuhë programimi
është për të query një bazë të dhënash, për të të kërkojë informacion nga një bazë të dhënash,
të gjeni informacion në një bazës së të dhënave, dhe kështu me radhë.
>> Ne gjithashtu, në CS50-- dhe kjo është një shumë platformë të përbashkët, ajo që quhet MySQL.
Kjo është ajo që ne i përdorim në kurs.
Kjo është një burim të hapur platformë që përcakton
një të ashtu-quajtur database-- relacionale një bazë të dhënash, në mënyrë efektive.
Ne nuk kemi nevojë për të marrë në shumë detaje
në atë bazë të dhënash relacionale është një.
Por SQL gjuha është shumë i aftë në pune
me MySQL dhe të tjera të ngjashme stilet e bazave të të dhënave relacionale.
>> Dhe shumë instalimet e MySQL vijnë me diçka
quajtur phpMyAdmin, e cila është një grafik user
interface-- një GUI-- që e bën atë një pak më shumë
përdorues miqësore për të ekzekutuar pyetje bazës së të dhënave,
sepse bazat e të dhënave nuk janë përdorur vetëm nga programuesit e avancuar, e drejtë?
Ndonjëherë ka këto biznese të vogla,
dhe ata nuk mund të përballojë për të punësojë një ekip i programuesve,
por ata ende kanë nevojë për të ruajtur informacion në një bazë të dhënash.
>> Diçka si phpMyAdmin bën shumë të lehtë për dikë
i cili është programuar kurrë më parë për të marr dhe të bëhen të njohur me atë se si
për të punuar me një bazë të dhënash.
Problemi është, phpMyAdmin, ndërsa kjo është një mjet i shkëlqyer për të mësuar
në lidhje me bazat e të dhënave, ajo është manual.
Ju jeni do të duhet të hyni në ajo dhe të ekzekutojë komandat dhe llojin
gjërat në dorë.
>> Dhe, siç e dimë nga tonë Shembulli në programimin PHP web,
që ka të bëjë me dorë gjëra në faqen tonë të internetit,
në qoftë se ne duam një dinamike, të përgjegjshëm aktiv Faqja e internetit, ndoshta jo qasja më e mirë.
Ne do të doja të gjetur një mënyrë për ndoshta Automate këtë disi.
Dhe SQL do të na mundësojë për të bërë këtë.
Pra, kur ne jemi duke shkuar për të fillojë të punojë me SQL,
ne së pari duhet të ketë një bazës së të dhënave për të punuar me të.
Krijimi i një bazë të dhënash është diçka që ju ndoshta
do të bëni në phpMyAdmin, sepse ju do të duhet vetëm për të bërë atë një herë,
dhe sintaksë për të bërë kështu është shumë më i thjeshtë.
Kjo është një shumë më e lehtë për të bërë atë në një ndërfaqen e përdoruesit grafik
se të shtypni atë si një komandë.
Komanda mund të merrni pak i rëndë.
Në mënyrë të ngjashme, duke krijuar një tabelë mund të merrni mjaft rëndë si.
Dhe kështu gjëra të tilla si krijimin e një bazë të dhënash dhe duke krijuar një tabelë, të cilat ju jeni
ndoshta vetëm do të bëjë once-- një herë në tryezë, një herë në database--
është në rregull për të bërë këtë në një ndërfaqe grafike.
Në procesin e duke krijuar një tabelë, ju do të
gjithashtu duhet të specifikojë të gjitha të shtyllat që do të jenë në atë tavolinë.
Çfarë lloj informacioni të bëjë ju doni të ruajtur në tryezë?
Ndoshta emri i një përdorues dhe data e lindjes, fjalëkalimin, numri përdorues ID, dhe ndoshta
qytet dhe shtet, e drejtë?
>> Dhe për çdo kohë doni të shtoni një përdorues në bazën e të dhënave, ne duam të merrni të gjithë gjashtë
e atyre pjesëve të informacionit.
Dhe ne bëjmë këtë duke shtuar rreshtave në tryezë.
Pra, ne së pari të krijojë një bazë të dhënash, pastaj ne të krijuar një tabelë.
Si pjesë e krijimit të një tavolinë, ne jemi pyetur
të specifikojë çdo kolonë që ne do të dëshironim në këtë tabelë.
Dhe pastaj si ne të fillojë për të shtuar informacioni në bazën e të dhënave
dhe baza e të dhënave më query generally-- jo vetëm duke shtuar,
por çdo gjë tjetër ne do-- ne do të jemi që kanë të bëjnë
me rreshtave të tabelës, e cila është një informacion përdoruesit nga grup të tërë.
>> Në mënyrë që çdo kolonë SQL është i aftë mbajtjen e të dhënave të një lloji të veçantë të të dhënave.
Pra, ne lloj eliminuar këtë Ideja e llojeve të të dhënave në PHP,
por ata janë kthyer këtu në SQL.
Dhe ka shumë lloje të të dhënave.
Këtu është vetëm 20 prej tyre, por kjo nuk është edhe të gjithë prej tyre.
Pra, ne kemi ide si INTs-- Integers-- ne ndoshta e dini
që kjo kolonë mund të mbajë integers.
Dhe ka variacione thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT.
Ndoshta ne nuk kemi gjithmonë nevojë për katër kafshon.
Ndoshta ne duhet tetë bytes, dhe kështu që ne mund të përdorni këto variacione në integers
të jetë pak më shumë hapësirë ​​të efektshme.
Ne mund të bëjmë shifra dhjetore, ne mund të bëjë lundrues numra pikë.
Këto janë mjaft të ngjashme.
Ka disa dallime, dhe në qoftë se ju do
si për të parë deri Lloj SQL e udhëzues, ju
mund të shihni se çfarë i lehtë janë dallimet në mes tyre.
>> Ndoshta ne duam të ruajtur informacion në lidhje me datën dhe kohën.
Ndoshta ne jemi mbajtja e kur përdoruesi bashkua me faqen tonë të internetit,
dhe kështu që ndoshta ne duam të ketë një kolonë që është
një herë datë ose një timestamp që tregon kur përdoruesi në fakt
nënshkruar.
Ne mund të bëjmë geometries dhe linestrings.
Kjo është në fakt shumë i ftohtë.
Ne mund të ndajë një zonë gjeografike duke përdorur
GIS koordinon për komplot nga një zonë.
Pra, në fakt mund të ruajë atë lloj e informacionit në një kolonë SQL.
>> TEXT është vetëm blobs gjigant të tekstit, ndoshta.
ENUMs janë lloj i interesante.
Ata në fakt ekzistojnë në C. Ne nuk bëjmë flasin për ta, sepse ata nuk janë të
tmerrësisht përdoret zakonisht, të paktën CS50.
Por kjo është një lloj i regjistruar të dhënave, e cila është e aftë për mbajtjen e vlerave limituar.
>> Një shembull të vërtetë të mirë këtu do të jetë për të krijuar një enum ku shtatë
Vlerat e mundëshme janë diel, e hënë, Martë, e mërkurë, e enjte, e premte,
E shtunë, e drejtë?
Atë ditë lloji i të dhënave Javën nuk ekziston,
por ne mund të krijojë një renditura lloj të dhëna të tilla
që kjo kolonë mund vetëm ndonjëherë të mbajnë një nga ato shtatë vlerave të mundshme.
Ne kemi renditur të gjithë e vlerave të mundshme.
>> Pastaj ne kemi CHAR dhe VARCHAR, dhe unë kam ngjyra këto gjelbër
sepse ne jemi në fakt do të marrë një të dytë
të flasin për ndryshim ndërmjet këtyre dy gjërave.
Pra CHAR, ndryshe nga C ku CHAR ishte një karakter të vetëm,
në SQL një CHAR referohet një varg gjatësi fikse.
Dhe kur ne të krijuar këtë kolona, ​​ne fakt
mund të specifikojë gjatësinë e vargut.
>> Pra, në këtë shembull, mund të themi CHAR (10).
Kjo do të thotë se çdo element i këtij kolonë
do të përbëhet nga 10 bytes të informacionit.
Jo më shumë, jo më pak.
Pra, nëse ne përpiqemi dhe të vënë në një 15 bit ose një element 15 karakter
ose vlera në këtë kolonë, ne jemi vetëm të marrë 10 e parë.
Në qoftë se ne kemi vënë në dy Vlera karakter të gjatë,
ne do të kemi dy karaktere, dhe pastaj tetë kafshon null.
Ne kurrë nuk do të jetë më efikas se kaq.
>> Një VARCHAR është lloj i si nocioni ynë i një varg
se ne jemi të njohur me nga C ose nga PHP.
Është një varg gjatësi variabël.
Dhe kur ju krijoni kjo kolonë, ju vetëm
specifikojë gjatesite maksimale të mundshme.
Pra, ndoshta 99, ose zakonisht 255.
Kjo do të jetë gjatësia maksimale.
Dhe kështu që në qoftë se ne kemi qenë magazinimin e 15 varg karakter,
ne do të përdorim 15 bytes, ndoshta 16 bytes për terminator null.
Në qoftë se ne u ruajtjen një tre varg karakter,
ne do të përdorim tre ose katër bytes.
Por ne nuk do të përdorim të plotë 99.
>> Pra, pse do të kemi të dy?
E pra, në qoftë se ne duhet të kuptoj se si diçka gjatë është me një VARCHAR,
ne duhet të llojit të iterate gjithë ajo ashtu si ne e bëmë në C
dhe kuptoj se ku ndalet.
Ndërsa në qoftë se ne e dimë se gjithçka në këtë kolonë është 10 bytes, ndoshta
ne e dimë këtë informacion, ne mund të kërcejnë 10 bytes, 10 bytes, 10 bytes, 10 bytes,
dhe gjithmonë gjeni fillimi i vargut.
>> Pra, ne mund të ketë disa tretur hapësirë ​​me një char,
por ndoshta ka një tregti off e të pasurit shpejtësi më të mirë
në lundrimit bazën e të dhënave.
Por ndoshta ne dëshironi fleksibiliteti i një VARCHAR
në vend të having-- Nëse CHAR ynë ishte 255, por shumica e përdoruesve tonë
ishin vetëm inputting tre ose katër bytes vlerë e informacionit ose tre ose katër
karaktere vlerë e informacionit.
>> Por disa përdorues janë duke përdorur të gjithë 255, ndoshta
VARCHAR do të jetë më e përshtatshme atje.
Kjo është lloj i një tregti off, dhe përgjithësisht për qëllime të CS50,
ju nuk duhet të shqetësohen shumë për nëse ju përdorni një char apo një VARCHAR.
Por në botën reale, këto gjëra kanë rëndësi, sepse të gjitha këto kolona
marrë hapësirë ​​aktuale fizike.
Dhe hapësirë ​​fizike, në bota e vërtetë, vjen në një premium.
>> Pra, një konsideratë tjetër kur ju jeni ndërtimin e një tryezë të
është që të marr një kolonë të jetë atë që quhet një kyç primar.
Dhe një kyç primar është një kolonë ku çdo vlerë e vetme është unik.
Dhe kjo do të thotë që ju mund të lehtë marr nga një rresht të vetëm vetëm duke shikuar
në kyç primar të atij rresht.
Kështu për shembull, ju në përgjithësi, me përdoruesit,
nuk duan dy përdoruesit të cilët kanë të njëjtin numër përdorues ID.
Dhe kështu që ndoshta ju keni shumë e informacionit,
dhe ndoshta dy përdoruesit mund kanë të njëjtën name--
ju keni John Smith dhe John Smith.
Kjo nuk është domosdoshmërisht një problem, sepse ka njerëz të shumta
në botë me emrin John Smith.
Por ne kemi vetëm një përdorues numrin ID 10, një përdorues numër 11, 12, 13 ID.
Ne nuk kemi dy përdoruesit me numër të njëjtë,
dhe kështu ndoshta numrat përdorues ID do të jetë një çelës i mirë primar.
>> Ne nuk kemi asnjë dyfishimin, dhe ne tani mund unike
të identifikojë çdo rresht të vetëm vetëm duke shikuar në atë kolonë.
Zgjedhja çelësat primar në fakt mund të të bëjë operacionet e mëvonshme tryezë
shumë më e lehtë për shkak se ju mund të levave fakti që rreshtat e caktuara do të
të jetë unike, ose një kolonë të caktuar e bazës së të dhënave ose tabelë
do të jetë unik për të marr Rreshtave jashtë veçanta.
>> Ju gjithashtu mund të ketë një primar të përbashkët kyçe, të cilat ju mund të gjenin një pretekst
për t'u përdorur, e cila është vetëm një kombinimi i dy kolonave që
është e garantuar të jetë unike.
Pra, ndoshta ju keni një të tillë Kolona se si dhe BS,
një kolonë që është një, dy, dhe tre, por ju do të vetëm ndonjëherë
kanë një A1 të vetme, një single A2, dhe kështu me radhë e kështu me radhë.
Por ju mund të keni një B2, një C2, ose një A1, A2, A3, A4.
Kështu që ju mund të keni sa të shumta, të shumta BS, ato të shumta, twos të shumta,
por ju mund vetëm ndonjëherë të ketë një single A1, B2, C3, etj.
Pra, siç thashë, SQL është një gjuhë programimi,
por ajo ka një fjalor të kufizuar në mënyrë të drejtë.
Kjo nuk është mjaft aq i shtrirë sa C dhe PHP dhe gjuhë të tjera
që ne flasim në kurs.
Kjo është më shumë një fjalëshumë gjuha sesa ajo që ne jemi
do të flasim për këtë në Video, sepse në këtë video
ne do të flasim për katër operacionet që ne
mund të kryejnë në një tryezë.
>> Ka më shumë se kjo.
Ne mund të bëjmë më shumë se kjo, por për qëllimet tona,
ne jemi në përgjithësi do të jetë duke përdorur vetëm katër insert operations--,
zgjidhni, të rinovuar, dhe fshini.
Dhe ju mund ndoshta me mend intuitive çfarë të katër këto gjëra bëjnë.
Por ne do të shkojnë në një grimë i detajuar për secilën prej tyre.
>> Pra, për qëllime të këtij Video, le të supozojmë
ne kemi në vijim dy tavolina në një bazë të dhënash të vetme.
Ne kemi një tabelë të quajtur Përdoruesit që ka katër columns-- numrin ID, emrin,
fjalëkalimin, dhe emrin e plotë.
Dhe ne kemi një sekondë tabela në të njëjtin dhënave
quajtur moms që vetëm ruan informacion rreth një username dhe një nënë.
Pra, për të gjithë shembujt në këtë video, ne do të
të përdorin këtë bazë të dhënash dhe Përditësimet e mëvonshme për të.
Pra, le të thonë se ne duam të shtoni informacion në një tryezë.
Kjo është ajo që bën futur operacion.
Në shpjegimin të gjithë këto komanda, unë jam duke shkuar
për të ju jap një skelet të përgjithshme për të përdorur.
Sepse në thelb, pyetje do duken mjaft të ngjashme,
ne jemi vetëm duke shkuar për të ndryshuar pjesë pak më të ndryshme të informacionit
për të bërë gjëra të ndryshme me tryezë.
>> Pra, për INSERT, skeletit duket lloj i si kjo.
Ne duam të futur në një tabelë të veçantë.
Pastaj ne kemi një kllapë të hapur dhe një listë e shtyllave
që ne duam të vënë vlerat në.
Mbylle kllapa, pas vlerat, dhe pastaj
përsëri, ne lista nga vlerat ne duam të vënë në tryezë.
>> Pra, një shembull i kësaj do të jetë në vijim.
Unë dua të futur në tryezë Përdoruesit columns-- vijim
emrin, fjalekalimin dhe fullname.
Pra, një rresht të ri, ku unë jam vënë në këto tri kolona dhe ne jemi
do të vënë në vlerat Newman, USMAIL, dhe Newman.
Pra, në këtë rast, unë jam vënë Newman vogle
në kolonën emrin, fjalëkalimin USMAIL, dhe kryeqyteti i plotë emri N
Newman në kolonën fullname.
>> Kështu që këtu është ajo që baza e të dhënave dukej si më parë.
Ja se çfarë tryeza përdoruesve në Top dukej si më parë ne e bëmë këtë.
Pasi ne ekzekutojë këtë pyetje, ne të merrni këtë.
Ne kemi shtuar një rresht të ri në tryezë.
Por vini re këtë gjë që unë nuk përcaktoi,
por disi kam një vlerë për të, e cila është ky 12 e drejtë këtu.
Unë nuk them kam kërkuar për të vënë numrin e ID në atje.
Unë të kërkuar për të vënë emrin, fjalëkalimin, fullname.
Dhe unë e bëri atë, kjo është në rregull.
>> Por unë gjithashtu mori këtë 12.
Pse nuk kam marrë këtë 12?
E pra, ajo rezulton se kur ju jeni të definimit
një kolonë që do të jetë tuaj kyç primar, e cila është zakonisht,
si i tha, një numër ID.
Kjo nuk është gjithmonë domosdoshmërisht do të jetë një numër ID,
por kjo është zakonisht një ide e mirë për të të jetë një lloj vlere integer.
Ju keni një mundësi në phpMyAdmin kur ju jeni duke krijuar bazën e të dhënave tuaja
ose tavolina juaj për të vendosur se kolona si bën rritjen auto.
>> E cila është një ide me të vërtetë e mirë, kur ju jeni duke punuar me një kyç primar,
sepse ju doni çdo vlerë në atë kolonë të jetë unike.
Dhe në qoftë se ju harroni të specifikoni ajo për më shumë se një person,
ju tani keni një situatë ku se kolona nuk është më unike.
Ju keni dy bosh, kështu që ju nuk mund të më unike të identifikuar një column--
ose ju nuk mund në mënyrë unike identifikojnë një rresht të bazuar në atë kolonë.
Ajo ka humbur të gjitha të saj Vlera si një kyç primar.
>> Dhe kështu me sa duket atë që kam bërë këtu është konfiguruar ID e përdoruesit
kolonë të rritjes auto në mënyrë që çdo herë që unë të shtoni informacion në tryezë,
kjo automatikisht do të më jepni një vlerë për kyç primar.
Kështu që unë kurrë nuk mund të harrojmë për të bërë atë, sepse baza e të dhënave do të bëjë atë për mua.
Pra, kjo është lloj i bukur.
Dhe kështu kjo është arsyeja pse ne kemi marrë 12 në atje, sepse unë kam
vendosur atë kolonë deri në rritjes auto.
Në qoftë se kam shtuar dikë tjetër ajo do të jetë 13, në qoftë se kam shtuar
dikush tjetër ajo do të jetë 14, dhe kështu me radhë.
>> Pra, le të vetëm të bëjë një futje më shumë.
Ne do të futur në tryezë moms, në Veçanërisht, emri i përdoruesit dhe nëna
kolona, ​​vlerat Kramer dhe Babs Kramer.
Dhe kështu që ne kishim këtë para.
Pasi kemi ekzekutuar se SQL query, ne kemi këtë.
Ne kemi shtuar Kramer dhe Babs Kramer në tryezë moms.
>> Kështu që është futur.
SELECT është ajo që ne përdorim për nxjerrjen informacion nga tabela.
Pra, kjo është se si ne të merrni informacion nga bazën e të dhënave.
Dhe komandat kështu që zgjidhni do të jetë përdorur shumë shpesh në programimin.
Gjenerali framework-- skelet i përgjithshëm duket si ky.
Zgjidh një sërë kolona nga një tavolinë, dhe pastaj opsionale
ju mund të specifikoni një condition-- ose ajo që ne zakonisht e quajmë një kallëzues,
zakonisht është termi që përdorim në SQL.
>> Por kjo është në thelb ajo që rreshtave të veçantë ju doni të merrni.
Nëse ju doni të, në vend të gjetjes së çdo gjë, ngushtuar atë poshtë,
kjo është ajo ku ju do të bëni atë.
Dhe pastaj opsionale, ju gjithashtu mund të porositur nga një kolonë të veçantë.
Pra, ndoshta ju dëshironi të keni gjërat e renditura alfabetike bazuar në një kolonë
ose alfabetike bazuar në një tjetër.
>> Përsëri, KU dhe ORDER BY janë fakultative.
Por ata ndoshta do të jetë useful-- veçanërisht
KU do të jenë të dobishme për kufizoni kështu që ju nuk e bëni
të marrë të gjithë bazës së të dhënave tuaj mbrapa dhe duhet ta përpunojë atë, ju vetëm merrni
copat e tij që ju intereson.
Kështu për shembull, unë mund të dëshironi të zgjidhni Numri i ID dhe fullname nga përdoruesit.
Pra, çfarë mund të duket kjo si?
Kështu që këtu është tabela përdoruesit ime.
Unë dua për të zgjedhur idnum dhe fullname nga përdoruesit.
Çfarë jam unë do të merrni?
Unë jam duke shkuar për të marrë këtë.
Unë nuk e kam ngushtuar atë poshtë, kështu që unë jam duke marrë numrin e ID për çdo rresht
dhe unë jam marrë të plotë emrin nga çdo rresht.
>> NE RREGULL.
Çka nëse unë dua të zgjidhni fjalëkalimin nga përdoruesit WHERE-- kështu tani
Unë jam duke shtuar një gjendje, një predicate-- ku idnum është më pak se 12.
Kështu që këtu është baza e të dhënave e mia përsëri, Përdoruesit tryezën time të lartë.
Çfarë jam unë do të marrë në qoftë se unë dua të zgjidhni këtë informacion, fjalëkalimi,
ku ID e përdoruesit ose idnum është më pak se 12?
Unë jam duke shkuar për të marrë këtë informacion prapa, e drejtë?
Kjo ndodh se idnum është 10, më pak se 12, numri i ID 11 më pak se 12.
Unë jam marrë fjalëkalimin për këto rreshta.
Kjo është ajo që kam kërkuar.
Po në lidhje me këtë?
Çka nëse unë dua të zgjidhni yll nga moms tabelë ku emri i përdoruesit është e barabartë me Jerry?
OK, zgjidhni yll është i veçantë lloj kartë të egra ashtuquajtura
që ne përdorim për të marrë gjithçka.
Pra, ata janë duke thënë, përzgjidhni emri përdorues nënën presje, e cila
ka ndodhur të jetë e vetmja Dy kolonat e kësaj tryeze,
Unë vetëm mund të zgjidhni yll dhe të marrë çdo gjë
ku emrin e barabartë Jerry.
Dhe kështu kjo është ajo që unë do të merrni në qoftë se unë e bëra atë pyetje të veçantë.
>> Tani, Bazat e të dhënave janë e madhe, sepse ato lejojnë
na për të organizuar informacione mbase pak më efikase se ne
mund të ndryshe.
Ne nuk domosdoshmërisht për të ruajtur çdo pjesë e rëndësishme e informacionit
në lidhje me një përdorues në të njëjtën tryezë.
Ne kishim dy tavolina atje.
>> Ne kemi nevojë për të ruajtur emri i nënës gjithëve së,
dhe ndoshta ne nuk kemi sigurimet shoqërore numër, ne kemi datën e tyre të lindjes.
Që nuk ka gjithmonë nevojë që të jetë në të njëjtin tabelës.
Për sa kohë që ne mund të përcaktojë marrëdhëniet midis tables--
dhe kjo është ajo ku ajo relacionale Termi bazës së të dhënave lloj i vjen
në play-- aq kohë sa ne mund të përcaktojë marrëdhëniet në mes të tabelave,
ne mund të lloj compartmentalize ose gjëra abstrakte një mënyrë,
ku ne vetëm kemi informacion të vërtetë e rëndësishme
kemi kujdes për në tabelën e përdoruesit.
Dhe pastaj kemi informacione ndihmëse ose informacion shtesë në tabela të tjera
që ne mund të lidheni përsëri në kryesore Përdoruesit tavolinë në një mënyrë të veçantë.
>> Pra, këtu ne kemi këto dy tavolina, por ka një marrëdhënie mes tyre,
e drejtë?
Duket sikur emrin e përdoruesit mund të jetë diçka
që ekziston në mes të përbashkëta këto dy tavolina të ndryshme.
Pra, çfarë nëse ne tani kemi një situatë ku ne
doni të merrni emrin e plotë të një përdoruesi nga Tabela e përdoruesit, dhe nënës së tyre
emrin nga tabela e nënës?
Ne nuk kemi një mënyrë për të marrë se si ajo qëndron, e drejtë?
Nuk ka asnjë tabelë e vetme që përmban si emri i plotë dhe emri i nënës.
Ne nuk e kemi atë mundësi nga ajo që kemi parë deri tani.
>> Dhe kështu që ne kemi për të futur ideja e një JOIN.
Dhe bashkohet ndoshta Më të complex--
është e vërtetë operacioni më komplekse ne jemi duke shkuar për të folur në lidhje në video.
Ata janë pak e komplikuar, por një herë ju merrni ul receptorin e telefonit të tij,
ata në të vërtetë nuk janë shumë të këqija.
Kjo është vetëm një rast i veçantë i një SELECT.
Ne jemi duke shkuar për të zgjedhur një sërë kolona nga një tryezë të bashkuar
në një tryezë të dytë në një kallëzues.
>> Në këtë rast, të mendojnë për atë si this-- Tabela e një është një rreth mbi këtu,
Tabela e dy është një tjetër rreth këtu.
Dhe kjo pjesë kallëzues në mes, është
lloj si në qoftë se ju mendoni se rreth si një diagram venn, çfarë
ata kanë të përbashkët?
Ne duam të lidhin këto dy tavolina bazuar në atë që ata kanë të përbashkët
dhe për të krijuar këtë tabelë hipotetike që është bashkimi i të dy së ​​bashku.
Pra, ne do të shohim këtë në një shembull dhe ndoshta kjo do të ndihmojë
qartë atë pak.
Pra, ndoshta ju doni të zgjidhni user.fullname dhe moms.mother
nga përdoruesit e bashkuar në moms tavolinë në çdo situatë
ku kolona emrin është e njëjtë mes tyre.
Dhe kjo është një e re sintaksës këtu, këtë përdorues.
dhe moms ..
Në qoftë se unë jam duke bërë tavolina të shumta së bashku, unë mund të specifikoni një tryezë.
Unë mund të dallojë në On veçantë që më në fund të fund atje.
Unë mund të dallojë emrin e përdoruesit kolona e tabelës përdoruesve
nga kolona emrin e tavolinë moms, të cilat janë otherwise--
në qoftë se ne vetëm tha emrin e barabartë me emrin, që nuk ka të vërtetë
do të thotë asgjë.
Ne duam të bëjmë atë ku ata përputhen.
>> Kështu që unë mund të specifikoni në tryezë dhe Emri kolona në rast të një situate
ku ajo do të jetë e paqartë çfarë jam duke folur rreth.
Pra, kjo është e gjitha unë jam duke bërë është unë jam duke thënë se këtë kolonë nga kjo tabelë,
dhe duke qenë shumë i qartë.
Pra, përsëri, unë jam duke zgjedhjen e emrin e plotë dhe emrin e nënës
nga tabela e përdoruesve të lidhura së bashku me tabela moms në çdo situatë
ku ata ndajnë këtë column-- ata ndajnë këtë nocion emrin e përdoruesit.
>> Kështu që këtu janë tabelat e kemi pasur më parë.
Kjo është gjendja e tona bazës së të dhënave siç ekziston tani.
Informacioni ne jemi nxjerrjen është kjo për të filluar me.
Kjo është tryeza e re ne jemi duke shkuar për të krijuar kombinuar këto së bashku.
Dhe vini re ne nuk jemi duke theksuar Rresht Newman në tryezën e përdoruesit,
dhe ne nuk jemi duke theksuar Rresht kramer në tabelën moms
sepse as njëra ekziston në si sets-- në të dy tabelat.
>> I vetmi informacion që është e përbashkët në mes tyre është Jerry është në të dy tabelat
dhe gcostanza është në të dy tabelat.
Dhe kështu, kur ne bëjmë të SQL të bashkohen, ajo që ne get-- dhe ne bëjmë në fakt të marrë këtë.
Kjo është lloj i një ndryshore të përkohshme.
Është si një hipotetike bashkimi i dy tabelave.
Ne fakt të marrë diçka si kjo, ku
ne kemi shkrirë së bashku tabelat në informacioni që ata kanë të përbashkët.
>> Pra, vini re se users.username dhe kolona moms.username,
kjo është saktësisht e njëjtë.
Kjo ishte informacioni që ishte në përputhje nga përdoruesit
tryezë dhe tabela moms.
Dhe kështu që ne shkrirë ato së bashku.
Ne fshi Kramer, sepse ai nuk ekzistonte në tabelën e përdoruesit,
dhe ne fshi Newman, sepse ai nuk ka ekzistuar në tabelë moms.
Pra, kjo është bashkim hipotetike duke përdorur të bashkohet me funksionimin e SELECT.
>> Dhe pastaj ne kemi qenë duke kërkuar për Emri i plotë përdoruesit dhe nëna e përdoruesit,
dhe kështu ky është informacioni që ne do të merrni nga pyetje të përgjithshme
që kemi bërë me SELECT.
Pra, ne u bashkua me tavolina së bashku dhe ne nxjerrë këto dy kolona,
dhe kështu që kjo është ajo që ne do të merrni.
Por SQL bashkohet me një lloj të komplikuar.
Ju ndoshta nuk do t'u bëjë shumë, por vetëm kanë disa ide të skeletit
që ju mund të përdorni të bashkojë dy tavolina së bashku, nëse ju nevojitet për të.
Dy të fundit janë një bit thjeshtë unë premtoj.
Pra përditësimin, ne mund të përdorim UPDATE të ndryshojë informacionin në një tavolinë.
Formati i përgjithshëm është UPDATE disa tavolinë, vendosur disa kolonë për disa vlera
Ku disa kallëzues është i kënaqur.
Kështu për shembull, ne mund të dëshironi për të rinovuar tabela e përdoruesve
dhe të vendosur fjalëkalim për yada yada, ku numri ID është 10.
>> Pra, në këtë rast, ne jemi përditësimin tabela e përdoruesve.
Numri ID është 10 për se radhën e parë atje,
dhe ne duam për të rinovuar Fjalëkalimi për yada yada.
Dhe kështu kjo është ajo që do të ndodhë.
Është shumë e thjeshtë, apo jo?
Është vetëm një shumë e thjeshtë modifikim në tryezë.
>> DELETE është operacioni kemi përdorur për të hiqni informacion nga një tavolinë.
Fshini nga tabelë ku disa kallëzues është i kënaqur.
Ne duam të fshini nga Përdoruesit tavolinë për shembull,
ku emri i përdoruesit është Newman.
Ju ndoshta mund të me mend se çfarë do të ndodh këtu pasi ne të ekzekutuar atë SQL
pyetje, Newman është zhdukur nga tabela.
>> Pra, të gjitha këto operacione, siç kam thënë, janë shumë të lehtë për të bërë në phpMyAdmin.
Kjo është një ndërfaqe shumë përdorues miqësore.
Por kjo kërkon përpjekje të manual.
Ne nuk duam të punësojnë përpjekje manual.
Ne duam që programet tona për bëni këtë për ne, apo jo?
Pra, ne mund të dëshironi të bëni kjo programuar.
Ne duam të përfshijnë SQL dhe kanë diçka tjetër për të bërë këtë për ne.
>> Por ajo që kemi parë që lejon ne të programuar të bërë diçka?
Ne kemi parë PHP, e drejtë?
Ai fut disa Dinamizmi në programet tona.
Dhe kështu për fat të mirë, SQL dhe PHP luajnë shumë mirë së bashku.
Ka një funksion në PHP quajtur pyetje, të cilat mund të përdoret.
Dhe ju mund të kalojë si parametër apo argumenti
për të query një query SQL që ju do të donte për të ekzekutuar.
Dhe PHP do të bëjë atë në emër tuaj.
>> Pra, pasi ju keni lidhur në bazën e të dhënave tuaja me PHP,
ka dy paraprake ju bëni këtë.
Ka diçka të quajtur MySQLi dhe diçka që quhet PDO.
Ne nuk do të shkojë në një të madhe Shuma detaje atje.
Në CS50 ne përdorim PDO.
Pasi ta keni lidhur në bazën e të dhënave tuaj, ju
atëherë mund të bëjë pyetje bazës së të dhënave tuaj duke kaluar pyetje si argumente
me funksionet PHP.
Dhe kur ju bëni këtë, ju ruani rezultojnë të vendosur në një grup associative.
>> Dhe ne e dimë se si të punojnë me vargjeve associative në PHP.
Kështu që unë mund të them diçka si this-- $ results--
kjo është në PHP-- barabartë pyetje.
Dhe pastaj brenda e Funksioni pyetje se argumenti
që unë jam duke kaluar në query që duket si SQL.
Dhe në fakt kjo është SQL.
Kjo është string query që unë do të si për të ekzekutuar në bazën e të dhënave tim.
>> Dhe kështu në të kuqe, kjo është PHP.
Kjo është SQL që unë jam integruar në PHP duke
ajo argumenti me funksionin pyetje.
Unë dua për të zgjedhur fullname nga Përdoruesit ku numri i ID i barabartë me 10.
Dhe atëherë ndoshta pasi kam bërë atë, Unë mund të them diçka si kjo.
Unë dua të shtypura jashtë mesazh Faleminderit për prerjet në.
>> Dhe unë dua atë interpolate-- unë dua të fut rezultatet $ fullname.
Dhe kështu kjo është se si kam punuar me atë array associative që u ktheva.
$ Rezultatet fullname do në thelb përfundojnë shtypjen jashtë,
Faleminderit për prerjet në, Jerry Seinfeld.
Ky ishte emri i plotë ku idnum barabartë me 10.
>> Dhe kështu të gjitha unë jam duke bërë po unë jam now-- I ruajtur
query im, rezultatet e pyetjes sime dhe rezulton në një rrjet asociative,
dhe fullname është emri i kolona I was getting për.
Pra, kjo është çelësi im në rezultatet array associative që unë dua.
Pra, Faleminderit për prerjet në, $ rezultatet, fullname do të shtypura jashtë, do të rrinë
të drejtë në mes të këtyre kaçurrel formatimin e teksteve, Jerry Seinfeld.
Dhe unë do të doja të shtypura jashtë mesazhit Faleminderit për prerjet në Jerry Seinfeld.
>> Tani, ne ndoshta nuk duan të vështirë Kodi gjëra të tilla në, e drejtë?
Ne mund të dëshironi të bëni diçka si të shtypura f, ku ne mund të zëvendësojë dhe ndoshta
mbledhin informacione të ndryshme, ose ndoshta kanë procesin pyetje
informacione të ndryshme.
Dhe kështu query, funksioni pyetje ka Ky nocion i lloj zëvendësime
shumë të ngjashme për të shtypur f qind s dhe c qind, është pikëpyetje.
>> Dhe ne mund të përdorim pyetje shënon shumë analoge
për të shtypur dh të variablave zëvendësues.
Pra, ndoshta përdorues juaj identifikuar më herët, dhe ju shpëtuam përdoruesit numrin e tyre ID
në $ _session e PHP super global në ID kyç.
Pra, ndoshta pasi keni hyrë në, keni vendosur $ _session ID e barabartë me 10,
nxjerrjen nga shembulli ne vetëm e pa një të dytë më parë.
>> Dhe kështu, kur ne fakt ekzekutuar ky query rezultatet tani,
kjo do të vihet në prizë 10, apo çfarëdo vlera $ _session ID është.
Dhe kështu që na lejon të të jetë pak më dinamike.
Ne nuk jemi të vështirë kodim gjërat në më.
Ne jemi duke kursyer informacion diku dhe pastaj
ne mund të përdorin këtë informacion për të përsëri lloj i përgjithësuar atë që ne duam të bëjmë,
dhe vetëm plug-in dhe ndryshimi sjellja e faqes tonë
në bazë të çfarë numri ID e përdoruesit të vërtetë është pasi ata kanë hyrë në.
Është gjithashtu e mundur, edhe pse, se rezultatet e tu i vunë
mund të përbëhet nga disa rreshta.
Në të cilin rast, ju keni një grup i arrays--
një grup prej vargjeve associative.
Dhe ju vetëm duhet të iterate nëpërmjet saj.
Dhe ne e dimë se si për të iterate përmes një grup në PHP, e drejtë?
Kështu që këtu është ndoshta më gjë komplekse ne kemi parë deri tani.
Ajo në fakt integron tri gjuhë së bashku.
>> Këtu në të kuqe, kjo është një HTML.
Unë jam me sa duket starting-- kjo është një copë e disa HTML që kam.
Unë jam duke filluar një paragraf të ri që thotë se moms të TV-së Seinfeld.
Dhe pastaj menjëherë më pas Unë jam duke filluar një tabelë.
Dhe pastaj pas kësaj, unë kanë disa PHP, apo jo?
Unë kam të gjithë të këtij kodi PHP në atje.
Unë jam me sa duket duke shkuar për të bërë një pyetje.
Dhe për të bërë pyetje, unë jam duke shkuar për të jetë duke përdorur nëna Zgjidh nga moms.
>> Pra, kjo është getting-- kjo është SQL.
Pra blu është SQL.
E kuqe ne pamë një të dytë më parë ishte HTML.
Dhe gjelbër këtu është PHP.
Kështu që unë jam duke e bërë një pyetje në bazën e të dhënave tim, unë jam
përzgjedhur gjithë e nënat në tabelë Moms.
Jo vetëm ngushtuar atë poshtë për të veçantë rresht, unë jam duke kërkuar për të gjithë ata.
>> Pastaj unë kontrolloj nëse rezultati është jo të barabartë barabartë rreme.
Kjo është vetëm mënyra ime e kontrolluar lloj e nëse rezultatet nuk është e barabartë me null,
se ne do të shohim c për shembull.
Në thelb kjo është vetëm duke kontrolluar për të bërë i sigurt se ai në fakt mori të dhënat e mbrapa.
Sepse unë nuk dua të filluar shtypjen nga të dhënat e nëse unë nuk e kam marrë asnjë të dhënë.
Pastaj për çdo rezulton si rezultat Sintaksa foreach nga PHP, të gjitha unë jam duke bërë
është shtypje nga nënat rezultat $.
Dhe kështu që unë jam duke shkuar për të marrë një sërë të gjitha nënat e each--
është një grup i associative arrays-- dhe unë jam shtypje nga
secili si rresht e vet të një tryezë.
Dhe kjo është me të vërtetë mjaft sa e gjitha nuk është për atë.
Unë e di se ka pak bit ndodh këtu
në këtë shembull të fundit me vargjeve të arrays-- vargjeve të vargjeve associative.
Por me të vërtetë ka vetëm të valoj poshtë në SQL për të bërë një pyetje,
zakonisht zgjedhur pasi ne kemi tashmë vënë informacion në tryezë,
dhe pastaj vetëm të tërhequr atë jashtë.
>> Dhe kjo është që ne do të tërheqë atë në këtë rast të veçantë.
Ne do të ekstrakt gjithë e individit Nënat nga tabela Moms.
Ne morëm një seri e tërë e tyre, dhe ne duan të iterate nëpër dhe të shtypura nga
cdo njeri.
Pra, përsëri, kjo është ndoshta shembulli më i komplikuar
ne kemi parë, sepse ne jemi përzierjen tre gjuhë të ndryshme së bashku, apo jo?
>> Përsëri, ne kemi HTML këtu në të kuqe, të përziera me disa SQL këtu në blu,
të përziera me disa PHP në të gjelbër.
Por të gjitha këto luajnë bukur së bashku, është e
vetëm një çështje e zhvillimit të zakonet e mira në mënyrë që ju mund të merrni
ata që të punojnë së bashku në mënyrë që ju dëshironi.
Dhe e vetmja mënyrë për të vërtetë të bëjë atë është praktikë, praktikë, praktikë.
Unë jam Doug Lloyd, kjo është CS50.