>> [Muusika mängib]
DOUG LLOYD: Meie videod veebiarendust teemasid,
oleme mainitud mõiste andmebaasi paar korda, eks?
Nii andmebaasi olete ilmselt tuttav alates
st kasutades Microsoft Excel või Google'i tabeleid.
See on tõesti lihtsalt organiseeritud tabelite ridade ja veergude.
>> Ja andmebaas on koht, kus Meie kodulehel kauplustes
teavet, mis on oluline meie kodulehel korralikult tööle.
Jällegi väga levinud näiteks siin salvestab kasutajanimed ja paroolid
Andmebaasis nii, et kui kasutaja logib meie kodulehel,
andmebaasi saab teha päringuid näha kui see kasutaja olemas andmebaasis.
Ja kui nad on kontrollinud, et oma parool on õige.
Ja kui nende parool on õige, siis saame anda neile iganes lehele
nad taotlevad.
>> Nii et sa oled ilmselt jällegi tuttav Selle idee Excel või Google
Tabeleid.
Meil on andmebaasid, tabelid, ridade ja veergude.
Ja see on tõesti omamoodi fundamentaalsetest komplekt
hierarhiliste jaotus siin.
Nii et siin on Exceli tabelit.
Ja kui sa oled kunagi avada seda või muu sarnase programmi
sa tead, et need on siin rows-- 1, 2, 3, 4, 5, 6, 7.
Need on veerud.
>> Võib-olla siin, kuigi see võib ei kasuta seda funktsiooni kohutavalt much--
Ma suurendamiseks in-- meil Selle idee lehel.
Ehk need lehed, kui Ma vaheldumisi edasi ja tagasi,
erinevad tabelid, et olemas minu andmebaasis.
Ja kui me jätkame näide kõiki Muide, nimi selle andmebaasi
on Book 1.
Võibolla mul Book 2 ja 3 raamat.
Nii iga Excel fail on andmebaasi, igale lehele on tabel,
ja sees iga tabeli mul Selle idee ridu ja veerge.
>> Niisiis, kuidas ma töötan selle andmebaasi?
Kuidas saada teavet selle?
Noh seal on keeles nimetatakse SQL-- mida ma tavaliselt lihtsalt helistada Sequel--
ja see tähistab Structured Query Language.
Ja see on programmeerimiskeel, aga see on üsna piiratud programmeerimine
keelt.
See ei ole päris nagu teised et oleme koos töötanud.
Aga Käesolevas programmeerimiskeelt
on päringu andmebaas, mille abil küsi info andmebaasi,
leida teavet andmebaasi, ja nii edasi.
>> Samuti, on CS50-- ja see on väga ühise platvormi, seda nimetatakse MySQL.
See, mida me kasutame käigus.
See on avatud lähtekoodiga platvorm, mis loob
nn relatsiooniline database-- Andmebaasis tõhusalt.
Meil ei ole vaja saada liiga üksikasjalikuks
mida relatsiooniline andmebaas on.
Aga SQL keeles on väga vilunud tööd
MySQL ja muud sarnased stiilid relaatiotietokannat.
>> Ja paljud rajatiste MySQL tulla midagi
nimetatakse phpMyAdmin, mis on graafiline kasutajaliides
interface-- GUI-- et muudab veidi rohkem
kasutajasõbralik täita andmebaasi päringuid,
kuna andmebaasid ei ole lihtsalt kasutada Täiustatud programmeerijad, eks?
Mõnikord on Nende väikeettevõtted,
ja nad ei saa endale lubada palgata meeskonna programmeerijaid,
kuid nad on vaja säilitada andmed andmebaasi.
>> Midagi phpMyAdmin Seetõttu on väga lihtne kedagi
kes pole kunagi programmeeritud varem kiirenemist ja tutvuda kuidas
töötada andmebaasis.
Probleem on, phpMyAdmin, samas see on fantastiline vahend õppe
umbes andmebaasid, see on käsitsi.
Sa lähed pead sisse logima seda ja täita käske ja liik
asjad käsitsi.
>> Ja nagu me teame meie Näiteks PHP veebi programmeerimine,
võttes käsitsi teha asjad meie kodulehel,
Kui me tahame, dünaamiline, aktiivne reageerib veebilehel, ehk mitte parim lahendus.
Soovime leida viis, kuidas ehk automatiseerida seda kuidagi.
Ja SQL võimaldab meil seda teha.
Nii et kui me läheme alustada tööd SQL,
peame kõigepealt olema Andmebaasi töötada.
Andmebaasi loomine on midagi, mida sa ilmselt
teeme phpMyAdmin, sest Teil on vaja teha ainult üks kord,
ja süntaks tehes on palju lihtsam.
See on palju lihtsam seda teha graafiline kasutajaliides
kui kirjutades seda käsuna.
Käsk võib saada veidi tülikas.
Samuti luua tabelit saab saada üsna veidi kohmakas ka.
Ja nii asjad andmebaasi loomise ja luua tabel, mis sa oled
ilmselt ainult kavatse teha once-- üks kord lauda kord database--
see on OK, et seda teha graafilise kasutajaliidese.
Protsessis luua tabel, saate
Samuti tuleks täpsustada kõiki veerud, mis on selles tabelis.
Millist informatsiooni tegema soovite salvestada tabelis?
Äkki kasutaja nimi ja sünniaeg, Parooli kasutaja ID number, ja võib-olla
linn ja riik, õigus?
>> Ja iga kord, kui me tahame, et lisada kasutaja andmebaasi, me tahame saada kõik kuus
nende andmetel.
Ja me teeme seda, lisades arvul ridu.
Nii et me kõigepealt luua andmebaas, siis me luua tabelit.
Osana luues laua, meil palutakse
määrata iga veerg tahaksime tabelis.
Ja siis, kui hakkame lisada teavet andmebaasi
ja päringu andmebaasi rohkem generally-- ole lihtsalt lisades,
aga kõik muu me do-- saadame tegelevad
sosistavat tabelis, mis on üks kasutaja infot kogu komplekt.
>> Nii et iga SQL veerus on võimeline hoides andmed konkreetse andmetüübi.
Nii et me justkui kõrvaldada see Idee tüüpi andmetele PHP,
kuid nad siia tagasi SQL.
Ja seal on palju andmetüüpe.
Siin on ainult 20 neist, kuid see ei ole isegi neid kõiki.
Nii et meil on ideid nagu INTs-- Integers-- me ilmselt teame
et selles veerus mahub täisarvud.
Ja on olemas erinevused thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT.
Võib-olla me ei vaja alati neli hammustab.
Võib-olla vajame kaheksa baiti, ja nii me saab kasutada neid variante täisarvud
olla natuke rohkem ruumi tõhus.
Me saame seda teha koma numbrid, meil saab teha ujukoma numbrid.
Need on üsna sarnased.
Leidub erinevusi, ja kui sa oleks
meeldib otsida SQL omamoodi giid, siis
saab näha, mida kerge erinevused on nende vahel.
>> Võib-olla me tahame hoida informatsiooni kuupäev ja kellaaeg.
Võib-olla me jälgida kui kasutaja liitus meie kodulehel,
ja et äkki me tahame on kolonnis, mis on
kuupäeva aega või ajatempel, et näitab, kui kasutaja tegelikult
registreerunud.
Me ei saa teha geomeetriale ja linestrings.
See on tegelikult päris lahe.
Me võiksime kaardistada abil piirkonna
GIS koordinaadid Palstoittaa ala.
Nii saab tegelikult hoida seda sorti informatsiooniühikuna SQL kolonni.
>> Tekst on lihtsalt hiiglaslik plekid teksti, võibolla.
Väärtustikud on omamoodi huvitav.
Nad tegelikult olemas C. Me ei neist rääkida, sest nad ei ole
kohutavalt kasutatakse tavaliselt vähemalt CS50.
Aga see on loetelutüübina andmete tüübi, mis mahub piiratud väärtustega.
>> Väga hea näide oleks siin luua ENUMi kus seitsme
Võimalikud väärtused on pühapäev, esmaspäev, Teisipäev, kolmapäev, neljapäev, reede,
Laupäev, eks?
See andmetüüp päev Nädal ei ole olemas,
aga me võiksime luua loetletud andmed sellist tüüpi
et mis kolonn saab kunagi hoidke üks neist seitsme võimalike väärtuste.
Me oleme loetletud kõik võimalike väärtuste.
>> Siis on meil CHAR ja varchar, Ja ma olen värvi need rohelised
sest me oleme tegelikult kavatseme teine
rääkida vahe Nende kahe asja.
Nii CHAR erinevalt C, kus CHAR oli ühe märgi,
SQL char viitab fikseeritud pikkusega string.
Ja kui me loome selle veerus, me tegelikult
saab määrata stringi pikkusena.
>> Nii selles näites võib öelda, CHAR (10).
See tähendab, et iga element, mis kolonni
koosneb 10 baiti andmeid.
Ei rohkem ega vähem.
Nii et kui me püüame panna 15 natuke või 15 märgi element
või väärtuse selles veerus, me ainult saada esimese 10.
Kui me paneme kaks iseloomu kaua väärtus,
me lähed on kaks märki ja siis kaheksa null hammustab.
Me ei saa iial olla tõhusam kui.
>> Varchar on selline nagu Meie idee string
et me oleme tuttavad viimisega C või vahemikus PHP.
See on eri pikkusega string.
Ja kui loote Selles veerus sa lihtsalt
määrata maksimaalse võimaliku pikkusega.
Ehk 99, või sagedamini 255.
See oleks maksimaalne pikkus.
Ja kui me talletame 15 märgijada,
meil oleks kasutada 15 baiti, ehk 16 baiti null terminaator.
Kui olime ladustamiseks kolm märgijada,
meil oleks kasutada kolme või nelja baiti.
Aga me ei kasuta täielikult 99.
>> Miks peaks meil nii?
Noh, kui me peame välja mõtlema, kuidas kaua midagi koos varchar,
meil selline Kerrata üle see lihtsalt nagu me tegime C
ja aru saada, kus ta peatub.
Arvestades, kui me teame, et kõik Selles veerus on 10 baiti, võibolla
me teame, et informatsioon, saame hüpata 10 baiti, 10 baiti, 10 baiti, 10 baiti,
ja alati leida stringi algust.
>> Nii et me võib-olla mõned raisatud ruumi koos CHAR,
aga äkki seal on kaubandus välja võttes parem kiirus
navigeerimisel andmebaasis.
Aga äkki me tahame paindlikkust varchar
asemel having-- Kui meie CHAR oli 255, kuid enamik käyttäjillemme
olid ainult sisestanud kolm või neli baiti väärt informatsiooni või kolm või neli
tegelased väärt informatsiooni.
>> Aga mõned kasutajad kasutasid Kogu 255, võibolla
Varchar oleks sobivam on.
See on omamoodi kompromiss, ja Üldiselt eesmärgil CS50,
sa ei pea muretsema liiga palju kas te kasutate CHAR või varchar.
Aga reaalses maailmas, need asjad ei loe, sest kõik need sambad
asuda tegeliku füüsilise ruumi.
Ja füüsilise ruumi, et reaalses maailmas, on oma preemia.
>> Nii üks teine ​​kaalutlus kui sa oled hoone tabelis
on valida üks veerg olema mida nimetatakse primaarvõti.
Ja primaarvõti on veerg kus iga väärtus on unikaalne.
Ja see tähendab, et saate hõlpsasti noppida ühe rea lihtsalt vaadates
kell primaarvõti, et järjest.
Nii näiteks, siis üldiselt, kasutajate,
ei taha kaks kasutajat, kes sama kasutaja ID number.
Ja nii on sul äkki palju informatsiooni,
ja võibolla kaks kasutajat ei sama name--
sul on John Smith ja John Smith.
See ei ole tingimata probleem, sest seal on mitu inimest
maailma nimega John Smith.
Aga meil on ainult üks kasutaja ID number 10, üks kasutaja ID number 11, 12, 13.
Meil ei ole kaks kasutajat sama numbriga,
ja nii äkki kasutaja ID numbrid Oleks hea primaarvõti.
>> Meil ei ole kattumist, Ja me saame nüüd üheselt
kindlaks iga rida lihtsalt vaadates, et kolonni.
Parim primaarseid võtmeid saab tegelikult teha ka edaspidi lauaoperatsioonide
palju lihtsam, sest saate kasutada asjaolu, et teatud read
olla ainulaadne või teatud veerus oma andmebaasi või tabeli
on ainulaadne valida välja eriti rida.
>> Võite ka ühise esmane võti, mida võib leida sündmus
kasutamist, need on vaid kombinatsioon kahest veergude
On tagatud ainulaadne.
Nii on sul äkki üks veerus, mis on sama ja Bs,
üks veerg see on üks, kaks, ja kolm, kuid saate alati ainult
olema üks A1, ühe A2, ja nii edasi ja nii edasi.
Aga sa võisid B2, et C2, või A1, A2, A3, A4.
Nii võite olla mitu As, mitu Bs, mitu neist, mitu kahekaupa
kuid võite ainult kunagi olla ühtse A1, B2, C3, ja nii edasi.
Nii nagu ma ütlesin, SQL on programmeerimiskeel,
kuid see on üsna piiratud sõnavara.
See ei ole päris nii ulatuslik kui C ja PHP ja teised keeled
et me räägime käigus.
See on rohkem lobise keele kui see, mida me oleme
räägime selles video, sest see video
me ei kavatse rääkida neli tegevust, et me
saab sooritada lauale.
>> Seal on rohkem.
Me ei saa teha rohkem kui see, kuid meie eesmärkidel,
me tavaliselt ei kavatse kasutama vaid nelja operations-- sisestada,
vali uuenda ning kustutada.
Ja saab ilmselt intuitiivselt arvata Mis kõik neli neist asjadest teha.
Aga me minema natuke detailsuse iga üks.
>> Nii Käesolevas video Oletame
oleme kahel järgmisel tabelid ühte andmebaasi.
Meil on tabel nimega Kasutajad, kes on Nelja columns-- ID number, kasutajanimi,
parool ja täisnimi.
Ja meil on teine Tabelis samas andmebaasis
nimetatakse Moms, et lihtsalt salvestab info umbes kasutajanimi ja ema.
Nii on kõik näited selle video, siis me
kasutate seda andmebaasi ja nende ajakohastatud ta.
Ütleme, et me tahame Andmete lisamine tabelisse.
See on see, mida sisestada operatsiooni teeb.
Selgitades kõik need käsud, ma lähen
anda teile üldine skelett kasutada.
Sest põhimõtteliselt, pöördumistest lähed vaatama üsna sarnased,
Me elame muutuvat pisut erinevad infoväljad
teha erinevaid asju koos laua.
>> Nii INSERT, skelett näeb selline nagu see.
Tahame lisada Konkreetse laua.
Siis on meil avatud sulgudes ja loetelu veergudes
et me tahame panna väärtused.
Sulge sulgudes Järgmised väärtused ja seejärel
uuesti, toome välja väärtused tahame panna lauale.
>> Nii näiteks selle oleks järgmine.
Tahan lisada tabelisse kasutajate järgmised columns--
kasutajanimi, parool ja nimi.
Nii uue rea, kus ma panen nendes kolmes tulbas ja me oleme
läheb panna väärtused Newman, USMAIL ja Newman.
Nii et kui ma olen pannes väiketähed Newman
arvesse kasutajanimi veerus parooli USMAIL ja täisnimi kapitali N
Newman sisse fullname veerus.
>> Nii et siin on, mida andmebaasis tundus enne.
Siin on, mida kasutajad tabelit top tundus, enne kui me tegime seda.
Pärast me ellu seda päringu, saame seda.
Lisasime uue rea lauale.
Aga seda märgata üks asi et ma ei täpsustanud,
aga millegipärast on mul väärtus eest, mis on selle 12 siin.
Ma ei saa öelda tahtsin pane ID number seal.
Tahtsin kasutajanime Parooli fullname.
Ja ma tegin seda, et trahvi.
>> Aga ma sain ka selle 12.
Miks ma saan selle 12?
Noh, tuleb välja, et kui sa defineerid
veerus, et saab olema sinu primaarvõtit, mis on tavaliselt,
nagu ma ütlesin, ID-number.
Alati ei pruugi saab olema ID number,
kuid see on tavaliselt hea mõte olla mingi täisarvuni.
Sul on võimalus phpMyAdmin Kui loote oma andmebaasi
või oma laua seada, et veerg auto incrementing.
>> Milline on tõesti hea mõte, kui te töötate primaarvõti,
sest sa tahad iga hinna selles veerus olema unikaalne.
Ja kui te unustate määratleda seda rohkem kui üks inimene,
nüüd oleme olukorras, kus et kolonn ei ole enam unikaalsed.
Sul on kaks tühikud, et sa ei saa enam üheselt identifitseerida column--
või te ei saa enam üheselt kindlaks järjest põhineb sellel kolonni.
See on kaotanud kõik oma väärtus primaarvõti.
>> Ja nii ilmselt see, mida ma olen teinud siin on konfigureeritud kasutaja ID
veeru auto juurdekasvu nii, et iga aeg lisan informatsiooni tabeli,
see automaatselt mulle väärtus, mille peamine võti.
Nii et ma ei unusta kunagi seda teha, sest Andmebaasi seda minu eest.
Nii et selline kena.
Ja nii see on, miks me 12 sinna, sest ma olen
määrata, et kolonn kuni auto juurdekasvu.
Kui lisasin keegi teine ta tahaks olla 13, kui lisasin
keegi ta tahaks olla 14, ja nii edasi.
>> Nii saab lihtsalt teha veel üks sisestamist.
Me sisesta moms laud, in Eelkõige kasutajanimi ja ema
kolonn, väärtusi Kramer ja Babs Kramer.
Ja nii me pidime seda enne.
Pärast me ellu, et SQL päringu, meil on see.
Lisasime Kramer ja Babs Kramer et moms tabelis.
>> Seega, see sisestamist.
VALI on see, mida me kasutame, et eraldada andmed tabelist.
Nii see on, kuidas me saame informatsiooni välja andmebaasi.
Ja nii valida käske saab olema väga sageli kasutatakse programmeerimine.
Üldine framework-- üldiselt skelett näeb välja selline.
Valige komplekt veerud laua ja seejärel vajadusel
saate määrata condition-- või mida me tavaliselt nimetame predikaat,
Tavaliselt on sõna, mida me kasutame SQL.
>> Aga see on põhimõtteliselt see, mida eriti rida sa tahad saada.
Kui soovite, selle asemel, et kõik, vähendada seda alla,
see on koht, kus sa teeksid seda.
Ja siis soovi korral saate ka tellida üks konkreetne kolonni.
Ehk soovid on asjad järjestatud tähestiku põhineb ühe veeru
või tähestikulises järjekorras, mis põhineb teisele.
>> Jällegi, kus ja ORDER BY on vabatahtlik.
Aga nad tõenäoliselt useful-- eriti
Kus kasulik kitsendada, et sa seda ei tee
saada kogu oma andmebaasi ja tagasi on protsess, sa lihtsalt saada
tükid see, et sa hoolid.
Nii näiteks, ma võiksite valida ID number ja nimi kasutajad.
Mis võiks see välja näeb?
Nii et siin on minu kasutajate tabelis.
Ma tahan, et valida idnum ja nimi kasutajad.
Mida ma hakka?
Ma lähen seda.
Ma ei vähendada seda alla, nii et ma olen saada ID number igal real
ja ma saan kogu Nime iga rea.
>> OKEI.
Mis siis, kui ma tahan, et valida parool kasutajate WHERE-- nii nüüd
Ma lisades seisundist, predicate-- kus idnum on väiksem kui 12.
Nii et siin on minu andmebaasis uuesti, Minu kasutajate tabelis tippu.
Mida ma hakka, kui ma tahan vali, et teave, parool
kus kasutaja ID või idnum on vähem kui 12?
Ma lähen seda andmed tagasi, eks?
See juhtub, et idnum on 10 ja vähem kui 12, ID number 11 vähem kui 12.
Saan parooli neid ridu.
See, mida ma küsisin.
Aga see?
Mis siis, kui ma tahan, et valida tähe moms tabel, kus kasutajanimi on võrdne Jerry?
OK, valige täht on eriline omamoodi jokker nn
mida me kasutame, et saada kõik.
Nii nad ütlevad valige kasutajanime komaga ema, mis
juhtus olema ainus kaks tulbad tabelis,
Ma lihtsalt valida star ja kõike
kus kasutajanimi võrdub Jerry.
Ja nii see on, mida ma saaksin kui ma tegin selle konkreetse päringu.
>> Nüüd on andmebaasid suur, sest need võimaldavad
meil korraldada teabe ehk natuke tõhusamalt kui me
võiks teisiti.
Me ei pruugi säilitada kõik asjakohased tükk info
umbes kasutajanime samas tabelis.
Meil oli kaks lauda seal.
>> Meil on vaja säilitada kõik ema nimi,
ja võibolla meil ei ole sotsiaalkindlustuse number, meil on oma sünnikuupäev.
See ei ole alati vaja olema samas tabelis.
Niikaua kui me saame määratleda suhteid tables--
ja see on kui see relatsiooniline Andmebaasi mõiste liiki kaasas
arvesse play-- nii kaua kui saame määratleda suhteid tabelid,
saame mingi lahterdada või abstraktseid asju nii,
kus me ainult ei tõesti oluline info
me hoolime kasutaja lauda.
Ja siis on meil kõrvalise teabe või täiendavat teavet teistes tabelid
et suudame ühendada tagasi peamine kasutajate tabelis teatud viisil.
>> Nii et siin on meil need kaks lauda, ​​kuid seal on nendevaheline suhe,
õige?
Tundub kasutajanimi võiks olla midagi
mis eksisteerib ühise vahelise Nende kahe erineva tabelid.
Mis siis, kui me nüüd Olukorras, kus me
tahan kasutaja täisnime alates kasutaja lauda ja nende ema
nimi ema lauale?
Meil ei ole võimalus saada et nagu see on, eks?
Ei ole üks tabel, mis sisaldab nii ees- ja ema nimi.
Meil ei ole seda võimalust sellest, mida me oleme näinud siiani.
>> Ja nii on meil tutvustada idee liituda.
Ja liitub ilmselt Kõige complex--
see on tõesti kõige keerulisem operatsioon me ei kavatse rääkida video.
Nad on veidi keerulisem, aga kui sa saad aru saama sellest,
nad tegelikult ei ole liiga halb.
See on lihtsalt erijuht SELECT.
Me läheme valida komplekt tabeli veeru liitumisel
teises tabelis mõned predikaat.
>> Sel juhul mõtle meeldib see-- Tabelis üks on üks ring siin,
tabelis kaks on teise ringi siin.
Ja et predikaat osa keskel, see on
omamoodi nagu siis, kui te arvate, umbes nagu Venn diagramm, mida
neil on ühist?
Me tahame, et ühendada need kaks lauda põhjal, mida neil ühist
ja luua selle hüpoteetilise tabelis mis on ühinemise kaks kokku.
Nii me näeme seda mõnes Näiteks võib-olla, et aitan
selge see üles natuke.
Ehk soovite valida user.fullname ja moms.mother
kasutajate liitumine on moms laua igas olukorras
kus kasutajanimi veerus on sama nende vahel.
Ja see on uus süntaktiline siin see kasutaja.
ja moms ..
Kui ma teen mitmest tabelist koos, võin täpsustada tabeli.
Võin eristada eelkõige et väga põhjas on.
Võin eristada kasutajanimi veerus kasutajate tabelis
alates kasutajanimi veerus moms tabelis, mis on otherwise--
kui me lihtsalt ütles kasutajanimi võrdub kasutajanimi, et tegelikult ei
tähenda midagi.
Me tahame seda teha, kui nad vastavad.
>> Nii et ma ei täpsusta laua ja veeru nimi korral olukorras
kus oleks ebaselge mida ma räägin.
Nii et kõik, mida ma teen on ma olen öeldes, et see veerg sellest tabelist,
ja on väga selgesõnaline.
Nii jälle, ma valida täisnimi ja ema nimi
alates kasutajaid tabelis on omavahel ühendatud koos moms laua igas olukorras
kus nad jagavad, et column-- nad jagavad, et kasutajanimi mõiste.
>> Nii et siin on lauad pidime enne.
See on riik meie andmebaasi, nagu see on praegu.
Teave me kaevandavad on käesoleva alustada.
See on uus laud läheme luua kombineerides neid koos.
Ja märka me ei tõsta esile Newman rida kasutaja lauda
ja me ei tõsta esile Krameri rida moms tabelis
sest kumbki ühe olemas nii sets-- mõlemas tabelis.
>> Ainus informatsioon, mis on ühised nende vahel on Jerry on nii tabelid
ja gcostanza on mõlemas tabelis.
Ja nii, kui me teeme SQL LIITU, mida me get-- ja me teeme tegelikult saada see.
See on omamoodi ajutise muutuja.
See on nagu hüpoteetiline Ühinemise kaks tabelit.
Me tegelikult midagi nagu see, kus
oleme liideti kokku tabelid teavet, mis on neil ühist.
>> Nii märkate, et users.username ja moms.username veerus
see on täpselt sama.
See oli teave, et oli kooskõlas kasutajatelt
laua ja moms tabelis.
Ja nii me liitis need kokku.
Me visata Kramer, sest ta ei eksisteeri kasutajate tabelis,
ja me visata Newman, sest ta ei eksisteeri moms tabelis.
Nii et see on hüpoteetiline ühinemine abil LIITU toimimise SELECT.
>> Ja siis me otsisid kasutaja täisnime ja kasutaja ema,
ja nii on see teave, et saaksime üldisest päringu
mis me teha SELECT.
Nii me liitus tabelite ja me ekstraheeriti need kaks veergu,
ja nii see on, mida me oleks saanud.
Aga SQL liitub mingi keeruline.
Sa ilmselt ei tee neid liiga palju, aga lihtsalt mõned ideed skelett
mida võiks kasutada, et ühendada kaks tabelid koos, kui teil on vaja.
Viimased kaks on natuke lihtsam ma luban.
Nii ajakohastamine, saame kasutada UPDATE muuta teabe tabelisse.
Üldvormingu on UPDATE mõned tabel, määrata mõned veerus mõned väärtus
Kui osa predikaat on täidetud.
Nii näiteks me tahta uuendada kasutajate tabelis
ja määrake salasõna JANKUTUSTA JANKUTUSTA, kus ID number on 10.
>> Nii et kui me oleme ajakohastamine kasutajate tabelis.
ID number on 10 et esimeses reas on,
ja me tahame, et uuendada parool JANKUTUSTA.
Ja nii see on, mis juhtuks.
See on üsna lihtne, eks?
See on lihtsalt väga lihtne muutmine tabelis.
>> Kustutada, on operatsiooni kasutasime informatsiooni eemaldamiseks tabelist.
Kustutada laua taga, kus Mõnes predikaat on täidetud.
Me tahame, et kustutada kasutajate tabelis näiteks
kus kasutajanimi on Newman.
Võite ilmselt arvata, mis läheb juhtub siin pärast me ellu, et SQL
päringu Newman on läinud laualt.
>> Nii et kõik need toimingud, nagu ma olen öelnud, on väga lihtne teha phpMyAdmin.
See on väga kasutajasõbralik liides.
Aga see ei nõua füüsilise pingutuseta.
Me ei taha tööle füüsilise pingutuseta.
Me tahame, et meie programmid Selleks meile, eks?
Nii et me võiks teha tahad Selle programmiliselt.
Tahame lisada SQL ja on midagi muud teha seda meie jaoks.
>> Aga mida me näinud, mis võimaldab meil programmiliselt midagi?
Me oleme näinud PHP, eks?
Ta tutvustab mõningaid dünaamilisus meie programme.
Ja nii õnneks SQL ja PHP mängida väga kenasti kokku.
Seal on funktsioon PHP nimetatakse päringu, mida saab kasutada.
Ja sa ei liigu, kui parameetri või argument
päringu SQL päring, mis soovid täita.
Ja PHP teeb seda sinu eest.
>> Nii siis, kui olete ühendatud oma andmebaasi PHP,
seal on kaks eelvalimised sa seda teed.
Seal on midagi, mida nimetatakse MySQLi ja midagi, mida nimetatakse KPN.
Me ei hakka suur summa detail seal.
In CS50 me kasutame KPN.
Kui olete ühendatud oma andmebaasi, siis
Seejärel saab teha päringuid oma andmebaasi sooritades päringud argumentidena
PHP funktsioone.
Ja kui sa seda teha, teil salvestada tagajärjega on assotsiatiivne massiiv.
>> Ja me teame, kuidas töötada assotsiatiivne massiivid PHP.
Nii et ma võiks öelda midagi nagu see-- $ results--
see on PHP-- võrdub päring.
Ja siis seestpoolt päringu funktsiooni, et argument
et ma möödaminnes päringut mis näeb välja nagu SQL.
Ja tegelikult, mis on SQL.
See on stringi, et ma meeldib täita minu andmebaasis.
>> Ja nii punane, see on PHP.
See on SQL, et ma olen integreerides PHP tehes
see argument päringu funktsiooni.
Ma tahan, et valida fullname alates kasutajate, kus ID number võrdub 10.
Ja siis äkki, kui ma olen teinud, et Ma võiks öelda midagi sellist.
Ma tahan välja printida sõnum Täname sisselogimist.
>> Ja ma tahan seda interpolate-- ma tahan interpoleerimiseks $ tulemusi fullname.
Ja nii see on, kuidas ma töötan, et assotsiatiivne massiiv, et ma sain tagasi.
$ tulemusi fullname oleks põhimõtteliselt lõpuks välja trükkida,
Täname sisselogimist Jerry Seinfeld.
See oli täielik nimi kus idnum võrdub 10.
>> Ja nii ma teengi on ma now-- Ma salvestatud
minu päringu tulemusi minu päringu ja tulemuseks on assotsiatiivne massiiv,
ja nimi on nimi Veerus ma imestasin eest.
Nii et minu võti tulemusi assotsiatiivne massiiv, mida ma tahan.
Nii Täname sisselogimist $ tulemusi, fullname prinditakse välja, on kinni
õigus nende vahel lokkis traksid, Jerry Seinfeld.
Ja ma tahan välja printida sõnum Täname logige Jerry Seinfeld.
>> Nüüd ilmselt ei taha kõva kood asjad niimoodi, eks?
Me tahta teha midagi print f, kus saame asendada ja võibolla
koguda erinevaid andmeid, või äkki on päringu protsess
erinevat teavet.
Ja nii päring, päringu funktsioon on Selle mõiste omamoodi asendused
väga sarnane printida f protsenti s ja protsenti c, on küsimärke.
>> Ja me saame kasutada küsimus märgid väga sarnaselt
printida f asendajakohale muutujaid.
Ehk oma kasutaja sisse logitud varem ja sa päästsid oma kasutaja ID number
in $ _session PHP super globaalse võtme ID.
Ehk pärast sisselogimist seate $ _session ID võrdub 10,
ekstrapoleerimise näitel me just nägin hetk tagasi.
>> Ja nii, kui me tegelikult ellu Selle päringu tulemused nüüd,
see pistik 10, või mis iganes on $ _session ID väärtus on.
Ja nii, et võimaldab meil olla natuke rohkem dünaamiline.
Me ei leidu kodeerimist asju enam.
Me säästa info kusagil ja siis
saame seda teavet kasutada uuesti omamoodi üldistada, mida me tahame teha,
ja lihtsalt plug-in ja muutus käitumist meie leht
põhjal, mida kasutaja ID number tegelikult on pärast olen sisenenud.
On ka võimalik, kuigi et oma tulemusi seatud
Võib sisaldada mitu rida.
Millisel juhul on teil massiivi arrays--
massiivi assotsiatiivne massiivid.
Ja sa lihtsalt vaja korrata läbi.
Ja me teame, kuidas itereerima läbi massiivi PHP, eks?
Nii et siin on tõenäoliselt kõige keeruline asi, mida me oleme näinud siiani.
See tegelikult ühendab kolmes keeles koos.
>> Siin punane, see on mingi HTML.
Ma ilmselt starting-- see on väljavõtte mõned HTML, mis mul on.
Ma olen hakanud uus lõige, mis ütleb moms TV Seinfeld.
Ja siis kohe pärast seda Ma olen hakanud tabeli.
Ja siis pärast, et ma mõned PHP, eks?
Mul on kõik see PHP kood seal.
Ma ilmselt läheb tee päring.
Ja teha päringu, ma lähen olla kasutades SELECT emasid moms.
>> Nii et see on getting-- see on SQL.
Nii sinine on SQL.
Punane nägime hetk tagasi oli HTML.
Ja roheline on siin PHP.
Nii et ma teen päringu minu andmebaasi, ma olen
valides kõik emad moms tabelis.
Mitte ainult kitsendades selle alla eriti rida, ma küsin neid kõiki.
>> Siis ma vaadata, kas tulemus on ei võrdsete võrdne vale.
See on lihtsalt minu viis kontrollida omamoodi If tulemused ei ole võrdne null,
et me näeksime c näiteks.
Põhimõtteliselt on see lihtsalt kontrollida, et kindel, et see tegelikult sain andmed tagasi.
Sest ma ei taha, et alustada printimist välja andmed, kui ma ei saa midagi andmeid.
Siis iga Tulemused mille tulemusena foreach süntaksi PHP, kõik, mida ma teen
printimise $ tulemus emad.
Ja nii ma lähen komplekt Kõigi emad each--
see on massiivi assotsiatiivne arrays-- ja ma väljatrükk
igaüks iseenda tabelilahtrile.
Ja see on tõesti ilus palju kõik on see.
Ma tean, et seal on vähe natuke siin toimub
Selles viimases näiteks massiivid arrays-- massiive assotsiatiivne massiivid.
Aga see tõesti ei keeda täpselt alla SQL teha päringu,
tavaliselt, valides pärast me oleme juba pane andmed tabelisse,
ja siis lihtsalt välja tõmmata.
>> Ja see on meil oleks tõmba sellel konkreetsel juhul.
Tahaksime ekstraheerida kõik üksikud emad alates moms tabelis.
Meil on terve rida neid, ja me tahan korrata läbi ja välja printida
igaüks.
Nii jälle see on ilmselt Kõige keerulisem näiteks
oleme näinud, sest me segamine kolm eri keeli kõnelevad, eks?
>> Jällegi on meil HTML siin punane, segada mõned SQL siin sinine,
segada mõned PHP roheline.
Aga kõik need mängida kenasti koos, see on
lihtsalt asja arendada Heade kommete nii et saad
neil koos töötada nii, nagu soovite.
Ja ainus viis tõesti, et on praktika, praktika, praktika.
Ma olen Doug Lloyd, see on CS50.