>> [CHWARAE CERDDORIAETH]
DOUG LLOYD: Yn ein fideos ar bynciau datblygu ar y we,
rydym wedi crybwyll y cysyniad o cronfa ddata ychydig o weithiau, dde?
Felly, cronfa ddata rydych yn yn ôl pob tebyg yn gyfarwydd â oddi
dweud gan ddefnyddio Microsoft Excel neu Taenlenni Google.
Mae'n wir yn unig drefnus set o dablau, rhesi, a cholofnau.
>> A chronfa ddata yw lle ein gwefan siopau
gwybodaeth sy'n bwysig ar gyfer ein gwefan i weithio'n iawn.
Unwaith eto, yn enghraifft wirioneddol gyffredin yma yn storio enwau defnyddwyr a chyfrineiriau
mewn cronfa ddata, felly pan defnyddiwr yn mewngofnodi i mewn i'n gwefan,
Gall y gronfa ddata yn cael ei holi i weld os yw'r defnyddiwr yn bodoli yn y gronfa ddata.
Ac os ydynt, gwirio bod eu cyfrinair yn gywir.
Ac os yw eu cyfrinair yn gywir, Yna gallwn ei roi iddynt beth bynnag dudalen
maent yn gofyn.
>> Felly, mae'n debyg eich bod, unwaith eto, cyfarwydd gyda'r syniad hwn o Excel neu Google
Taenlenni.
Mae gennym gronfeydd data, tablau, rhesi, a cholofnau.
A dyna wir yn fath o'r set sylfaenol
o chwalu hierarchaidd yma.
Felly dyma taenlen Excel.
Ac os ydych chi wedi agor hyn erioed neu raglen debyg arall
eich bod yn gwybod bod y rhain yma rows-- 1, 2, 3, 4, 5, 6, 7.
Mae'r rhain yn colofnau.
>> Efallai i lawr yma, er bod efallai y byddwch Nid yw defnyddio'r nodwedd hon ofnadwy much--
'N annhymerus' chwyddo in-- gennym syniad hwn o daflen.
Felly efallai y taflenni hyn, os Rwyf yn ail yn ôl ac ymlaen,
yn wahanol dablau sy'n yn bodoli yn fy gronfa ddata.
Ac os byddwn yn parhau yr enghraifft i gyd y ffordd, enw'r gronfa ddata hon
yw Llyfr 1.
Efallai gennyf Llyfr 2 a 3 Llyfr.
Felly pob ffeil Excel yn cronfa ddata, pob dalen yn dabl,
ac y tu mewn o bob bwrdd gen i syniad hwn o rhesi a cholofnau.
>> Felly, sut ydw i'n gweithio gyda gronfa ddata hon?
Sut mae cael gwybodaeth ohoni?
Wel mae 'na iaith o'r enw SQL-- yr wyf fel arfer dim ond galw Sequel--
ac mae'n sefyll ar gyfer y Iaith Ymholiad Strwythuredig.
Ac mae'n iaith raglennu, ond mae'n raglennu cyfyngedig yn deg
iaith.
Dyw hi ddim yn hollol fel eraill ein bod wedi gweithio gyda.
Ond diben hwn iaith rhaglennu
yw holi cronfa ddata, i gofyn gwybodaeth o gronfa ddata,
ddod o hyd i wybodaeth mewn cronfa ddata, ac yn y blaen.
>> Rydym hefyd, yn CS50-- ac mae'n iawn llwyfan cyffredin, fe'i gelwir MySQL.
Dyna beth rydym yn ei ddefnyddio yn y cwrs.
Mae'n ffynhonnell agored llwyfan sy'n sefydlu
yn database-- berthynol hyn a elwir yn cronfa ddata, yn effeithiol.
Nid oes angen i ni gael i ormod o fanylder
ar yr hyn cronfa ddata berthynol yn.
Ond mae'r iaith SQL yw fedrus iawn wrth weithio
gyda MySQL ac eraill tebyg arddulliau o gronfeydd data perthynol.
>> Ac mae llawer o osodiadau MySQL yn dod â rhywbeth
Gelwir phpMyAdmin, a oedd yn yn defnyddiwr graffigol
interface-- yn GUI-- sy'n yn ei gwneud yn ychydig yn fwy
gyfeillgar i weithredu defnyddiwr ymholiadau cronfa ddata,
oherwydd nad yw cronfeydd data yn cael eu defnyddio yn unig gan rhaglenwyr uwch, dde?
Weithiau mae yna busnesau bach hyn,
ac ni allant fforddio llogi tîm o raglenwyr,
ond mae angen iddynt i storio gwybodaeth mewn cronfa ddata.
>> Rhywbeth fel phpMyAdmin ei gwneud yn hawdd iawn i rywun
sydd byth wedi rhaglennu o'r blaen i codi a dod yn gyfarwydd â sut
i weithio gyda chronfa ddata.
Y broblem yw, phpMyAdmin, tra mae'n arf gwych ar gyfer dysgu
am y cronfeydd data, mae'n llaw.
Rydych yn mynd i gael i logio i mewn ac redeg gorchmynion a math
pethau mewn llaw.
>> Ac fel y gwyddom oddi wrth ein enghraifft ar raglenni gwe PHP,
gorfod gwneud â llaw pethau ar ein gwefan,
os ydym am gael ddeinamig, ymatebol gweithredol gwefan, efallai nad yw'r dull gorau.
Hoffem i ddod o hyd i ffordd i efallai awtomeiddio'r hyn rywsut.
A bydd SQL yn ein galluogi i wneud hyn.
Felly, pan fyddwn ni'n mynd i dechrau gweithio gyda SQL,
angen i ni gael yn gyntaf cronfa ddata i weithio gyda nhw.
Creu cronfa ddata yn cael ei rhywbeth yr ydych yn ôl pob tebyg
bydd yn gwneud yn phpMyAdmin, oherwydd bydd dim ond angen i chi ei wneud hynny unwaith,
a'r cystrawen ar gyfer gwneud hynny yn llawer symlach.
Mae'n llawer haws i wneud hynny mewn rhyngwyneb defnyddiwr graffig
na deipio allan fel gorchymyn.
Gall y gorchymyn yn cael ychydig o feichus.
Yn yr un modd, gan greu tabl gall cael cryn dipyn feichus hefyd.
Ac felly pethau fel creu cronfa ddata a chreu bwrdd, yr ydych chi'n
yn ôl pob tebyg dim ond yn mynd i wneud once-- unwaith y bwrdd, unwaith y database--
mae'n iawn i wneud hynny mewn rhyngwyneb graffigol.
Yn y broses o creu tabl, byddwch yn
rhaid hefyd i bennu pob un o'r colofnau a fydd yn y tabl hwnnw.
Pa fath o wybodaeth yn ei wneud ydych am i storio yn y tabl?
Efallai enw a dyddiad geni y defnyddiwr, cyfrinair, rhif adnabod defnyddiwr, ac efallai
ddinas a'r wladwriaeth, dde?
>> Ac am bob tro y byddwn eisiau ychwanegu defnyddiwr at y gronfa ddata, rydym yn awyddus i gael pob un o'r chwe
o ddarnau hynny o wybodaeth.
Ac rydym yn gwneud hynny drwy ychwanegu rhesi at y bwrdd.
Felly rydym yn gyntaf creu cronfa ddata, Yna, rydym yn creu tabl.
Fel rhan o greu tabl, gofynnir i ni
i nodi pob colofn sy'n byddem yn hoffi yn y tabl hwn.
Ac yna wrth i ni ddechrau i ychwanegu gwybodaeth i'r gronfa ddata
ac yn holi cronfa ddata mwy generally-- nid dim ond ychwanegu,
ond popeth arall yr ydym yn do-- byddwn yn delio
gyda rhesi o'r tabl, sy'n un Gwybodaeth defnyddiwr o'r set gyfan.
>> Felly pob colofn SQL yn gallu gadw data o fath data penodol.
Felly, rydym yn fath o dileu hwn syniad o fathau o ddata yn PHP,
ond maent yn ôl yma yn SQL.
Ac mae llawer o fathau o ddata.
Dyma dim ond 20 ohonyn nhw, ond Nid yw hyd yn oed pob un ohonynt.
Felly mae gennym syniadau fel INTs-- Integers-- mae'n debyg yn gwybod
y gall y golofn hon ddal cyfanrifau.
Ac mae yna amrywiadau thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT.
Efallai nad ydym bob amser yn angen pedair brathiadau.
Efallai mae angen wyth bytes, ac felly rydym yn yn gallu defnyddio amrywiadau hyn ar gyfanrifau
i fod ychydig yn fwy o le effeithlon.
Gallwn wneud rhifau degol, rydym yn yn gallu ei wneud rhifau pwynt arnawf.
Mae'r rhain yn eithaf tebyg.
Mae rhai gwahaniaethau, ac os byddech
yn hoffi edrych ar y Math SQL o'r canllaw, yr ydych
gallu gweld yr hyn y mae'r bychan gwahaniaethau rhyngddynt.
>> Efallai rydym am i storio gwybodaeth am ddyddiad ac amser.
Efallai ein bod yn cadw golwg ar pan ymunodd y defnyddiwr ein gwefan,
ac felly efallai yr ydym am i gael colofn sy'n
amser ddyddiad neu stamp amser sy'n yn dangos pan fydd y defnyddiwr mewn gwirionedd
ymuno.
Gallwn wneud geometries a linestrings.
Mae hyn mewn gwirionedd 'n bert oera.
Gallem mapio ardal ddaearyddol gan ddefnyddio
GIS cyfesurynnau i blotio allan ardal.
Gall Felly mewn gwirionedd yn storio fath gwybodaeth mewn colofn SQL.
>> TEXT yn unig yw smotiau mawr o destun, efallai.
ENUMs yn fath o ddiddorol.
Maent mewn gwirionedd yn bodoli yn C. Nid ydym yn ei wneud siarad am nhw oherwydd dydyn nhw ddim
ofnadwy a ddefnyddir yn gyffredin, o leiaf CS50.
Ond ei fod yn fath o ddata wedi'u rhifo, a oedd yn yn gallu cynnal gwerthoedd cyfyngedig.
>> Ceir enghraifft dda iawn fyddai yma yn i greu enum lle mae'r saith
Gwerthoedd posib yw Dydd Sul, Dydd Llun, Dydd Mawrth, Dydd Mercher, Dydd Iau, Dydd Gwener,
Dydd Sadwrn, dde?
Bod Diwrnod math data o Nid yw wythnos yn bodoli,
ond gallem greu Math data wedi'u rhifo o'r fath
y gall y golofn dim ond byth yn dal un o'r rhai a saith o werthoedd posibl.
Rydym wedi rhifo pob o'r gwerthoedd posib.
>> Yna, mae gennym CHAR a VARCHAR, ac rwyf wedi lliwio rhain gwyrdd
oherwydd ein bod yn mewn gwirionedd mynd i gymryd eiliad
i siarad am y gwahaniaeth rhwng y ddau beth.
Felly CHAR, yn wahanol C lle CHAR yn gymeriad unigol,
mewn SQL a CHAR yn cyfeirio at llinyn hyd penodol.
A phan fyddwn yn creu hyn colofn, yr ydym mewn gwirionedd
Gall pennu hyd y llinyn.
>> Felly, yn yr enghraifft hon, efallai y byddwn yn dweud CHAR (10).
Mae hynny'n golygu bod pob elfen yn y golofn honno
bydd yn cynnwys 10 o bytes o wybodaeth.
Dim mwy, dim llai.
Felly, os ydym yn ceisio rhoi mewn 15 bit neu elfen 15 cymeriad
neu werth mewn i golofn hon, rydym yn unig yn cael y 10 cyntaf.
Os byddwn yn ei roi yn y ddau gwerth hir gymeriad,
rydym yn mynd i gael y ddau cymeriadau, ac yna wyth o brathiadau null.
Byth Byddwn yn fwy effeithlon na hynny.
>> Mae VARCHAR yn fath o fel ein syniad o gyfres
ein bod yn gyfarwydd gyda o C neu gan PHP.
Mae'n llinyn hyd amrywiol.
A phan fyddwch yn creu golofn hon, 'ch jyst
pennu uchafswm y darnau posibl.
Felly efallai 99, neu yn gyffredin 255.
Byddai hynny'n uchafswm hyd.
Ac felly os ydym yn cadw 15 llinyn cymeriad,
byddem yn defnyddio 15 o bytes, efallai 16 bytes gyfer y terminator null.
Os byddwn yn storio tri llinyn cymeriad,
byddem yn defnyddio tair neu bedair bytes.
Ond ni fyddem yn defnyddio'r 99 llawn.
>> Felly pam y byddai'n rhaid ddau?
Wel, os bydd angen i chyfrif i maes sut rhywbeth hir yw gyda VARCHAR,
mae'n rhaid i ni fath o ailadrodd ar ei draws yn union fel y gwnaethom yn C
a chyfrif i maes lle mae'n dod i ben.
Tra os ydym yn gwybod bod popeth yn y golofn hon yw 10 bytes, efallai
rydym yn gwybod y wybodaeth, gallwn neidio 10 bytes, 10 bytes, 10 bytes, 10 bytes,
a bob amser yn dod o hyd i'r gan ddechrau y llinyn.
>> Felly efallai y byddwn yn cael rhywfaint o lle gwastraffu gyda CHAR,
ond efallai mae 'na masnach off o gael cyflymder yn well
wrth lywio y gronfa ddata.
Ond efallai rydym am i'r hyblygrwydd o VARCHAR
yn hytrach na having-- Os yw ein CHAR Roedd 255, ond mae'r rhan fwyaf o'n defnyddwyr
mai dim ond mewnbynnu tri neu bedwar bytes gwerth o wybodaeth neu dair neu bedair
cymeriadau gwerth o wybodaeth.
>> Ond mae rhai defnyddwyr yn defnyddio y cyfan 255, efallai
Byddai VARCHAR yn fwy priodol yno.
Mae'n fath o fasnach i ffwrdd, ac Yn gyffredinol, at ddibenion CS50,
Nid oes angen i chi boeni gormod am p'un a ydych yn defnyddio CHAR neu VARCHAR.
Ond yn y byd go iawn, y pethau hyn yn bwysig gan fod yr holl o'r colofnau hyn
cymryd lle corfforol fel y cyfryw.
A gofod ffisegol, yn y byd go iawn, yn dod ar bremiwm.
>> Felly un ystyriaeth arall pan fyddwch yn adeiladu tabl
yw i ddewis un golofn i fod yn hyn a elwir yn allwedd gynradd.
Ac allwedd gynradd yn colofn lle mae pob gwerth unigol yn unigryw.
Ac mae hynny'n golygu eich bod yn gallu hawdd ddewis un rhes yn unig drwy edrych
ar yr allwedd gynradd y rhes.
Felly, er enghraifft, eich bod yn gyffredinol, gyda defnyddwyr,
nad ydych am ddau ddefnyddiwr sy'n yr un rhif adnabod defnyddiwr.
Ac felly efallai bod gennych llawer o wybodaeth,
ac efallai y gall dau ddefnyddiwr yn cael yr un name--
mae gennych John Smith a John Smith.
Nid yw hynny'n reidrwydd yn broblem, oherwydd bod pobl yn lluosog
yn y byd a enwir John Smith.
Ond dim ond un rhif adnabod defnyddiwr gennym 10, un defnyddiwr rhif 11, 12, 13 adnabod.
Nid oes gennym ddau ddefnyddiwr gyda'r un nifer,
ac felly efallai rhifau enw defnyddiwr fyddai allwedd gynradd da.
>> Nid oes gennym unrhyw ddyblygu, ac y gallwn yn awr yn unigryw
nodi pob un rhes yn unig drwy edrych ar y golofn honno.
Dewis allweddi cynradd yn gallu mewn gwirionedd gwneud gweithrediadau tabl dilynol
yn llawer haws oherwydd gallwch trosoledd y ffaith bod rhai rhesi bydd
yn unigryw, neu golofn penodol eich cronfa ddata neu dabl
Bydd yn unigryw i godi rhesi penodol allan.
>> Gallwch hefyd gael cynradd ar y cyd allweddol, y gallwch ddod o hyd i achlysur
i'w defnyddio, sydd ychydig yn cyfuniad o ddwy golofn sy'n
yn sicr o fod yn unigryw.
Felly efallai gennych un colofn dyna Fel a brecwast,
un golofn dyna un, dau, a thri, ond wnewch chi helpu dim ond erioed
cael A1 sengl, un A2, ac yn y blaen ac yn y blaen.
Ond efallai y bydd gennych B2, a C2, neu A1, A2, A3, A4.
Felly, efallai y byddwch yn cael Fel lluosog, lluosog Brecwast, rhai lluosog, fesul dau lluosog,
ond gallwch ond byth yn cael sengl A1, B2, C3, ac yn y blaen.
Felly, fel y dywedais, SQL yn iaith raglennu,
ond mae ganddo eirfa gyfyngedig deg.
Dyw hi ddim yn hollol mor eang â C a PHP a ieithoedd eraill
ein bod yn siarad yn y cwrs.
Mae'n fwy verbose iaith na'r hyn rydym yn
mynd i siarad am yn hyn fideo, gan fod yn y fideo hwn
rydym yn mynd i siarad am pedwar gweithrediad ein bod yn
Gall perfformio ar fwrdd.
>> Mae mwy na hyn.
Gallwn wneud mwy na hyn, ond ar gyfer ein dibenion,
rydym yn gyffredinol yn mynd i gael ei ddefnyddio dim ond pedwar mewnosoder operations--,
dewis, diweddaru, ac yn dileu.
Ac mae'n debyg y gallwch ddyfalu reddfol beth pob un o'r pedwar o'r pethau hyn yn ei wneud.
Ond byddwn yn mynd i mewn i ychydig o fanylion am bob un.
>> Felly, ar gyfer ddibenion yr fideo, gadewch i ni dybio
rydym wedi y canlynol dau tablau yn un gronfa ddata.
Mae gennym fwrdd o'r enw Defnyddwyr sydd wedi pedwar columns-- rhif adnabod, enw defnyddiwr,
cyfrinair, a enw llawn.
Ac mae gennym ail tabl yn yr un gronfa ddata
Gelwir Moms mai dim ond yn storio gwybodaeth am enw defnyddiwr a mam.
Felly, ar gyfer pob un o'r enghreifftiau yn y fideo hwn, rydym yn chi helpu
yn defnyddio'r gronfa ddata hon ac diweddariadau dilynol iddo.
Felly, gadewch i ni ddweud ein bod am ychwanegu gwybodaeth at dabl.
Dyna beth y mewnosodiad weithredu yn ei wneud.
Wrth egluro pob un gorchmynion hyn, dw i'n mynd
rhoi sgerbwd cyffredinol i chi ei ddefnyddio.
Gan fod y bôn, mae'r ymholiadau yn mynd yn edrych 'n bert debyg,
rydym yn jyst yn mynd i fod yn newid ychydig yn wahanol ddarnau o wybodaeth
i wneud pethau gwahanol gyda'r bwrdd.
>> Felly, ar gyfer RHOWCH, y sgerbwd yn edrych yn fath o fel hyn.
Rydym am i fewnosod i mewn i tabl penodol.
Yna, mae gennym parenthesis agor a rhestr o golofnau
ein bod am roi gwerthoedd ar.
Cromfachau Close, mae'r yn dilyn gwerthoedd, ac yna
unwaith eto, rydym yn rhestru'r gwerthoedd rydym am roi yn y tabl.
>> Felly yn enghraifft o hyn fyddai'r canlynol.
Rwyf am i fewnosod yn y tabl defnyddwyr y columns-- canlynol
enw defnyddiwr, cyfrinair, a fullname.
Felly rhes newydd lle rydw i'n rhoi yn y rhai tair colofn ac rydym yn
mynd i roi yn y gwerthoedd Newman, USMAIL, a Newman.
Felly, yn yr achos hwn, rwy'n rhoi'r Newman llythrennau bach
i mewn i'r golofn enw defnyddiwr, cyfrinair USMAIL, ac mae'r brifddinas enw llawn N
Newman i mewn i'r golofn fullname.
>> Felly, dyma beth y gronfa ddata yn edrych fel o'r blaen.
Dyma beth y tabl ddefnyddwyr ar y top edrych fel cyn i ni yn gwneud hyn.
Ar ôl i ni gyflawni'r hyn cwestiwn, rydym yn cael hyn.
Rydym wedi ychwanegu rhes newydd at y bwrdd.
Ond sylwi ar un peth hwn nad oeddwn yn pennu,
ond rhywsut mae gen i werth amdano, sef hyn yn 12 iawn yma.
Doeddwn i ddim yn dweud fy mod i eisiau rhoi rhif adnabod i mewn 'na.
Roeddwn i eisiau rhoi enw defnyddiwr, cyfrinair, fullname.
Ac yr wyf yn gwneud hynny, mae hynny'n iawn.
>> Ond rwyf hefyd yn cael hyn yn 12.
Pam wnes i gael hyn 12?
Wel, mae'n ymddangos fod pan fyddwch yn diffinio
colofn sydd yn mynd i fod yn eich allwedd gynradd, sydd fel arfer yn,
fel y dywedais, mae nifer adnabod.
Nid yw bob amser o reidrwydd mynd i fod yn rhif adnabod,
ond fel arfer mae'n syniad da i cael rhyw fath o werth gyfanrif.
Mae gennych opsiwn yn phpMyAdmin pan fyddwch yn creu eich cronfa ddata
neu eich bwrdd i osod y colofn fel auto incrementing.
>> Pa yn syniad da iawn pan eich bod yn gweithio gydag allwedd gynradd,
oherwydd eich bod am i bob gwerth yn y golofn honno fod yn unigryw.
Ac os byddwch yn anghofio i bennu am fwy nag un person,
ydych yn awr mewn sefyllfa lle bellach yn y golofn honno yn unigryw.
Mae gennych ddau bylchau, felly dim y gallwch hirach unigryw nodi column--
neu os ydych mwyach unigryw y gall nodi rhes yn seiliedig ar y golofn honno.
Mae'n colli ei holl Gwerth fel allwedd gynradd.
>> Ac felly yn ôl pob golwg yr hyn yr wyf wedi ei wneud yma wedi ei ffurfweddu y ID defnyddiwr
golofn i auto gynyddiad fel bod pob tro rwy'n ychwanegu gwybodaeth at y bwrdd,
bydd yn rhoi i mi yn awtomatig gwerth am yr allwedd gynradd.
Felly, gallaf byth yn anghofio gwneud hynny oherwydd Bydd y gronfa ddata yn ei wneud i mi.
Felly dyna fath o 'n glws.
Ac felly dyna pam rydym yn cael 12 i mewn 'na, am fy mod i wedi
gosod y golofn hyd at auto gynyddiad.
Os byddaf yn ychwanegu rhywun arall byddai'n fod 13, os wyf yn ei llwytho
rhywun arall byddai'n fod 14, ac yn y blaen.
>> Felly gadewch i ni dim ond gwneud un gosod mwy.
Byddwn yn mewnosod i mewn i'r tabl moms, yn arbennig, yr enw defnyddiwr a mam
colofn, gwerthoedd Kramer a Babs Kramer.
Ac felly rydym wedi cael hyn o'r blaen.
Ar ôl i ni fod yn gweithredu SQL query, rydym wedi hyn.
Rydym wedi ychwanegu Kramer a Babs Kramer at y tabl moms.
>> Felly mae hynny'n fewnosod.
SELECT yw'r hyn rydym yn ei ddefnyddio i echdynnu gwybodaeth o'r tabl.
Felly dyma sut cawn gwybodaeth allan o'r gronfa ddata.
A gorchmynion felly SELECT yn mynd i fod a ddefnyddir yn aml iawn mewn rhaglennu.
Mae'r cyffredinol framework-- y sgerbwd cyffredinol yn edrych fel hyn.
Dewiswch set o golofnau o tabl, ac yna optionally
gallwch bennu condition-- neu yr hyn yr ydym fel arfer yn ei alw'n predicate,
yw'r term a ddefnyddiwn yn SQL fel arfer.
>> Ond yn y bôn yr hyn rhesi penodol yr ydych am gael.
Os ydych eisiau, yn hytrach na chael popeth, cul i lawr,
dyma lle y byddech yn gwneud hynny.
Ac yna yn ddewisol, gallwch hefyd archebu dros y golofn penodol.
Felly efallai y byddwch am gael pethau didoli yn nhrefn yr wyddor yn seiliedig ar un golofn
neu yn seiliedig yn nhrefn yr wyddor ar un arall.
>> Unwaith eto, BLE a GORCHYMYN GAN yn ddewisol.
Ond byddant yn debygol o fod yn useful-- arbennig
BLE bydd yn ddefnyddiol cul i lawr fel nad ydych yn ei wneud
cael eich gronfa ddata gyfan yn ôl ac rhaid ei phrosesu, 'ch jyst cael
y darnau ohono eich bod yn poeni am.
Felly, er enghraifft, efallai y byddwn am i ddewis Rhif adnabod a fullname gan ddefnyddwyr.
Felly beth allai hyn yn edrych?
Felly dyma fy mwrdd ddefnyddwyr.
Rwyf am i ddewis idnum a fullname gan ddefnyddwyr.
Beth ydw i'n mynd i gael?
Rydw i'n mynd i gael hyn.
Doeddwn i ddim yn culhau i lawr, felly rwy'n cael y rhif adnabod ar gyfer pob rhes
a dwi'n cael y llawn enw o bob rhes.
>> IAWN.
Beth os wyf am i ddewis cyfrinair gan ddefnyddwyr WHERE-- felly nawr
Im 'yn ychwanegu amod, a predicate-- lle idnum yn llai na 12.
Felly dyma fy cronfa ddata eto, fy mwrdd defnyddwyr y brig.
Beth ydw i'n mynd i gael os wyf eisiau dewiswch y wybodaeth honno, y cyfrinair,
lle ID defnyddiwr neu idnum yn llai na 12?
Rydw i'n mynd i gael hyn gwybodaeth yn ôl, dde?
Mae'n digwydd bod idnum yw 10, llai na 12, rhif ID 11 yn llai na 12.
Im 'yn cael y cyfrinair ar gyfer rhesi hynny.
Dyna beth yr wyf yn gofyn amdano.
Beth am hyn?
Beth os wyf am i ddewis seren gan tabl moms lle enw defnyddiwr hafal Jerry?
OK, dewiswch seren yw'r arbennig math o gerdyn gwyllt hyn a elwir yn
a ddefnyddiwn i gael popeth.
Felly, maent yn ei ddweud dethol enw defnyddiwr mam coma, a oedd yn
digwydd bod yr unig dwy golofn o'r tabl hwn,
Gallaf dewiswch seren a chael popeth
lle mae'r enw defnyddiwr hafal Jerry.
Ac felly dyna beth fyddwn i'n ei gael os wyf yn gwneud hynny ymholiad penodol.
>> Yn awr, cronfeydd data yn cael eu wych oherwydd eu bod yn caniatáu
ni i drefnu gwybodaeth o bosibl ychydig yn fwy effeithlon nag yr ydym
efallai fel arall.
Nid ydym o reidrwydd i storio pob darn perthnasol o wybodaeth
am ddefnyddiwr yn yr un tabl.
Cawsom ddwy tablau yno.
>> Mae angen i storio enw mam pawb yn,
ac efallai nad oes gennym nawdd cymdeithasol Rhif, yr ydym wedi eu dyddiad geni.
Nid yw bob amser angen hynny i fod yn yr un tabl.
Cyn belled ag y gallwn ddiffinio berthynas rhwng y tables--
a dyna lle y perthynol tymor cronfa ddata fath o yn dod
i mewn i play-- cyn belled ag y gallwn ddiffinio berthynas rhwng y byrddau,
gallwn fath o yn adrannau neu bethau haniaethol ffordd,
lle rydym yn unig yn cael y Gwybodaeth bwysig iawn
yr ydym yn gofalu amdanynt yn nhabl y defnyddiwr.
Ac yna mae gennym wybodaeth ategol neu wybodaeth ychwanegol mewn tablau eraill
ein bod yn gallu cysylltu yn ôl at y prif tabl defnyddwyr mewn ffordd arbennig.
>> Felly dyma ni gael y rhain ddau dabl, ond mae 'na berthynas rhyngddynt,
iawn?
Mae'n ymddangos fel enw defnyddiwr Efallai fod yn rhywbeth
sy'n bodoli yn gyffredin rhwng y ddau tablau gwahanol.
Felly beth os ydym yn awr wedi sefyllfa lle rydym
am gael enw llawn y defnyddiwr o tabl y defnyddiwr, ac mae eu mam
enwi o'r tabl fam?
Nid oes gennym ffordd i gael hynny fel y mae, dde?
Does dim tabl sengl sy'n cynnwys y ddau enw llawn ac enw'r fam.
Nid oes gennym yr opsiwn hwnnw o'r hyn yr ydym wedi ei weld hyd yn hyn.
>> Ac felly mae'n rhaid i ni gyflwyno y syniad o YMUNWCH.
Ac yn ymuno yn ôl pob tebyg y complex-- fwyaf
'i' 'n sylweddol gweithrediad mwyaf cymhleth rydym yn mynd i siarad am yn y fideo.
Maent yn ychydig yn gymhleth, ond ar ôl i chi gael y hongian ohono,
eu bod mewn gwirionedd yn ddim yn rhy ddrwg.
'I' jyst yn achos arbennig o SELECT.
Rydym yn mynd i ddewis set o colofnau o dabl ymuno
mewn ail dabl ar rai predicate.
>> Yn yr achos hwn, yn meddwl am y peth yn hoffi this-- tabl un yn un cylch dros yma,
tabl dau yw cylch arall dros yma.
A bod predicate rhan yn y canol, mae'n
fath o fel os ydych yn meddwl am fel diagram Venn, beth
oes ganddynt yn gyffredin?
Rydym yn awyddus i gysylltu'r rhain ddau dabl seiliedig ar yr hyn sydd ganddynt yn gyffredin
ac yn creu y tabl hwn ddamcaniaethol hynny yw uno'r ddau gyda'i gilydd.
Felly byddwn yn gweld hyn mewn esiampl ac efallai y byddant yn helpu
clirio i fyny ychydig bach.
Felly efallai y byddwch am ddewis user.fullname a moms.mother
gan ddefnyddwyr yn ymuno yn y tabl moms ym mhob sefyllfa
lle y golofn enw defnyddiwr yr un fath rhyngddynt.
Ac mae hyn yn newydd Syntax yma, defnyddiwr hwn.
a moms ..
Os ydw i'n gwneud tablau lluosog gyda'i gilydd, gallaf nodi tabl.
Gallaf wahaniaethu mewn ar neilltuol hynny ymlaen yn y gwaelod iawn yno.
Gallaf gwahaniaethu rhwng y enw defnyddiwr golofn y tabl defnyddiwr
o'r golofn enw defnyddiwr y tabl moms, sy'n otherwise--
os ydym newydd ei ddweud enw defnyddiwr hafal enw defnyddiwr, nad yw'n wir
golygu unrhyw beth.
Rydym am wneud hynny lle maent yn cyd-fynd.
>> Felly, yr wyf yn gallu nodi y tabl a'r enw colofn mewn achos o sefyllfa
lle y byddai'n aneglur beth rwy'n siarad amdano.
Felly dyna i gyd rwy'n ei wneud yna rwy'n gan ddweud y golofn hon o'r tabl hwn,
a bod yn eglur iawn.
Felly unwaith eto, rwy'n ddewis y enw llawn ac enw'r y fam
o'r tabl ddefnyddwyr cysylltu â'i gilydd â'r tabl moms ym mhob sefyllfa
lle maent yn rhannu y column-- maent yn rhannu y syniad enw defnyddiwr.
>> Felly dyma y tablau oedd gennym o'r blaen.
Mae hyn yn y cyflwr ein cronfa ddata fel y mae ar hyn o bryd.
Mae'r wybodaeth rydym yn echdynnu yw hyn i ddechrau.
Mae hyn yn y tabl newydd yr ydym yn mynd i greu cyfuno'r rhain at ei gilydd.
Ac yn sylwi nid ydym yn tynnu sylw at Rhes Newman yn nhabl y defnyddiwr,
ac nid ydym yn tynnu sylw at Rhes Kramer yn y tabl moms
oherwydd nid un yn bodoli mewn y ddau sets-- yn y ddau tablau.
>> Yr unig wybodaeth sydd yn gyffredin rhyngddynt yn Jerry yn y ddau tablau
ac gcostanza yn y ddau tablau.
Ac felly pan fyddwn yn gwneud y SQL YMUNO, yr hyn yr ydym get-- ac rydym yn ei wneud mewn gwirionedd yn cael hyn.
Mae'n fath o newidyn dros dro.
Mae'n debyg i damcaniaethol uno'r ddau dabl.
Rydym mewn gwirionedd yn cael rhywbeth fel hyn, lle
rydym wedi uno ynghyd y tablau ar y wybodaeth sydd ganddynt yn gyffredin.
>> Felly sylwi bod users.username a colofn moms.username,
'i' yn union yr un fath.
Dyna oedd y wybodaeth a yn gyson gan y defnyddwyr
bwrdd ac mae'r tabl moms.
Ac felly rydym yn cyfuno gyda'i gilydd.
Rydym yn taflu Kramer am ei fod Nid oedd yn bodoli yn y tabl defnyddiwr,
ac rydym yn taflu Newman, oherwydd nad oedd yn bodoli yn y tabl moms.
Felly, mae hyn yn yr uno damcaniaethol gan ddefnyddio'r YMUNWCH gweithrediad SELECT.
>> Ac yna roeddem yn chwilio am y enw llawn defnyddiwr a mam y defnyddiwr,
ac felly mae hwn yn y wybodaeth y byddem yn ei gael gan yr ymholiad cyffredinol
ein bod yn ei wneud gyda SELECT.
Felly, rydym yn ymuno â'r tablau at ei gilydd ac rydym dynnu rhai ddwy golofn,
ac felly dyna beth y byddem yn ei gael.
Ond SQL yn ymuno â rhyw fath o gymhleth.
Mae'n debyg na fydd yn gwneud gormod iddyn nhw, ond dim ond gael rhyw syniad o'r sgerbwd
y gallech ei ddefnyddio i uno dau tablau gyda'i gilydd os ydych angen.
Mae'r ddau olaf yn bit symlach wyf yn addo.
Felly diweddaru, gallwn ddefnyddio DIWEDDARIAD i newid gwybodaeth mewn tabl.
Mae'r fformat cyffredinol yw DIWEDDARIAD rhai bwrdd, SET rhywfaint colofn i ryw werth
LLE mae rhai predicate yn fodlon.
Felly, er enghraifft, efallai y byddwn eisiau i ddiweddaru'r tabl defnyddwyr
ac yn gosod y cyfrinair i yada yada, lle mae nifer adnabod yw 10.
>> Felly, yn yr achos hwn, rydym yn diweddaru'r tabl defnyddwyr.
Mae'r rhif adnabod yn 10 am y rhes gyntaf yno,
ac rydym am i ddiweddaru'r cyfrinair i yada yada.
Ac felly dyna beth fyddai'n digwydd.
Mae'n eithaf syml, dde?
Mae'n dim ond syml iawn addasu at y bwrdd.
>> DILEU yn y llawdriniaeth roeddem yn arfer tynnu gwybodaeth o dabl.
DILEU O dabl BLE rhywfaint o predicate yn fodlon.
Rydym eisiau dileu o'r tabl defnyddwyr er enghraifft
lle bo'r enw defnyddiwr yw Newman.
Mae'n debyg y gallwch ddyfalu beth sy'n mynd i ddigwydd yma ar ôl i ni yn gweithredu y SQL
ymholiad, Newman wedi mynd o'r tabl.
>> Felly yr holl weithrediadau hyn, fel yr wyf wedi dweud, yn hawdd iawn i'w wneud yn phpMyAdmin.
Mae'n rhyngwyneb defnyddiwr gyfeillgar iawn.
Ond mae'n gofyn am ymdrech llaw.
Nid ydym am i gyflogi ymdrech llaw.
Rydym am ein rhaglenni i gwneud hyn i ni, dde?
Felly efallai y byddwn am ei wneud mae hyn programmatically.
Rydym am i ymgorffori SQL a chael rhywbeth arall i wneud hyn ar ein rhan.
>> Ond beth yr ydym wedi gweld sy'n caniatáu ni wneud rhywbeth programmatically?
Rydym wedi gweld PHP, dde?
Mae'n cyflwyno rhai egni yn ein rhaglenni.
Ac felly yn ffodus, SQL a PHP yn chwarae 'n glws iawn gyda'i gilydd.
Mae 'na swyddogaeth yn PHP Gelwir ymholiad, y gellir eu defnyddio.
A gallwch basio fel y paramedr neu'r ddadl
holi ymholiad SQL sy'n hoffech i weithredu.
A bydd PHP yn gwneud hynny ar eich rhan.
>> Felly, ar ôl i chi gysylltu at eich cronfa ddata gyda PHP,
mae dwy ysgol gynradd i wneud hyn.
Mae mysqli rhywbeth o'r enw a rhywbeth o'r enw PDO.
Ni fyddwn yn mynd i mewn i enfawr swm fanwl yno.
Yn CS50 rydym yn defnyddio PDO.
Ar ôl i chi cysylltu at eich cronfa ddata, chi
Yna gall wneud ymholiadau eich cronfa ddata drwy basio y cwestiynau fel dadleuon
â swyddogaethau PHP.
A phan fyddwch yn gwneud hynny, byddwch yn storio'r cyfres canlyniadau mewn amrywiaeth cysylltiadol.
>> Ac rydym yn gwybod sut i weithio gyda araeau cysylltiadol yn PHP.
Felly, gallwn ddweud rhywbeth fel this-- $ results--
mae hyn yn PHP-- hafal ymholiad.
Ac yna tu mewn i'r swyddogaeth ymholiad ddadl honno
fy mod i'n pasio i ymholiad sy'n edrych fel SQL.
Ac yn wir sydd yn SQL.
Dyna y llinyn ymholiad fy mod byddai yn hoffi i weithredu ar fy gronfa ddata.
>> Ac felly mewn coch, mae hyn yn PHP.
Mae hyn yn SQL fy mod integreiddio i mewn i PHP drwy wneud
mae'n y ddadl i'r swyddogaeth ymholiad.
Rwyf am i ddewis fullname o defnyddwyr lle mae rhif adnabod hafal 10.
Ac yna efallai ar ôl fy mod wedi gwneud hynny, Efallai fy mod yn dweud rhywbeth fel hyn.
Rwyf am argraffu'r Neges Diolch am logio i mewn.
>> Ac yr wyf am iddo interpolate-- Rwyf am i interpolate $ canlyniadau fullname.
Ac felly dyna sut yr wyf yn gweithio gyda hynny arae cysylltiadol fy mod yn mynd yn ôl.
Byddai $ fullname canlyniadau yn y bôn yn y pen draw argraffu,
diolch am logio i mewn, Jerry Seinfeld.
Dyna oedd yr enw llawn lle idnum hafal i 10.
>> Ac felly i gyd fy mod yn gwneud yw fy mod yn now-- wyf storio
fy ymholiad, canlyniadau fy ymholiad ac yn arwain at amrywiaeth cysylltiadol,
ac fullname yw enw'r y golofn oeddwn yn ei gael am.
Felly dyna fy allwedd yn y canlyniadau arae cysylltiadol yr wyf am.
Felly Diolch am logio i mewn, $ canlyniadau, Bydd fullname argraffu, bydd yn ffon
iawn yn rhwng y rhai cyrliog bresys, Jerry Seinfeld.
A byddaf yn hoffi argraffu'r neges Diolch am logio i mewn Jerry Seinfeld.
>> Nawr, nid ydym yn ôl pob tebyg yn dymuno caled cod pethau fel 'na i mewn, dde?
Efallai y byddwn am wneud rhywbeth fel print f, lle y gallwn gymryd lle ac efallai
casglu gwybodaeth wahanol, neu efallai yn cael y broses ymholiad
gwybodaeth wahanol.
Ac felly ymholiad, y swyddogaeth ymholiad wedi syniad hwn o fath o dirprwyon
debyg iawn i argraffu f cant s ac y cant c, yn farciau cwestiwn.
>> A gallwn ddefnyddio cwestiwn marciau analogously iawn
i argraffu f at newidynnau eilydd.
Felly efallai eich defnyddiwr wedi mewngofnodi gynharach, ac rydych yn arbed eu rhif adnabod defnyddiwr
yn $ _session o PHP super byd-eang yn y ID allweddol.
Felly, efallai ar ôl iddynt wedi logio i mewn, chi osod $ _session ID hafal 10,
allosod o yr enghraifft rydym yn unig yn gweld eiliad yn ôl.
>> Ac felly pan fyddwn mewn gwirionedd yn gweithredu Bydd yr ymholiad hwn mae'r canlyniadau yn awr,
byddai'n plwg yn 10, neu beth bynnag y $ _session gwerth ID yw.
Ac felly sy'n ein galluogi i fod ychydig yn fwy deinamig.
Nid ydym yn codio pethau caled yn anymore.
Rydym yn arbed gwybodaeth rhywle ac yna
y gallwn ddefnyddio'r wybodaeth honno eto i math o cyffredinoli hyn yr ydym am ei wneud,
a dim ond plug-in a newid ymddygiad ein dudalen
seiliedig ar yr hyn rhif adnabod y defnyddiwr mewn gwirionedd ar ôl eu bod wedi mewngofnodi.
Mae hefyd yn bosibl, fodd bynnag, bod eich canlyniadau a osodwyd
Gallai gynnwys rhesi lluosog.
Os felly, mae gennych amrywiaeth o arrays--
amrywiaeth o araeau cysylltiadol.
A dim ond angen i chi ei ailadrodd drwyddo.
Ac rydym yn gwybod sut i ailadrodd drwy amrywiaeth yn PHP, dde?
Felly dyma yn ôl pob tebyg y mwyaf beth cymhleth yr ydym wedi ei weld hyd yn hyn.
Mae'n mewn gwirionedd yn integreiddio tair iaith gyda'i gilydd.
>> Yma yn goch, mae hyn yn rhywfaint o HTML.
Im 'yn ôl pob golwg starting-- mae hyn yn snippet o ryw HTML sydd gennyf.
Dwi'n dechrau paragraff newydd sy'n Dywed y moms o deledu Seinfeld.
Ac yna yn syth ar ôl hynny Dwi'n dechrau tabl.
Ac yna ar ôl hynny, yr wyf yn cael rhywfaint o PHP, dde?
Mae gen i hyn i gyd cod PHP mewn 'na.
Im 'yn ôl pob golwg yn mynd yn gwneud ymholiad.
Ac i wneud yr ymholiad, dw i'n mynd i yn defnyddio famau SELECT O moms.
>> Felly, mae hyn yn getting-- mae hyn yn SQL.
Felly y mae'r glas yn SQL.
Mae'r coch gwelsom eiliad yn ôl yn HTML.
Ac mae'r gwyrdd yma yw PHP.
Felly, fy mod yn gwneud ymholiad at fy cronfa ddata, rwy'n
dewis pob un o'r mamau yn y tabl moms.
Nid dim ond culhau i lawr i neilltuol rhes, rwy'n gofyn i bob un ohonynt.
>> Yna mi gadarnhau a oes canlyniad yn Nid yw hafal hafal ffug.
Mae hyn yn unig fy ffordd o wirio math o os nad yw canlyniadau yn hafal i null,
y byddem yn gweld c er enghraifft.
Yn y bôn mae hyn yn unig yw gwirio i wneud yn siŵr ei fod mewn gwirionedd yn cael y data yn ôl.
Oherwydd nad wyf am ddechrau argraffu allan data os nad oeddwn yn cael unrhyw ddata.
Yna, ar gyfer pob un canlyniadau o ganlyniad i'r cystrawen foreach o PHP, pob rydw i'n ei wneud
yn argraffu $ canlyniad mamau.
Ac felly yr wyf i'n mynd i gael set o bob un o'r mamau o each--
ei fod yn amrywiaeth o cysylltiadol arrays-- ac rwy'n argraffu
pob un fel ei rhes hun o dabl.
A dyna '' n sylweddol 'n bert llawer pawb mae iddo.
Rwy'n gwybod bod yna ychydig bit digwydd yma
yn yr enghraifft olaf gyda rhesi o arrays-- araeau o araeau cysylltiadol.
Ond mae'n wir yn unig berwi i lawr yn y SQL i wneud ymholiad,
fel arfer yn dewis ar ôl i ni i wedi eisoes rhoi gwybodaeth i mewn i'r bwrdd,
ac yna dim ond tynnu allan.
>> Ac mae hyn yn byddem yn tynnu ei allan yn yr achos penodol hwn.
Byddem yn tynnu pob unigolyn mamau o'r tabl moms.
Rydym yn cael set gyfan ohonynt, ac yr ydym yn eisiau ailadrodd drwy ac argraffu
pob un.
Felly unwaith eto, mae hyn yn ôl pob tebyg yr enghraifft fwyaf cymhleth
rydym wedi gweld oherwydd ein bod yn cymysgu tri ieithoedd gwahanol at ei gilydd, dde?
>> Unwaith eto, mae gennym HTML yma mewn coch, gymysg gyda rhai SQL yma mewn glas,
gymysg gyda rhai PHP mewn gwyrdd.
Ond mae pob un o'r rhain yn chwarae 'n glws at ei gilydd,' i '
dim ond mater o ddatblygu arferion da fel y gallwch ei gael
iddynt weithio gyda'i gilydd y ffordd yr ydych ei eisiau.
A'r unig ffordd i wneud iawn bod yw i ymarfer, ymarfer, ymarfer.
Rwy'n Doug Lloyd, mae hyn yn CS50.