[CHWARAE CERDDORIAETH] DAVID Malan: pob hawl, mae hyn yn CS50. Mae hyn yn y diwedd yr wythnos wyth. A heddiw, rydym yn dechrau i lenwi rhai darnau pan ddaw i adeiladu pethau ar y we. Felly, dwyn i gof bod ar ddydd Llun rydym yn treulio llawer mwy o amser ar PHP, sy'n ddeinamig hon iaith raglennu sy'n gadael i ni allbwn, ymhlith eraill pethau, HTML a chynnwys arall o'r fath y byddwn ydym am ei weld. Ond nid ydym wedi edrych mewn gwirionedd ar sut rydym yn mynd i storio unrhyw wybodaeth. Yn wir, mae bron unrhyw un bod y super Gwefannau diddorol y byddwch yn ymweld heddiw cael rhyw fath o gronfa ddata ar y pen ôl, dde? Facebook yn sicr yn storio llawer o ddata am bob un ohonom a siopau Gmail i gyd eich negeseuon e-bost. Ac felly, nid yw llawer o safleoedd eraill yn unig cynnwys statig dyna gwybodaeth. Mae'n mewn gwirionedd ddeinamig mewn rhyw ffordd. Rydych yn darparu mewnbwn, mae'n diweddaru y tudalennau ar gyfer pobl eraill. Byddwch yn cael negeseuon, i chi anfon negeseuon, ac yn y blaen. Felly heddiw, rydym yn edrych yn fanylach ar y sylfeini o brosiect y byddwch yn plymio i mewn nesaf wythnos, CS50 Cyllid, a oedd yn mewn gwirionedd yn mynd i gael i chi adeiladu rhywbeth na yn C, ond yn PHP. Gwefan sy'n edrych yn ychydig iawn o rhywbeth fel hyn sy'n caniatáu i brynu a gwerthu stociau sydd mewn gwirionedd yn mynd i dynnu ar amser real data stoc o Yahoo Cyllid. Ac felly yn y pen draw, byddwch yn cael y rhith i chi eich hun ac ar gyfer defnyddwyr eich bod yn mewn gwirionedd yn prynu a gwerthu stociau a chael amser bron real diweddariadau, rheoli portffolio, pob un ohonynt yn mynd i'w gwneud yn ofynnol cael, yn y pen draw, cronfa ddata o ddefnyddwyr. Felly, yn eich geiriau eich hun, yn enwedig os nad ydych yn super gyfarwydd â chyfrifiadur gwyddoniaeth neu gronfeydd data, beth ydych chi'n gwybod cronfa ddata i fod yn ar hyn o bryd, mewn termau nontechnical? Beth yw e? Sut fyddech chi'n disgrifio ei i roommate neu ffrind? GYNULLEIDFA: [Anghlywadwy] Gwybodaeth [Anghlywadwy] DAVID Malan: Felly, rhestr o wybodaeth, neu store-- rhestr o wybodaeth efallai y byddwch am i storio am rywbeth, fel defnyddiwr. A beth mae defnyddwyr yn cael gysylltiedig â hwy? Os ydych chi'n ddefnyddiwr ar Facebook neu Gmail, beth yw nodweddion bod pob un ohonom ddefnyddwyr? Fel, beth allai fod rhai o'r colofnau yn y daenlen yr ydym cyfeiriwyd tro diwethaf? Oherwydd unwaith eto, gallwch meddwl am gronfa ddata 'n sylweddol fel ffansi ffeil Excel neu Google Taenlen neu Apple ffeil Rhifau. Felly, beth yw eich barn am pan fyddwch yn meddwl defnyddiwr? Beth sydd ganddynt? Beth yw hwnna? GYNULLEIDFA: A enw. DAVID Malan: A enw. Felly, os enw, fel, David Malan fyddai enw'r rai defnyddwyr. Beth arall mae defnyddiwr ei gael? GYNULLEIDFA: Mae adnabod. DAVID Malan: Mae adnabod. Felly, fel rhif adnabod, fel eich Harvard ID neu eich Rhif Adnabod Net Yale neu debyg. Beth arall allai defnyddiwr ei gael? GYNULLEIDFA: Cyfrinair. DAVID Malan: A cyfrinair, efallai bydd cyfeiriad, efallai rhif ffôn, efallai cyfeiriad e-bost. Felly, mae tusw o gaeau ac mae hyn Gallai fath o fynd allan o reolaeth yn gyflym cyn gynted ag y byddwch yn dechrau gwireddu, oh, gadewch i storio'r hyn a gadewch i ni storio'r hyn a'r llall. Ond sut ydym ni'n ei wneud hynny? Felly unwaith eto, mae'r model meddyliol i gael ar gyfer heddiw wrth i ni plymio i mewn i SQL gwirioneddol, Iaith Ymholiad Strwythuredig, yn gronfa ddata sy'n edrych fel hyn. 'I' jyst rhesi a cholofnau. A gallwch ddychmygu Google Taenlenni neu unrhyw nifer o raglenni eraill. Ond yr hyn sy'n allweddol am MySQL, sef y meddalwedd cronfa ddata rydym yn mynd i'w ddefnyddio, y rhydd agored available-- defnyddiau Facebook ac unrhyw nifer o websites-- eraill Cronfa ddata siopau pethau relationally. A chronfa ddata berthynol yn unig yn golygu un sydd yn llythrennol yn storio ei ddata mewn rhesi a cholofnau. Mae mor syml â hynny. Felly, hyd yn oed rhywbeth fel Oracle sy'n Efallai eich bod wedi clywed y cyfan o yn gronfa ddata berthynol. Ac o dan y cwfl, mae'n data siopau mewn rhesi a cholofnau. Ac Oracle codi tâl arnoch yn llawer o arian i wneud hynny, tra bod taliadau MySQL chi unrhyw beth am yr un. Felly, SQL yn mynd i roi i ni o leiaf pedwar gweithrediad. Mae'r gallu i ddewis data, fel darllen data, mewnosoder, dileu, a data diweddaru. Mewn geiriau eraill, y rhai yn cael eu mewn gwirionedd yn y pedwar gweithrediad allweddol sydd yn mynd i ganiatáu i ni newid pethau mewn rhesi a cholofnau hynny. Mae'r offeryn y byddwn yn eu defnyddio heddiw yn arbennig i ddysgu SQL ac i chwarae ag ef gelwir MyAdmin PHP eto. Mae'n offeryn ar y we. Cyfanswm cyd-ddigwyddiad yw 'i' a ysgrifennwyd yn PHP. Ond mae'n mynd i roi graffigol ni rhyngwyneb defnyddiwr fel y gallwn mewn gwirionedd creu rhesi a cholofnau hyn ac yna siarad â nhw trwy gyfrwng cod. Felly, gadewch i ni yn awr yn dechrau yr hyn yr wyf yn meddwl yn dweud y gwir fath o broses hwyl o gan adeiladu ben gefn o wefannau, rhannau nad yw defnyddwyr yn ei wneud gweld, ond yn sicr yn gwneud gofal am, oherwydd dyna yn hytrach y data mynd. Felly, yn debyg i C, a ychydig yn llai tebyg i PHP, SQL, neu gronfa ddata sy'n cefnogi SQL, mae mathau o leiaf data hwn a sypiau eraill. CHAR, VARCHAR, INT, BIGINT, Degol, a datetime. Ac mae ei gyfanrwydd criw o nodweddion eraill, ond gadewch i ni wneud hyn trwy Fel enghraifft gwirioneddol. Rydw i'n mynd i fynd i mewn i CS50 IDE lle, ymlaen llaw, dwi wedi logio i mewn ac yr wyf hefyd wedi ymweld â URL ar gyfer offeryn hwn o'r enw PHP MyAdmin. Ac yn broblem a osodwyd saith, byddwn yn dweud chi yn union sut i gyrraedd rhyngwyneb hon yn ogystal. Ar y gornel chwith uchaf, sylwi mae'n ei ddweud ddarlithio. Ac mae hynny'n ei olygu yw bod ymlaen llaw, yr wyf yn creu darlith cronfa ddata o'r enw wag nad oes ganddo unrhyw taenlenni ynddo eto. Does dim rhesi a cholofnau. Oherwydd bod y cyntaf beth rydym yn mynd i'w wneud yn dechrau creu tabl sy'n mynd i storio ein defnyddwyr. Felly, yn llythrennol dros yma i'r dde, rwy'n yn mynd i ddweud wrth y gronfa ddata Rwyf am dabl o'r enw Defnyddwyr. Felly, mae hyn yn debyg y ffeil fy mod eisiau i storio fy holl ddata mewn. A faint o golofnau? Wel, gadewch i ni cadw pethau'n syml am y tro. Fi jyst eisiau i storio fel enw defnyddiwr ac enw ar gyfer defnyddiwr. Byddwn yn dechrau ar raddfa fach. Felly, yr wyf am gyfanswm dwy golofn. Ac yr wyf i'n mynd i fynd yn ei flaen a chliciwch Go. Ac yna, ar gyfer y rhain colofnau, yr hyn yr wyf i'n mynd i do-- os y rhyngrwyd hon cooperates-- pob hawl, felly rydym yn mynd i roi cynnig ar hynny eto. Rydw i'n mynd i greu tabl o'r enw Defnyddwyr gyda dwy golofn, cliciwch Go, OK. Nawr mae gennym y mae mewn gwirionedd yn gyflym. Diolch i chi, gwneud yn dda iawn. Mae pob hawl, felly beth ydym eisiau colofnau hyn i gael ei alw? Felly, un yn mynd i gael ei alw Enw Defnyddiwr. Felly, yr wyf yn gweld pob Yma-- a'r rhyngwyneb dweud y gwir yn cael ychydig yn hyll yn y pen draw, unwaith y byddwch yn dechrau teipio i mewn yr holl ddata hwn. Ond yr hyn sy'n braf yw y math yna o baradocsaidd, Im 'yn creu colofnau, ond mae'r offeryn wedi ffôl gosod nhw allan mewn rhesi fel y gallaf ffurfweddu colofnau hyn. Felly, mae dau bylchau yno o dan Enw. Ac un o'r meysydd hyn yr wyf yn yn awyddus i alw Enw Defnyddiwr, a'r cae arall yr wyf am alw Enw. Ac yn awr mae'n rhaid i mi ddewis fathau o ddata am y pethau hyn. Felly, tra yn Excel a Taenlenni Google, os ydych am gael colofn, rydych yn llythrennol jyst deipio Enw neu Enw Defnyddiwr, daro Chofnoda. Efallai eich bod yn ei gwneud yn wyneb beiddgar yn unig ar gyfer eglurder, ond dyna ni. Nid ydych yn pennu'r mathau o'r colofnau. Nawr yn Google Taenlenni Excel neu, chi Efallai nodi sut mae'r data yn cael ei rendro. Gallech fynd i ddewislen Format, a ydych Gall nodi ddangos hyn arwydd doler fel, ddangos hyn fel gwerth pwynt arnawf. Felly, mae'n debyg o ran ysbryd i bod yr hyn yr ydym chi ar fin ei wneud, ond mae hyn mewn gwirionedd yn mynd i rym mae'r data i fod yn fath arbennig. Yn awr, hyd yn oed er eiliad yn ôl roeddwn Dywedodd does dim ond ychydig o fathau o ddata, mae mewn gwirionedd llawer gyfan, ac maen nhw'n mewn graddau o penodoldeb amrywiol. Ac wrth fynd heibio, i chi gall hyd yn oed wneud pethau ffansi fel geometries storio tu mewn cronfa ddata. Gallwch storio pethau fel cyfesurynnau GPS ac mewn gwirionedd yn dod o hyd, yn fathemategol, pwyntiau sy'n agos at bobl eraill. Ond rydym ni'n mynd i cadw hyn yn syml super ac yn mynd i fyny i fan hyn, sydd i gyd y mathau hyn a elwir yn llinyn. Felly, dyma restr o criw cyfan o opsiynau. CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. Ac mae'n fath o llethol. Ac yn anffodus, braidd baradocsaidd i C, nid yw CHAR sydd mewn gwirionedd yn CHAR. Os byddwch yn nodi mewn cronfa ddata bod eich math data CHAR, mae hynny'n golygu bod ie, ei fod yn CHAR, ond mae'n un neu fwy o chars. Ac mae'n rhaid i chi nodi faint o chars ydych ei eisiau. Felly, beth sydd yn nodweddiadol hyd i enw defnyddiwr? A oes terfyn fel arfer? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: 16 efallai? Rhywbeth fel 'na. Rydych yn gwybod, yn ôl yn y dydd, arferai fod wyth. Weithiau mae'n 16 oed, weithiau mae hyd yn oed yn fwy na hynny. Ac felly, nid yw hyn yn yn golygu rhoi un CHAR mi. Mae hyn yn golygu yn rhaid i mi nodi hyd y cae, ac yn awr gallwn ddweud rhywbeth fel 16. Ac mae 'na masnach oddi yma. Felly, byddwn yn gweld mewn eiliad bod hyn yn golygu un, bob enw defnyddiwr wedi i fod yn 16 nod. Ond arhoswch funud, M-A-L-A-N. Os yw hynny'n fy enw defnyddiwr a dwi'n unig drwy ddefnyddio pum, beth fyddech chi'n ei gynnig bod y gronfa ddata i wneud ar gyfer yr 11 cymeriadau eraill sy'n Rydw i wedi Cedwir lle ar gyfer? Beth fyddech chi'n ei wneud? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yeah, dim ond gwneud nhw i gyd null. Gwnewch lleoedd iddyn nhw. Ond mae'n debyg null, felly mae llawer o zeros slaes. Felly, ar y naill law, mae gennym gwneud yn siŵr nawr fod fy enw defnyddiwr Gall fod yn fwy na 16 nod. Ac ar ochr arall hynny yw os cefais enw hir iawn neu eisiau hir iawn enw defnyddiwr fel rhai ohonoch Efallai y guys gael yn y coleg neu yn Yale.edu, ni allwch gael un. Ac felly yn wir, os ydych chi wedi cofrestru erioed ar gyfer gwefan ac rydych yn cael yelled yn dweud eich cyfrinair yn rhy hir neu eich enw defnyddiwr yn rhy hir, 'i' yn syml oherwydd rhaglennydd, pan ffurfweddu ei gronfa ddata, penderfynu bod y maes hwn bydd fod yn hwy na hyd yma. Mae pob hawl, felly beth os rydym yn symud ymlaen i enwi? Pa mor hir y dylai enw dynol nodweddiadol fod? Faint o gymeriadau, 16? Rwy'n dyfalu gallem dod o hyd i rywun yn yr ystafell hon lle gan ei plws cyntaf ddiwethaf enw i yw hirach na 16 nod. Felly, beth sy'n well na hynny, 17? 18? 25? Bigger? 30? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: 5,000, oh fy Nuw. Felly, mae hynny'n fwy na thebyg yn gweddus rhwymo uchaf, rhaid i ni ddweud. A dyma ni fath o gael i wneud dyfarniad galwadau. Fel, does dim ateb cywir fan hyn. Nid yw 'n Anfeidraidd eithaf posibl, oherwydd ein bod yn y pen draw mynd i have-- ein bod mynd i redeg allan o gof. Felly, mae'n rhaid i ni wneud galwad barn ar ryw adeg. Gyffredin iawn fyddai, er enghraifft, i use-- a gadewch i mi nodi CHAR yma fel before-- 255 yn llythrennol y terfyn uchaf ar feddalwedd y gronfa ddata hon Flynyddoedd yn ôl. Ac felly, mae llawer o bobl Byddai dim ond dweud, dirwy. 255 yw'r terfyn. Gadewch i jyst arfer 'r uchafswm. Ac mae hyn yn eithaf chwerthinllyd. Fel, os ydych yn teipio rhywun yn enwi am 200 o gymeriadau a mwy, bod ychydig yn chwerthinllyd. Ond, cofiwch nad yw ASCII yr unig system ar gyfer cymeriadau. Ac felly, yn enwedig mewn llawer o ieithoedd Asiaidd lle mae cymeriadau na allwn mynegi ar yr allweddellau fel fy Unol Daleithiau bysellfwrdd, mae rhai cymeriadau mewn gwirionedd gymryd hyd 16 darnau yn hytrach na wyth did. Ac felly, mae hyn mewn gwirionedd Nid yw bob un sy'n afresymol bod arnom angen mwy lle os ydym am i gyd-fynd cymeriadau mwy na'r iawn Unol Daleithiau rhai ganolog rydym wedi tueddu i drafod. Felly, mae angen rhywfaint o rhwymo uchaf. Nid wyf yn gwybod beth yr un gorau yw, ond 255 yn gyffredinol yn un cyffredin. 25 yn teimlo'n isel. 16, 32 yn teimlo'n isel. Byddwn yn or- o rywbeth uwch. Ond mae 'na masnach i ffwrdd, fel bob amser. Beth yw, efallai, yn amlwg cyfaddawd o gadw 255 chars ar gyfer enw pawb yn fy cronfa ddata? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Beth sy'n bod? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Mae'n llawer o gof, dde? M-A-L-A-N. Yr wyf newydd gwastraffu 250 cymeriadau yn unig i storio fy enw yn amddiffynnol, rhag ofn i rywun yn y dosbarth wedi enw hir iawn. Mae hynny'n ymddangos fel tradeoff gormodol. Felly, mae'n ymddangos fod SQL, iaith gronfa ddata hon, mewn gwirionedd yn cefnogi rhywbeth Gelwir VARCHAR, neu CHAR Amrywiol. Ac mae hyn yn fath o 'n glws yn y hwn yn eich galluogi i bennu nid yn sefydlog lled, ond yn hytrach, o led amrywiol. Ac yn fwy penodol, mae led uchaf y cae. Felly, mae hyn yn golygu y gall enw fod yn fwy na 250 o gymeriadau, ond gall fod yn sicr fod yn llai. Ac mae'r gronfa ddata yn mynd i fod yn smart. Os ydych yn rhoi yn M-A-L-A-N, dim ond yn mynd i ddefnyddio bump, efallai chwe bytes am debyg cymeriad null sy'n llusgo, ac nid treulio ychwanegol 249 neu 250 bytes ddiangen. Felly, mae hyn yn ymddangos fel y dylwn wedi dechrau gyda stori hon. Ond mae bob amser yn tradeoff. Felly, ar y naill law, enw defnyddiwr rwyf wedi penodol i gael ei codio galed yn 16 oed, ac efallai nad oedd hynny'n yr alwad cywir, efallai ei yw, ond beth am ddefnyddio VARCHARs am bopeth? Mae'n bodoli am reswm. Beth am ddefnyddio VARCHARs ar gyfer pob maes mae ei hyd nad ydych yn gwybod o flaen llaw os yw'n ymddangos i fod yn beth gwych, dde? Defnyddiwch dim ond cymaint o le ag y ei angen arnoch hyd at y terfyn hwn? GYNULLEIDFA: Arafach. DAVID Malan: Speller? GYNULLEIDFA: Yn ei gwneud yn arafach? DAVID Malan: O, mae'n arafach. Da, dyna bron bob amser yr ateb, a dweud y gwir. Fel, beth yw'r tradeoff? Mae'n naill ai yn costio mwy o le neu ei fod yn costio mwy o amser. Felly, yn yr achos hwn, gallai fod yn arafach. Pam? GYNULLEIDFA: [Anghlywadwy] penderfynu [Anghlywadwy]. DAVID Malan: Da. Felly, efallai y byddwch yn cofio o hyd yn oed PSED5, chwarae gyda'ch dull i'r geiriadur, os oes gennych i dyrannu cof ddeinamig neu'n cadw tyfu byffer, bod Gall mewn gwirionedd fod yn araf. Os oes rhaid i chi ffonio malloc o dan y cwfl ac efallai dyna beth MySQL yn ei wneud, felly sicr a allai fod yn wir. Ac os ydych yn meddwl ffordd yn ôl i PSet-- neu hyd yn oed wythnos dau, pan wnaethom pethau fel chwilio deuaidd neu hyd yn oed chwilio llinol, un o'r pethau neis am bob gair mewn cronfa ddata neu bob gair mewn colofn yn union yr un hyd, hyd yn oed os criw cyfan o gymeriadau rhai yn wag, yw y gallwch ei ddefnyddio hapgyrch ar eich data, dde? Os ydych yn gwybod bod pob gair yn 16 nod i ffwrdd, gallwch ddefnyddio rhifyddeg pwyntydd, felly i siarad, ac yn mynd â ni 16, 32, 48, 64, a gallwch neidio yn syth gan ddefnyddio rhifyddeg i unrhyw un o'r geiriau yn eich cronfa ddata. Tra os yw'n VARCHAR, beth sy'n rhaid i chi ei wneud yn lle hynny? [Ffôn yn canu] Os yw'n VARCHAR, chi Ni all ddefnyddio mynediad hap. Beth sy'n rhaid i chi chwilio am neu yn ei wneud? Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Edrychwch drwy'r olrhain whole-- drwy'r rhestr gyfan chwilio am yr hyn, yn fwyaf tebygol? Pa fath o werth arbennig? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Edrych gyfer y Terminators null hynny darnodi gwahanu geiriau. Felly unwaith eto, mae tradeoff, a does dim ateb cywir. Ond mae hyn yn lle, yn enwedig pan fydd eich defnyddwyr yn cael i fod yn llawer a bod eich llwyth ar eich gweinyddwyr, mae'r nifer y bobl sy'n defnyddio mae'n mynd yn uchel, mae'r rhain mewn gwirionedd yn y penderfyniadau nontrivial. Felly, gallwn adael y rhain fel hyn, ond gadewch i sgrolio i lawr drosodd i'r dde yma. Yn awr, mae un neu ddau o golofnau lle mae'n rhaid i ni wneud dyfarniad galwadau. A yw'n gwneud synnwyr i ganiatáu defnyddiwr enwi, enw defnyddiwr defnyddiwr neu defnyddiwr enw, i fod yn null? Hynny yw, dim ond wag. Teimlo ychydig yn nonsensical, felly rwy'n ddim yn mynd i wirio blychau hynny. Ond mae'n troi allan mewn cronfa ddata, gallwch ddweud, Gall rhywun gael y gwerth hwn yn ddewisol. Nid yw'r golofn oes gan i fod yno mewn gwirionedd. Yn awr, mae gostyngiad hwn i lawr ddewislen. Ac yn sylwi Rwy'n dal yn y rhes gyntaf yno, felly rwy'n siarad am enw defnyddiwr yn awr. Ac mae'n troi allan bod cronfa ddata, yn wahanol i daenlen yn unig syml, Mae nodweddion pwerus o'r enw mynegeion. A mynegai yn ffordd o ddweud wrth y Cronfa ddata o flaen llaw fy mod yn y dynol wyf yn gallach na chi. Yr wyf yn gwybod pa fath o ymholiadau, dewiswch neu mewnosod neu ddileu neu ddiweddaru, bod fy cod yn mynd i ben i fyny wneud ar y gronfa ddata hon. Rwyf am i ddarllen llawer o ddata. Rwyf am i fewnosod llawer o ddata. Rydw i eisiau gyson dileu llawer o ddata. Os wyf yn gwybod fy mod yn mynd i fod yn cael mynediad cae fel Enw Defnyddiwr llawer, Gallaf ddweud wrth y preemptively cronfa ddata, yr wyf yn gwybod mwy na chi, ac yr wyf am archddyfarniad sy'n dylech mynegai y maes hwn. Lle mynegeio cae neu golofn yn golygu bod y gronfa ddata o flaen llaw Dylai benthyg rhai syniadau gan, fel, wythnos pedwar a phump a chwech o CS50 ac mewn gwirionedd yn adeiladu i fyny rhywbeth fel chwiliad deuaidd coeden neu rywbeth Gelwir gyffredinol goeden B y byddech yn dysgu yn y dosbarth a CS124 tebyg yn Harvard, dosbarth algorithmau, neu unrhyw nifer o leoedd eraill. Mae'r gronfa ddata a'r smart bobl a rhoi ar waith ei Bydd chyfrif i maes sut i storio y tabl o wybodaeth mewn cof fel y chwiliadau a weithrediadau eraill yn gyflym super. Nid oes rhaid i chi wneud hynny. Nid oes rhaid i chi eu rhoi ar waith chwilio llinol neu chwilio deuaidd neu uno fath neu ddethol didoli, dim o hynny. Mae'r gronfa ddata yn gwneud hynny ar eich rhan os byddwch yn dweud mae'n preemptively i mynegai y maes hwn. A gallwch weld hefyd, mae ' rhai nodweddion eraill gallwn ddweud wrth y gronfa ddata i orfodi. Beth allai ei olygu os byddaf yn dewis Unigryw o'r ddewislen hon, dim ond reddfol? Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yeah, mae'r enw defnyddiwr wedi i fod yn unigryw. A yw hyn yn beth da neu beth drwg i cronfa ddata, ar gyfer gwefan gyda defnyddwyr? A ddylai enwau defnyddwyr fod yn unigryw? Yeah, yn ôl pob tebyg. Os dyna beth mae'r maes yn ddefnyddiwn i logio i mewn, nad ydych chi wir eisiau i bobl gael yr un teimlad neu'r un enw defnyddiwr. Felly, gallwn gael yr cronfa ddata yn gorfodi hynny felly sydd bellach yn fy cod PHP neu unrhyw iaith, Nid oes rhaid i mi, er enghraifft, gwiriwch o reidrwydd yn gwneud enw defnyddiwr hwn yn bodoli cyn i mi adael i rywun gofrestru? Ni fydd y gronfa ddata yn gadael i ddau berson a enwir David neu Malans gofrestru yn yr achos hwn. Ac wrth fynd heibio, er bod hyn dewislen unig yn gadael i chi ddewis un, mynegai unigryw yn un sy'n mynegeio ar gyfer perfformiad gyflym super, ond mae hefyd yn gorfodi unigryw. A byddwn yn dod yn ôl at yr hyn y mae'r ddau arall yn ei olygu mewn dim ond hyn o bryd. Yn y cyfamser, os byddaf yn mynd i fy ail reng, a oedd yn yw enw'r defnyddiwr, dylwn nodi y dylai'r enw fod yn unigryw? Na, oherwydd gallech yn sicr have-- does dim dau David Malans yn yr ystafell hon, yn fwyaf tebygol. Ond os ydym yn dewis enw gwahanol, efallai y byddwn yn sicr yn cael gwrthdrawiadau. Meddyliwch yn ôl i hash tablau ac yn y blaen. Felly, rydym yn sicr nid oes eisiau i wneud y cae enw unigryw. Felly, rydym yn jyst yn mynd i adael hynny fel dash, dash, dash, dim byd. Ac yr wyf i'n mynd i adael popeth arall yn unig. Yn wir, mae'r rhan fwyaf o'r meysydd hyn Ni fydd yn rhaid i ni ofalu amdanynt. A phan Rwy'n barod i achub hyn, os bydd y rhyngrwyd yn cydweithio, Yr wyf yn clicio Save, ac yn iawn, iawn, iawn yn araf y mae'r gronfa ddata yn cael ei arbed. Ac yn awr fy mod yn ôl at hyn rhyngwyneb, a oedd yn rhaid cyfaddef, yn llethol ar yr olwg gyntaf. Ond yr holl Rydw i'n mynd i wneud yw clicio ar y gair Defnyddwyr ar dop chwith. Rydw i'n mynd i fynd i fyny yma, cliciwch Defnyddwyr, a at ball, mae'n wedi cyflawni rhywfaint o SQL, ond mwy am hynny mewn munud. Dyma dim ond crynodeb o'r hyn a wnaeth i mi. Ac i beidio â phoeni eich bod yn gweld sôn o Ladin a Sweden yma. Mae'r rhai yn unig 'r ball lleoliadau, gan fod MySQL yn wreiddiol, neu PHP MyAdmin, un o'r ddau wedi digwydd i gael ei ysgrifennu gan rai pobl Sweden. Ond mae'n amherthnasol yn ein hachos ni fan hyn. Mae pob hawl, felly pam mae hyn i gyd yn ddiddorol? Mae'n troi allan, gallaf mewnosod data i mewn i gronfa ddata drwy ysgrifennu cod. A dwi'n mynd yn ei flaen a yn fy ffeil yma, dwi'n mynd i fynd yn ei flaen ac yn esgus tebyg mae hyn yn cael ei weirio i'r gronfa ddata, a nid yw ar hyn o bryd, ond bydd yn fod pan gawn i broblem a osodwyd saith. Ac yr wyf i'n mynd i fynd yn ei flaen a cyflawni swyddogaeth o'r enw ymholiad, y byddwn yn rhoi i chi yn broblem yn gosod cod dosbarthu saith, gan fod cymryd o leiaf un ddadl, sydd ychydig llinyn. Mae cyfres o cod SQL. Felly, ydych chi ar fin i ddysgu sut i ysgrifennu Iaith Ymholiad Strwythuredig. Os ydw i eisiau i fewnosod rhes newydd i mewn i fy Cronfa ddata oherwydd bod rhywun wedi cyflwyno ffurflen i fy cod, fyddwn i yn llythrennol ysgrifennu RHOWCH I ddefnyddwyr y canlynol feysydd: enw defnyddiwr, coma, enw, mae'r GWERTHOEDD, ac yn awr mae angen i mi i fewnosod rhywbeth fel Malan, a dyfynnwch, unquote 'David Malan.' Ac yn awr hyd yn oed ar gyfer y rhai sy'n anghyfarwydd â SQL, pam ydw i'n defnyddio dyfynodau sengl tu mewn y llinyn gwyrdd? Beth allai fod y rheswm yma? Hysbysiad Rwy'n cyd-gymysgu dwy iaith. Ymholiad yn swyddogaeth PHP, ond mae'n cymryd dadl. A bod dadl wedi i hun fod hysgrifennu mewn iaith arall o'r enw SQL, Iaith Ymholiad Strwythuredig. Felly, mae popeth yr wyf yn newydd a amlygir yma yn yr iaith hon o'r enw SQL. Felly, beth sydd â'r dyfynodau sengl, yn union fel gwiriad pwyll cyflym? Cer ymlaen. Maent yn llinynnau. Felly, dyfynnwch, Malan unquote a dyfynnwch, unquote David Malan yn llinynnau. Ac yn meddwl yn reddfol yn awr, gan wybod hyn a wyddoch am C a PHP, pam na wnes i wneud hyn, yr wyf fel arfer dyfynodau dwbl a ddefnyddir ar gyfer llinynnau? Pam na wnes i am wneud hynny? Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yn union. Gan fy mod eisoes 'yn arfer dyfynodau dwbl ar y ffordd y tu allan i'r ddadl i'r swyddogaeth PHP, Byddai Fi jyst drysu rhwng y cyfieithydd. Ni fydd yn gwybod, mae'r rhain yn mynd gyda'i gilydd? A yw hyn yn mynd gyda'i gilydd? A yw hyn yn mynd gyda'i gilydd? Felly, yr wyf yn ail yn lle hynny. Neu gallwn i wneud rhywbeth fel hyn, dyfyniad slaes neu ddyfyniad slaes. Dweud y gwir, mai dim ond yn dechrau cael annarllenadwy ac yn hyll iawn. Ond a fyddai'n cyflawni'r yr un canlyniad hefyd. Felly, pe bawn i weithredu'r hyn ymholiad yn awr, gadewch i ni weld beth sy'n digwydd. Rydw i'n mynd i fynd yn ei flaen yn awr ac yn hytrach na gweithredu y cod PHP, a oedd yn yw lle byddwch yn chwarae yn broblem yn gosod saith, Rydw i'n mynd i yn lle hynny, ewch i MyAdmin PHP. Ac yr wyf i'n mynd â llaw i fynd i'r tab SQL, a gadewch i mi chwyddo i mewn ar y rhyngwyneb. Ac yr wyf i'n mynd i bastio i mewn y peth Fi jyst deipio. Ac mae'r cod lliw wedi Newidiwyd ychydig yn awr, dim ond am fod y fformat rhaglen pethau ychydig yn wahanol. Ond yn sylwi bod yr holl wyf wedi ei wneud yw yr wyf wedi dweud, rhowch i mewn i Ddefnyddwyr. Rwyf wedi nodir, yna, mewn coma Rhestr parenthesized gwahanu y ddau gaeau yr wyf am i fewnosod, ac Yna Rwyf wedi dweud yn llythrennol gwerthoedd wedi'i ddilyn gan paren arall, ac yna y ddau werth Rwyf am plug-in, ac yn awr ar gyfer mesur da, 'N annhymerus' yn rhoi hanner colon ar y diwedd. Felly, nid yw hyn yn C. Nid yw hyn yn PHP. Mae hwn bellach SQL, ac rwy'n gludo ei i mewn i hyn rhyngwyneb ar y we sy'n jyst yn mynd i adael i mi, cyn gynted ag yr wyf yn clicio Go, gweithredu ymholiad hwn ar y gronfa ddata rhedeg tu mewn IDE CS50. Felly, mae hyn yn dda. Hysbysiad a ddywedodd un rhes mewnosod, aeth gyflym super, 0.0054 eiliad i fewnosod data hwnnw. Felly, mae hynny'n swnio'n eithaf iach. Mae'n ailfformatio fy ymholiad i mi yma dim ond i weld ei yn fath o fersiwn cod lliw. Ond yn awr, os wyf yn clicio Pori, yn sylwi bod, hyd yn oed er bod llawer o annibendod ar y sgrin, erbyn hyn mae fy mwrdd dwy res. Felly, gadewch i mi fynd yn ei flaen ac yn gwneud un arall. Yn lle hyn, gadewch i mi ewch i'r tab SQL eto. A'r tro hwn byddaf yn mewnosod rhywbeth fel Bydd Rob a'i enw fydd Rob Bowden. Bowden. Gadewch i ni cliciwch Save. Wps, yn hytrach Go. Cliciwch Pori eto, ac sylwi awr yr wyf wedi dwy res. Felly, mae hyn yn unig yw ffordd fwy cymhleth ffordd o agor Google Taenlenni a dim ond teipio rhes i mewn i golofn. Ond yr hyn sy'n allweddol yw bod erbyn hyn mae gennym y gystrawen i ysgrifennu cod ag ef fel bod yn y pen draw, gallem mewn gwirionedd gwneud rhywfaint ac mae hyn. Dwyn i gof bod yn cefnogi PHP newidynnau super byd-eang. Beth sydd y tu mewn o doler llofnodi tanlinellu GET yn PHP? Rydym yn cymryd golwg ar un neu ddwy enghraifft syml. Ac yn PSet6, cofio gennych helo dot PHP sy'n defnyddio newidyn hwn. Beth sy'n mynd i mewn 'na? Neu beth ydyw? Mae uwch bach. GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Mae'n eira had array, a oedd yn yn unig yw ffordd ffansi o ddweud bod arae sydd â parau gwerth allweddol. Ac nid yr allweddi yn rhifol. Maent yn eiriau neu llinynnau. Ac yn benodol, yr hyn yw'r rhai parau gwerth allweddol? Ble maen nhw'n dod? Mae'n ddrwg gennym? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Na? Ble mae rhai allwedd dod parau gwerth o? Dweud eto? Eto? Ydw i'n yr unig un rhywbeth clyw? [Chwerthin] Mae hynny'n iawn, ie? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yeah, maent yn yn dod oddi wrth y llinyn ymholiad. Felly, os ydych yn ailddirwyn mewn pryd i pan fyddwn wedi chwarae gyda Google ac rydym wedi mynd i Google.com slaes Chwilio question mark q hafal cathod, pe bawn yn daro Chofnoda ac os Google yn cael eu rhoi ar waith yn PHP, Cod PHP bod Google ysgrifennodd Byddai cael mynediad at arwydd doler tanlinellu GET tu mewn lle yn allwedd o'r enw Q a gwerth Gelwir cathod y gall yna defnyddiwch a ddefnyddir i wneud chwiliad go iawn gyda. Felly, mewn gwirionedd, yr hyn yr wyf i'n mynd i wneud yn awr yw mynd yn ôl at fy cod PHP y byddwch chi eto yn gweld mwy o yn PSet7. Ac yn hytrach na llenwi mewn gwerthoedd chodio caled sydd nid yw'n ymddangos fel iawn Gwefan ddeinamig, Rydw i'n mynd i roi ymlid ohonoch beth fyddai eich cod gwirioneddol yn ei wneud. Byddai eich rhoi mewn dau gofynodau fel hyn. Nid wyf yn gwybod beth yw'r enw defnyddiwr yn. Nid wyf yn gwybod yr hyn y mae'r enw yn mynd i fod, ond i ddim yn gwybod y gallaf cael yn ddynamig. Felly, os y cod ydym yn ysgrifennu yn awr yw cod sy'n rhedeg ar weinyddion Google, neu os yw hyn yn helo dot PHP, sy'n dod â PSet6, Rydw i'n mynd i basio i mewn y swyddogaeth ymholiad yn union fel printf, dau dadleuon eraill. GET, dyfynnwch, enw defnyddiwr unquote, a GET, dyfynnwch, enw unquote. Ac yn awr, sylwi ar yr hyn y mae'r Strwythur cyffredinol yma. Mae gen i ar y chwith ochr yr alwad, swyddogaeth hon a elwir ymholiad yn PHP. Rwy'n dal i gael fel iaith gyntaf ddadl, dim ond cyfres o destun. Ond mae hynny llinyn o destun yn hysgrifennu mewn iaith o'r enw SQL. Ac yn ddidwyll, nid yw'n iaith mawr. Rydym yn unig yn mynd i siarad am yn ffurfiol heddiw, mewn gwirionedd. Ac yna yn broblem a osodwyd saith, does gymharol ychydig o nodweddion ein bod mynd i trosoledd. Bydd y marciau cwestiwn, fodd bynnag, yn golygu plwg yn mae gwerth yma a plwg yn werth arall yma. A rhybudd, yr wyf wedi hepgor yr hyn o bob cwr o'r damn quote-- iddo- o amgylch y dyfyniad yn nodi y tro hwn. Rwyf wedi hepgor y dyfyniad marciau o amgylch y marc cwestiwn, ddrwg gennym, y tro hwn. Felly, beth braf am hyn Cwestiwn nodwedd marc sy'n PHP yn tueddu i gefnogi, Ruby a Python ac ieithoedd eraill, mae hyn yn unig yn golygu plwg mewn rhai gwerthfawrogi yma a ydych yn gwybod beth? Rydych yn chyfrif i maes a ddylid defnyddio dyfyniadau sengl neu dyfynodau dwbl. Peidiwch â trafferthu i mi gyda'r rhai Manylion ddeallusol anniddorol. Ond, gwnewch yn siŵr ei fod yn gywir fel bod fy cod yn y pen draw gweithredol a diogel, a oedd yn Bydd yn rhaid i ystyr cyn bo hir. Yn awr, faint o ddadleuon cyfanswm, dim ond i fod yn glir, yn cymryd swyddogaeth ymholiad? Dylai unrhyw un sydd eisiau pleidleisio am fwy na dwy? Tri? Cadarn, pam? Pam tri? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yn union. Mae'r rhan gyntaf yn y llinyn. Yr ail ddadl yw arwydd doler tanlinellu enw defnyddiwr braced GET. A'r trydydd ddadl yw y un peth, ond dim ond yr enw. Felly, mewn geiriau eraill, yn awr pe Roedd gen i ffurflen ar y we bod yn rhaid i feysydd testun, un ar gyfer enw defnyddiwr y defnyddiwr, un ar gyfer ei enw, dim ond fel y byddech yn gweld mewn gwefan pan fyddwch yn cofrestru ar gyfer rhywfaint gwefan, gallai hwn yn y cod ar y pen-ôl a mewn gwirionedd yn gwneud gosod yn awr i mewn i'r gronfa ddata. Yn awr ar y llaw arall, yn gadael i gyflym ymlaen. Tybiwch defnyddiwr yn awr logio i mewn ac rydych am i ysgrifennu cod PHP sy'n gwirio p'un y person sydd dim ond wedi mewngofnodi mewn gwirionedd yn ddefnyddiwr, gallwch defnyddio cystrawen eithaf syml. Gallwch ddweud SELECT, gadewch i ni ddweud seren, lle mae seren yn golygu popeth. Nid wyf yn gwybod yr hyn yr wyf eisiau, felly dim ond roi i mi yr holl golofnau o'r tabl Gelwir defnyddwyr lle, ac mae hyn yn 'n glws. Dewiswch cefnogi beth sydd a elwir yn predicate, sef fel ffordd o gymhwyso yr hyn yr ydych ei eisiau. Lle enw defnyddiwr yn dychwelyd dyfyniad, Malan unquote. Felly yma hefyd, dwi wedi gwreiddio y tu mewn i'r ddadl i swyddogaeth PHP, llinell o god SQL. A bod cod SQL hon amser yn mynd yn llythrennol i chwilio am ddyfynbris, unquote Malan. Nawr nid dyna'r cyfan sy'n ddefnyddiol, felly dwi'n mynd i neidio hynny ac yr wyf i'n mynd i roi i ffwrdd hon blaen o Brady, ac yn mynd ac yn plug-in yn lle hynny marc cwestiwn yma. Felly, dim ond i fod yn glir, beth Dylai fy ail ddadl gael os bydd rhywun yn unig wedi logio i mewn, ac rwy'n am wirio os yw ef neu hi mewn gwirionedd defnyddiwr? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yeah. Rwy'n clywed doler tanlinellu arwydd GET dyfyniad, enw defnyddiwr unquote. A dylai fod yn ôl i mi unrhyw un o'r rhesi yn fy gronfa ddata sydd â enw defnyddiwr o Malan. Yn awr, gobeithio, dw i'n mynd i fynd yn ôl sero os nad Malan yn bod yma, neu un os oes ganddo. Ni ddylwn i fynd yn ôl dau neu dri neu bedwar. Pam? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Dywedais unigryw, dde? Rheswm syml. Gan fy mod yn dweud mae'n rhaid iddo fod yn unigryw, dim ond yn rhesymegol, dim ond rhaid i chi sero neu un Malans yn y tabl hwn gronfa ddata penodol. Nawr fel o'r neilltu, yn union fel eich bod wedi gweld hynny, er fy mod yn cadw defnyddio GET ac er bod PSet6 yn unig a ddefnyddir GET, gallwch sicr wedi POST. Ac yn dwyn i gof bod Post yn un arall techneg ar gyfer cyflwyno gwybodaeth o ffurf, ond mae'n nid yw'n dangos i fyny yn yr URL. Mae'n ychydig yn fwy diogel yn sicr am pethau fel enwau defnyddwyr a chyfrineiriau, a fydd PSet7, mewn gwirionedd, yn golygu. Felly, gadewch i ni wneud hyn yn PHP MyAdmin a gweld beth sy'n digwydd. Rydw i'n mynd i fynd i'r tab MySQL. Ac yn sylwi bod y gwerth diofyn ar gyfer PHP MyAdmin, dim ond er mwyn ceisio bod o gymorth, yw dewis seren gan ddefnyddwyr lle mae un. Wel, un bob amser yn wir, felly mae hyn wedi y gwirion yn effeithiol o dewiswch popeth. Ond dw i'n mynd i fod ychydig yn mwy bedantig ac â llaw teipio allan seren SELECT GAN ddefnyddwyr. Nawr yn dechnegol, gallwch ddyfynnu enw'r tablau. Mae'n brin bod gennych i, ond yn sylwi nid yw'r rhain yn eich dyfyniadau arferol ar y bysellfwrdd Unol Daleithiau. Mae hyn yn y backtick fel y'i gelwir, a oedd yn gyffredinol ar y llaw chwith uchaf cornel eich bysellfwrdd. Ond mae'n brin bod wnewch chi helpu mewn gwirionedd mae angen i drafferthu â hynny, felly byddaf jyst hepgor nhw beth bynnag. Felly nawr, gadewch i mi fynd yn ei flaen a tharo fynd. A faint o resi ddylwn i gael yn ôl pan fyddaf yn dewis seren gan ddefnyddwyr? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Nifer y rhesi, yn sicr. Ond faint yn hyn stori concrit ar hyn o bryd? Dau, oherwydd yr oedd mi ac roedd Rob. Felly, os wyf cliciwch Go, yr wyf yn gweld bod eu golwg Rwyf wedi gotten yn ôl, yn wir, dwy res. Mae yna lawer o annibendod ar y sgrin, ond yr wyf yn gweld dwy res. Ar y llaw arall, os wyf yn gwneud hyn eto ac yn gwneud Seren SELECT GAN ddefnyddwyr, lle mae enw defnyddiwr hafal dyfyniad, unquote Malan, yn awr os byddaf yn cliciwch Go, Rydw i'n unig yn mynd i fynd yn ôl un rhes. Ac yn olaf, os wyf yn gwneud rhywbeth fel hyn, mae'n debyg nad wyf yn poeni am cael popeth, sydd yn fath o ddiystyr yn awr, oherwydd mae dim ond ddwy golofn. Dyw hi ddim yn hoffi fy mod yn dewis llawer iawn o ddata. Gadewch i ni dybio Rwy'n mynd yn ei flaen ac yn DEWISWCH enw GAN defnyddwyr, lle mae enw defnyddiwr hafal Malan, beth sy'n neis am SQL yn onest, yw ei fod mewn gwirionedd dim ond yn ei wneud yr hyn yr ydych yn dweud iddo wneud. Mae'n eithaf gryno, ond rydych yn llythrennol dim ond dweud ei fod yr hyn rydych am ei wneud. Dewiswch enw gan ddefnyddwyr lle yr enw defnyddiwr hafal Malan. Ac y mae mewn gwirionedd yw bod eglur. Felly, yn awr os wyf yn taro Go, faint o rhesi wyf i'n mynd i ddod yn ôl? Un, am ei fod yn dim ond Malan, gobeithio. Neu sero os nad oedd yn yno, ond un maximally. A faint o golofnau byddaf yn ei gael yn ôl? Faint o golofnau? Y tro hwn, Im 'jyst yn mynd i gael un oherwydd doeddwn i ddim dewiswch seren, sef popeth. Nawr rwy'n dewis jyst enw, felly yr wyf yn dim ond mynd yn ôl un golofn ac un rhes. Ac mae'n edrych fath o briodol chwerthinllyd, dim ond yn edrych super bach fel hyn. Felly, beth sy'n digwydd mewn gwirionedd? Pan fyddwch yn cyflawni SQL ymholiad gan ddefnyddio dethol, yr hyn yr ydych yn ei gael yn ôl o'r gronfa ddata yn debyg i dabl dros dro gyda rhesi a cholofnau, efallai, ond y hepgorer unrhyw beth sy'n Nid ei ddewis mewn gwirionedd gennych chi. Felly, mae fel pe bai rhywun wedi cael fawr daenlen o'r holl fyfyrwyr cofrestru ar gyfer rhai grŵp myfyrwyr, ac yr ydych yn dweud, roi i mi yr holl freshman sydd i wedi cofrestru ar gyfer ein grŵp myfyrwyr, beth eich cydweithiwr yn y Gallai grŵp myfyrwyr yn ei wneud yn gallent jyst llaw chi y daenlen gyfan. Dyna fel dweud dewiswch seren. Ac mae'n ychydig yn blino os dim ond am i'r freshman. Ac felly, os ydych yn dweud yn lle hynny, dewiswch seren o dabl cronfa ddata lle mae flwyddyn yn cyfateb dyfyniad, freshman unquote, 'i' fel pe byddai eich ffrind yn y grŵp myfyrwyr amlygwyd yn llythrennol ac copïo dim ond y rhesi freshman, eu ludo i mewn i Google newydd Taenlen neu ffeil Excel, a rhoi i chi yn ôl y gan arwain ffeil yn unig. Dyna'r cyfan sy'n mynd ar gysyniadol yma. Felly, yn y diwedd, y gallwn ei wneud rhai pethau 'n bert ffansi drwy storio pethau fel enwau defnyddwyr a cyfrineiriau ac yn y blaen. Ond, mae'n troi allan, dylem wneud ychydig yn wahanol na hyn. Dyw hi ddim yn bod smart i ddim ond storio enw defnyddiwr a chyfrinair. Rhywun yn gynharach, yr wyf yn meddwl lawr yma, awgrymu adnabod. Nawr gallai ID yn debyg i Harvard ID neu ID Net Iâl, ond gallai fod yn hyd yn oed yn symlach yn ein hachos ni cronfa ddata. Ac yn wir, yr achos cyffredin yw cael colofn arall. Ac yr wyf i'n mynd i fynd ymlaen llaw a golygu fy mwrdd. Ac os ydych yn chwarae o gwmpas gyda rhyngwyneb hon ar gyfer PSet7, byddwch yn gweld y gallwch wirio botwm yma fan hyn ac ychwanegwch cae ar gychwyn y tabl. Ac yn awr os byddaf yn cliciwch Go, mae'n mynd i roi un o'r ffurflenni hynny mi o yn gynharach. Rydw i'n mynd i ychwanegu cae o'r enw adnabod. Ac yr wyf i'n mynd i wneud yn fath rhifol. Mae gen i criw cyfan o'r gwerthoedd ar gyfer numerics. Im 'jyst yn mynd i ddewis INT ac â phoeni am y meintiau gwahanol. Nid oes rhaid i mi nodi hyd neu werth, am ei fod yn mynd i fod 32 darnau waeth beth. Priodoleddau, doedden ni ddim yn gweld o'r blaen. Unrhyw ddiddordeb mewn unrhyw un o'r rhain ddewislen opsiynau y tro hwn? Am INT? Beth wnaethoch chi ei gynnig? Na? A oes unrhyw un o'r rhain yn gwneud synnwyr? Yeah. Yeah, heb ei arwyddo, dde? Yn gyffredinol, os ydym yn mynd i roi pawb rhif unigryw, a oedd yn yw lle y stori hon yw mynd, Fi 'n sylweddol ond eisiau person i gael y nifer tebyg sero ac un a dau a thri a phedwar. Nid oes angen imi ddelio gyda rhifau negatif. 'I jyst yn ymddangos fel cymhlethdod diangen. Rwyf am phedwar biliwn o werthoedd posibl, Nid yw phedwar biliwn o werthoedd posibl, felly Fi jyst dyblu gallu fy INT. Fel o'r neilltu, os ydych am i gysylltu hwn i rhywbeth fel Facebook, yn ôl yn fath o fy dydd pan fydd Daeth Facebook allan yn gyntaf, Rwy'n credu yr hyn yr oeddent defnyddio yn eu cronfa ddata MySQL i storio defnyddiwr dynodwr, yn unig oedd yn INT. Ond wrth gwrs, mae yna lawer pobl go iawn yn y byd. Mae llawer o ffug Facebook cyfrifon yn y byd. Ac felly yn y pen draw, gorlifo Facebook maint o INT, a phedwar biliwn gwerth. Dyna pam, os ydych yn edrych o gwmpas ac mae gwefannau a all ddweud wrthych beth eich ID unigryw y mae. Ac os ydych chi byth yn dewis enw defnyddiwr mewn Facebook, byddwch yn gweld eich ID unigryw. Rwy'n credu ei fod proffil dot PHP question mark ID hafal rhywbeth. Mae hynny bellach rhywbeth fel mawr INT, neu hir o amser os mynnwch, sydd yn werth 64-bit neu rywbeth tebyg. Felly, hyd yn oed yn y byd go iawn yn ei wneud hyn materion yn y pen draw, weithiau o bwys. Ac mae'n troi allan yma, os ydw i'n gan roi fy holl ddefnyddwyr ID unigryw, Rwyf am fod super eglur ac cyn lleied â phosibl yn gwneud y maes hwn yn unigryw. Ond mae'n troi allan mae un darn o dull enwi heddiw yn rhy mae hynny'n allwedd gynradd. Os ydych yn cynllunio cronfa ddata bwrdd a ydych yn gwybod ymlaen llaw mai un o'r colofnau yn y tabl hwnnw Dylai a bydd yn nodi unigryw o rhesi yn y tabl, yr ydych am pennu ei a dweud wrth y gronfa ddata, hwn yw fy mhrif allweddol. Efallai y bydd dyblygu mewn meysydd eraill, ond rwy'n dweud wrth y gronfa ddata fod hyn yw fy cynradd, fy maes pwysicaf, sy'n sicr o fod yn unigryw. Yn awr, mae hyn yn ymddangos yn ddi-waith. Rwyf nawr yn cynnig ein bod yn ychwanegu, drwy glicio Save yma, yn called-- cae ac rwy'n mynd i fynd yn ei flaen a chliciwch AI, byddwn yn dod yn ôl at hynny mewn munud, Achub. Yr wyf yn cynnig nawr bod fy mwrdd edrych fel hyn. Mae gen i gae INT elwir ID, cae o'r enw CHAR Enw Defnyddiwr, cae o'r enw VARCHAR Enw, ond ID, os yw'n cynradd ac felly'n unigryw, pam wnes i jyst yn wastraff amser yn cyflwyno beth effeithiol yn ail unigryw Gelwir maes ID dyna INT? Enw Defnyddiwr, galw i gof, yn eisoes yn unigryw, dywedasom. Felly dim ond yn rhesymegol, nid oes angen i chi unrhyw brofiad cronfa ddata i reswm drwy hyn, pam Efallai fy mod wedi cyflwyno mae INT fel fy adnabod unigryw hefyd? Beth sy'n this-- ddweud eto? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: ar hap mynediad yn haws, pam? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yeah, 'i' dim ond cael mynediad rhifau. Felly, os ydych yn meddwl o hyn yn wir yn dabl, fel amrywiaeth, awr yr wyf wedi adnabod unigryw y gallaf neidio o gwmpas. Ac yn well na hynny o hyd yw bod pa mor fawr yw bod INT mynd i fod eto? 32 darnau neu bedwar bytes. Pa mor fawr yw fy enw defnyddiwr yn mynd i fod? Maximally? 16 bytes. Felly, os ydych yn wir yn gofalu am perfformiad eich cod, yn meddwl yn ôl i PSet5, a fyddai'n well gennych i chwilio am werth pedair beit neu 16 gwerth beit, dde? Mae wir mor syml â hynny. Mae'n rhaid i chi wneud bedair gwaith cymaint o waith i chwilio am enwau defnyddwyr am fod y rhai 16 bytes. Felly, rhaid i chi llythrennol cymharu pob un o'r 16 bytes i fod yn siŵr ie, mae hyn yn enw defnyddiwr rwyf eisiau. Tra gyfer INT, gallwch wneud hynny gyda dim ond pedwar bytes. Ac fel o'r neilltu ar gyfer y rhai diddordeb mewn caledwedd cyfrifiadurol, mae'n troi allan y gallwch chi ffitio rhywbeth fel mae INT neu werth 32-bit yn rhywbeth Gelwir cofrestr mewn cyfrifiadur CPU, sy'n golygu ei fod yn super, super gyflym, hyd yn oed ar yr isaf lefel y galedwedd y cyfrifiadur. Felly, does dim ond manteision i gyd o gwmpas. Felly, beth mae hyn yn ei olygu? Yn wir, pan fyddwch chi'n cynllunio tabl cronfa ddata, mae bron drwy'r amser ydych chi'n mynd i beidio â chael dim ond y data yr ydych yn gofalu amdanynt, ond mae hefyd yn rhywbeth fel dynodwr unigryw gan fod hyn yn mynd i gadewch i ni wneud pethau eraill. A gadewch i ni faglu dros un broblem yma. Gadewch i ni dybio nad yw defnyddwyr yn cael dim ond enwau defnyddwyr ac enwau, ond mae ganddynt hefyd pethau fel dinasoedd a gwladwriaethau a chodau zip, o leiaf yma yn yr Unol Daleithiau. Felly, dw i'n mynd i fynd yn ei flaen a dim ond yn gyflym yn dweud, rhoi dair colofn mwy i mi ar ddiwedd y tabl. Ac mae hyn yn mynd i fod City, mae hyn yn mynd i fod y Wladwriaeth, ac mae hyn yn mynd i fod Zip. Nawr mathau City, pa ddata dylai hyn fod, efallai? VARCHAR? Nid wyf yn gwybod yr hyn y mae'r enw hiraf ddinas. Rhywle yn America, mae ' yn ôl pob tebyg rhywfaint gair chwerthinllyd hir, felly gadewch i ni dim ond yn mynd â 255, braidd yn hanesyddol neu'n fympwyol. Y Wladwriaeth, yr hyn yr ydych eisiau ei wneud? Dyfarniad galwadau, dde? Beth sydd efallai y mwyaf effeithlon? Faint o gymeriadau? Efallai dim ond dau, os gallwn gael i ffwrdd â gwneud yn union, fel, MA gyfer Massachusetts ac yn y blaen. Felly, dw i'n mynd i fynd gwerth CHAR o ddau. Cod Zip 'na un diddorol. Rydym ni yma yn 02138, fel bod yn awgrymu y dylem ddefnyddio'r hyn? Mae'n INT, dde? INT, INT, byr? Byddai Byr yn gweithio. Na? CHAR neu bump, ond yr wyf am gael INT. Pam gwthio yn ôl ar INT? Perswadio fi o hyn. Beth sy'n dwp am INT, fy syniad? Yeah. GYNULLEIDFA: Cymerwch fyny mwy o gof. DAVID Malan: Cymerwch fyny mwy o gof. Mae pedwar bytes, ond rydych yn cynnig cod zip â phum bytes neu rywun oedd fel CHAR, sy'n teimlo fel eh, nid yw hynny'n wir yn yr achos. Wel, stori hwyliog. Flynyddoedd yn ôl, pan oeddwn yn arfer defnyddio Microsoft Outlook ar gyfer fy e-bost, Yr wyf yn y pen draw yn awyddus i newid i Gmail. Ac felly, yr wyf yn allforio fy holl cysylltiadau o Outlook fel ffeil CSV. Comma gwahanu gwerthoedd, a dim ond yn golygu i mi Roedd gan fy holl enwau ffrindiau a ddiwethaf enwau a rhifau ffôn a chodau zip a hynny i gyd. Ac yna yr wyf yn gwneud y camgymeriad o agor i fyny yn Excel, sy'n un o rhaglen taenlen sy'n deall ffeiliau CSV fel yr ydym wedi gweld. Ond yna, mae'n rhaid i mi fod wedi taro, fel, Ardal Reoli neu Reoli S ar un adeg. Ac Excel yn ôl pob golwg ar y pryd Roedd yn nodwedd lle bydd unrhyw adeg y Gwelodd nifer, mae'n ceisio bod yn ddefnyddiol. Ac os bydd y nifer yn dechrau gyda zeros, byddai'n jyst cael gwared arnyn nhw. Pam ydych chi'n angen arwain zeros ar cyfanrifau? Maent yn ddiystyr, yn fathemategol. Dydyn nhw ddim yn ddiystyr yn y system Unol Daleithiau Post. Felly, rwyf wedi cael ers blynyddoedd, hyd heddiw, yr wyf yn dal ffrindiau, pan fydd y achos prin y mae angen rhywun dyna yr wyf yn mynd i'r afael y dyddiau hyn, 'N annhymerus' yn dal i weld fy mod gael ffrind yng Nghaergrawnt, Massachusetts, 2138. Ac mae'n blino os ydych yn ceisio rhoi trefn o programmatically cynhyrchu amlenni neu dim ond jot i lawr. A dyna oherwydd y rheswm hwn, Dewisais y math data anghywir. Felly, yr wyf yn caru eich syniad. Gadewch i ddefnyddio cae CHAR. Pum cymeriad, ac eithrio mae achos gornel. Os ydych yn dal i anfon post, Weithiau zip codau dyddiau hyn, eu bod yn, fel, yn ogystal â phedwar. Felly, mae angen cysylltnod ac yna mae arnom angen pedwar rhif mwy. Felly, i fod yn onest, gallai mynd sawl ffordd wahanol. Am y tro, dwi'n mynd i gadw mae'n syml ac Im 'jyst mynd i ddweud ei fod yn pum gwerth CHAR ac rydym yn mynd i hepgor y cyfan dash ynghyd â phedwar. Ond mae'r rhain yn y mathau o cyfaddawdu. A allwch chi feddwl am y un problemau sy'n codi gyda rhifau ffôn neu feysydd eraill. Ac yn awr, mae hyn mewn gwirionedd ffordd ffôl i fynd i lawr. Gadewch i ni dybio y ddau Rob a minnau a Hannah a Maria a [? Davon?] Ac Andy ac eraill ar y staff i gyd yn byw yng Nghaergrawnt, Massachusetts, 02138. Mae hyn mewn gwirionedd yn teimlo'n wirion 'mod i'n gan ychwanegu at fy mwrdd ddefnyddwyr, dinas, y wladwriaeth, a zip. Pam? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Dweud eto? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Maen nhw bob amser mynd i fynd gyda'i gilydd, dde? Pan mae'n troi allan, rydym yn arfer meddwl hyn yn wir hyd nes y byddwn yn drwyadl chwilio yr Unol Daleithiau cyfan, ac yn ymddangos bod yna rhai anghysondebau lle mae trefi lluosog yn cael yr un zip, sydd yn rhyfedd. Ond, os byddwn yn nodi ar hyn o bryd fod 02138 bob amser yn Cambridge, Massachusetts, pam yn y byd y byddech yn storio mewn eich cronfa ddata Caergrawnt a MA a 02138 i mi ac i Hannah ac ar gyfer Rob a am [? Davon?] Ac i eraill sy'n byw yma yng Nghaergrawnt, mae'n berffaith diswyddo. Dylem gael i ffwrdd gyda dim ond storio beth? Dim ond y cod zip. Ond wedyn, os byddwn yn storio dim ond y cod zip, wyf am, yn ôl pob tebyg, ar gyfer fy ngwefan i wybod ble 02138 yw. Felly, mae angen bwrdd arall i mi. Ac mae hynny'n iawn. Ac yn wir, mae hyn yn un o'r prosesau dylunio o ddylunio tablau y byddwch yn ei wneud yn PSet7 yn ogystal lle ydych am ffactor allan data cyffredin. Yn union fel yr ydym wedi bod yn ffactoreiddio allan cod cyffredin a ffactoreiddio allan cyffredin arddulliau o CSS, dyma hefyd yn y gronfa ddata, os wyf ond angen i 02138 unigryw nodi dref enedigol rhywun, peidiwch â storio Cambridge, Mass ar gyfer bob defnyddiwr asio yn eich tabl. Yn lle hynny, rhaid i dabl ar wahân o'r enw Sipiau a ddylai gael yr hyn colofnau? Mwy na thebyg cae ID, dim ond oherwydd, er yr egwyddorion rydym yn sôn am nawr. Yn ôl pob tebyg cae zip ar gyfer 02138. Ac yna yn ôl pob tebyg pa colofnau eraill? Dinas a wladwriaeth, ond dim ond un rhes ar gyfer 02,138, un rhes ar gyfer 02139, un rhes ar gyfer 90,210. A bod yn llythrennol yr holl godau zip rwy'n gwybod. Felly nawr, beth allwch chi ei wneud? Mae hyn yn broblem, gan fod yn awr yr wyf wedi cael dau dabl. Felly, mae fy defnyddwyr yn bennaf dros yma, ond mae eu gwybodaeth ddinas wladwriaeth yn dros yma. Felly, mae'n troi allan gyda SQL, mae ' mewn gwirionedd yn ffordd i ymuno â gwybodaeth, a byddwch yn gweld hyn yn y PSet. Ond mae'n troi allan y gallwch gwneud rhywbeth fel hyn. Seren SELECT O defnyddwyr, YMUNO sipiau ON defnyddwyr dot zip hafal sipiau dot zip. Pa yn ychydig yn amleiriog, rhaid cyfaddef, ond mae hyn yn unig yn golygu dewiswch popeth o'r broses o gymryd fy mwrdd i ddefnyddwyr a fy mwrdd sipiau. Ymunwch â nhw ar y naill maes sydd ganddynt yng ngholofn. Felly, yn llythrennol yn gwneud rhywbeth fel hyn, ac yn rhoi i mi yn ôl tabl newydd dros dro dyna ehangach, dyna mwy, fod gan bob un o'r colofnau o'r ddau ohonynt. A dyna, yn syml, yn cael y cystrawen ar gyfer gwneud rhywbeth fel hyn. Felly, mae hyn yn ei flaen, ond mae mynd i fod yn benderfyniadau dylunio eraill wnewch chi helpu rhaid i ni wneud, nid yn unig gyda mynegeion ond mae hefyd yn rhedeg i mewn i heriau. Yn wir, mae 'na her mewn unrhyw gynllun cronfa ddata lle weithiau efallai dau o bobl eisiau i gael mynediad at yr un rhes o gronfa ddata bwrdd. Felly, mae hyn yn rhywbeth yr ydym chi helpu yn dod ar draws yn PSet7 hefyd. Ond yr wyf yn meddwl y byddwn i'n edrych ar un ymosodiad sy'n bosibl yn SQL. Beth yw rhai o'r problemau a all godi? Felly, byddwch yn dod ar draws hyn yn PSet7. Ac rydym yn dweud wrthych llwyr yr hyn y mae'r codio ateb ar gyfer y broblem hon. Ond os ydych yn cymryd dosbarth lefel uwch, yn enwedig mewn systemau gweithredu, ydych yn mynd i ddod ar eu traws mater o atomicity, y broblem o geisio gwneud pethau lluosog i gyd ar unwaith heb ymyrraeth. Ac yr wyf yn meddwl y byddwn i'n gyflwyno hyn syniad ar gyfer PSet7 gyda trosiad a ddysgais fy hun mewn Margo Systemau gweithredu CS164 Seltzer yn flynyddoedd dosbarth yn ôl. Tybiwch fod gennych un o'r rhain dorm oergelloedd yn eich ystafell dorm neu dŷ, a bod gennych penchant go iawn am laeth. Ac felly, byddwch yn dod adref o ddosbarthiadau un diwrnod, byddwch yn agor yr oergell. O, damn ef. Does dim llaeth yn yr oergell. Felly, ydych chi'n cau'r oergell, gloi'r drws, gloi eich dorm, cerdded o gwmpas y gornel i CVS, fynd i mewn llinell, a dechrau edrych allan am ychydig o laeth. Ac mae'n mynd i gymryd amser, oherwydd bod y rhai hunan ddesg dalu damn cownteri cymryd am byth i ddefnyddio beth bynnag. Felly yn y cyfamser, eich roommate yn dod adref. Ef neu hi wir yn hoffi llaeth hefyd. Maent yn dod i mewn i'r ystafell dorm, agor yr oergell, oh, asio hynny. Does dim mwy o laeth. Felly, ef neu hi hefyd yn mynd o amgylch y gornel. Ond yn awr, gan fod o fel dau neu dair neu bedair CVSes gerllaw, eu bod yn digwydd i fynd i un o'r gwahanol rai yn y sgwâr. Ac felly yn awr, ychydig funudau yn ddiweddarach, y ddau ohonoch yn dod adref ac yn Ych, problem gwaethaf erioed. Nawr eich bod wedi gormod o laeth oherwydd ei fod yn mynd i fynd sur. A ydych yn hoffi llaeth, ond rydych yn peidiwch â 'n sylweddol yn hoffi llaeth. Felly nawr, roedd hwn yn gostus camgymeriad gan fod y ddau ohonoch gwneud penderfyniad yn seiliedig ar y cyflwr rhai newidyn sy'n oedd yn y broses o yn cael ei newid gan i chi, cychwynnwr mynd i gael llaeth. Felly, beth yw efallai dynol ateb i'r broblem honno? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Gadewch nodyn, dde? Gadewch nodyn Dylech bob amser, os ydych yn gyfarwydd â'r sioe. Oes, mae dau ohonom. Felly, bob amser yn gadael nodyn, neu llythrennol cloi yr oergell gyda rhyw fath o clo clap neu rhywbeth dros ben llestri fel 'na. Ond mae hynny'n wir yn mynd i fod yn broblem allweddol gyda dylunio cronfa ddata, yn enwedig pan allai fod gennych lluosog borwyr, gliniaduron lluosog, defnyddwyr lluosog i gyd yn ceisio diweddaru gwybodaeth ar unwaith. Gwybodaeth arbennig o sensitif fel gwybodaeth ariannol, lle gyda masnachu stoc byddwch wefan fel chi yn adeiladu, beth os ydych am wirio faint o arian gennych ac yna os oes gennych ddigon, brynu stoc? Ond beth os bydd rhywun arall sydd Mae cyfrif ar y cyd gyda chi yn ceisio ar yr un pryd i brynu stoc? Felly, ei fod yn edrych ar y balans y cyfrif, y ddau ohonoch fynd yn ôl yr un fath ateb, does dim llaeth. Neu'r ddau ohonoch fynd yn ôl yr ateb, rydych wedi $ 100 mewn y cyfrif. Mae'r ddau ohonoch yn ceisio i wneud y penderfyniad i brynu un gyfran o rai stoc cwmni. Ac yn awr, beth sy'n digwydd? Mae gennych ddau gyfrannau? Nid oes gennych unrhyw gyfrannau? Gall problemau tebyg godi. Felly, byddwn yn dod ar draws hynny. Ymosodiadau pigiad SQL, diolch byth, yn rhywbeth y byddwn yn eich helpu gyda, ond mae'r rhain yn atrociously cyffredin y dyddiau hyn yn dal i. Felly, mae hyn yn unig yn enghraifft. Nid wyf yn honni bod System Harvard PIN yw agored i ymosodiad hwn penodol. Rydym wedi ceisio. Ond, byddwch yn gwybod ein bod yn cael cae fel hyn. Ac ID Net Yale Mae gan debyg chwilio sgrîn y dyddiau hyn. Ac mae'n troi allan, efallai y System PIN yn cael ei weithredu yn PHP. Ac os yw'n were-- yw'n not-- ydynt Efallai y bydd rhaid cod sy'n edrych fel hyn. Mae ganddynt ddau newidyn. Rhowch enw defnyddiwr a chyfrinair i mi oddi wrth y newidyn byd-eang ôl-super ein bod yn sôn amdanynt yn gynharach. Efallai Harvard Mae ymholiad fel seren SELECT GAN defnyddwyr lle mae enw defnyddiwr yn dychwelyd y a chyfrinair yn dychwelyd hynny. Ac yn sylwi bod Im 'jyst blygio ei wrth ddefnyddio y nodiant Brace cyrliog gan y llall diwrnod, sy'n golygu dim ond plwg mewn gwerth yma. Dydw i ddim yn defnyddio'r Cwestiwn dechneg marc. Nid oes gennyf unrhyw ail neu drydydd ddadleuon. Im 'jyst yn llythrennol adeiladu'r llinyn fy hun. Y broblem, fodd bynnag, yw bod os bydd rhywun yn hoffi scroob, sydd yn gyfeiriad at ffilm, logiau gyda rhywbeth fel hyn, ac rydw i wedi cael gwared ar y dotiau sydd fel arfer yn cynnwys i fyny cyfrineiriau, beth os yw'n yn arbennig maleisus ac mae ei cyfrinair efallai yw 12345, fesul y ffilm o'r enw "Spaceballs," ond roedd yn feirniadol mathau o sengl dyfyniad ar ôl y pum, Yna, yn llythrennol y gair neu'r yn y gofod, ac yna dyfynnu, un unquote hafal dyfyniad un, ond rhybudd ei fod yn hepgor beth? Mae wedi hepgor y dyfyniad ar y dde ac mae wedi hepgor y dyfyniad ar y chwith. Oherwydd os hymosodwr hwn rhagdybiaeth scroob yn yw bod y bobl a ysgrifennodd Nid yw hwn cod PHP mor llachar, efallai eu bod dim ond cael rhywfaint sengl dyfyniadau o gwmpas y rhyngosod o newidyn mewn braces cyrliog? Ac felly efallai, y gallai garedig o cwblhau eu meddwl ar eu cyfer, ond mewn ffordd sy'n mynd i adael iddo hacio i mewn i'r system PIN. Mewn geiriau eraill, mae'n debyg bod hyn yn y cod ac yr ydym yn awr yn plwg yn yr hyn scroob deipio. Ac mae'n goch, am ei fod yn ddrwg. Ac mae'r testun sylfaenol yn yr hyn y mae'n deipio i mewn, Gallai scroob tric gweinydd Harvard i adeiladu SQL query llinyn sy'n edrych fel hyn. Cyfrinair yn cyfateb 12345 neu un yn cyfateb i un. Canlyniad sydd, yn rhesymegol, yw y bydd hyn yn log scroob mewn os bydd ei cyfrinair 12345 neu os bydd un gyfartal un, sydd wrth gwrs bob amser yn wir, sy'n golygu scroob bob amser yn cael yn. Ac felly, y ffordd at atgyweiria hyn, fel mewn llawer o achosion, fyddai i ysgrifennu yn fwy amddiffynnol. I ddefnyddio rhywbeth fel ein swyddogaeth ymholiad gwirioneddol, a oedd yn byddwch yn gweld yn PSet7, lle'r ydym yn plwg yn rhywbeth fel gofynodau yma. A harddwch y swyddogaeth ymholiad i ni roi i chi yw ei fod yn amddiffyn yn erbyn y rhain hyn a elwir yn ymosodiadau pigiad SQL, lle rhywun yn twyllo'r eich cod i mewn chwistrellu ei cod SQL hun. Oherwydd yr hyn y swyddogaeth ymholiad rydym yn rhoi y byddwch yn ei wneud mewn gwirionedd, os ydych yn defnyddio'r gystrawen marc cwestiwn ac ail a thrydydd dadl yma, yw'r hyn oedd yn ychwanegu at y mewnbwn bod y defnyddiwr a ddarperir? Mae'r rhai slaes dyfyniadau. Felly, mae'n dianc unrhyw allai fod cymeriadau peryglus. Mae hwn yn edrych yn rhyfedd yn awr, ond nid yw'n agored i niwed oherwydd nid yw'n gwneud newid y rhesymeg anymore oherwydd dyna cyfrinair cyfan yn Erbyn hyn un dyfynbris nad dyna, mewn gwirionedd, cyfrinair scroob yn. Felly, mae rhai jôcs wedi bod am hyn dros y blynyddoedd. Felly, roedd hwn yn llun o ryw geek mewn llawer parcio lle efallai y byddwch yn gwybod bod rhai dinasoedd a gwladwriaethau ceisio sganio eich trwydded plât i bil chi neu i docyn i chi os byddwch yn mynd drwodd heb, fel, y peth E-Z Pass. Felly, y person hwn rhagdybir y efallai y bobl ysgrifennu'r system Pass E-Z Nid yw mor llachar, ac efallai eu bod dim ond concatenated gilydd llinyn, fel nad yw ef neu hi gallai faleisus nid dim ond cwblhau eu meddwl, ond mewn gwirionedd yn gweithredu gorchymyn drwg, nad ydym wedi crybwyll hyd yma, ond mae'n debyg y gallwch ddyfalu. Mae hynny yn ychwanegol at ddileu a mewnosod a diweddaru ac yn dewis, mae hefyd gair allweddol a elwir yn galw heibio, sy'n llythrennol yn dileu popeth yn y gronfa ddata, a oedd yn yn arbennig o wael. Gallwn chwyddo i mewn ar hyn os 'i' ychydig yn anodd eu gweld. Mae hyn, yn awr, mae cartŵn enwog dyna rhyfeddol glyfar bellach ac yn ddealladwy. [Chwerthin] Yeah, oer. Math o geeking allan. Felly y rhain, yna, yn cael eu Ymosodiadau pigiad SQL. Ac maen nhw mor hawdd i'w osgoi trwy ddefnyddio y cod cywir neu llyfrgelloedd cywir. A byddwch yn gweld yn PSet7, dyna pam ein bod yn rhoi'r swyddogaeth ymholiad i chi. Felly, un neu ddau o blasau ein bod yn meddwl byddem rhoi i chi yma yn ein munud yn weddill gyda'i gilydd. Felly, fel yr ydych yn cofio o wythnos sero, rydym yn Cyflwynodd y ddau bylbiau golau sy'n yn neis, nid yn unig oherwydd eu bod yn 'n bert ac maent yn lliwgar, ond oherwydd eu bod yn cefnogi rhywbeth Gelwir API, Cais Rhyngwyneb Rhaglennu A yn CS50 hyd yn hyn, rydym wedi canolbwyntio'n bennaf ar GET a POST, ond mae'n troi allan mae ferfau HTTP eraill fel RHOI. Ac yn wir, roedd hyn yn sleid o wythnos sero lle os byddwch yn ysgrifennu cod sy'n anfon a la PSet6 gais HTTP sy'n yn edrych fel hyn gyda darn hwn o destun ar y gwaelod, a elwir JSON, neu JavaScript Nodiant Gwrthrych y byddwn yn siarad am yr wythnos nesaf, gallwch droi ar neu droi i ffwrdd neu newid lliw goleuadau fel y rhai. Felly os CS50 hefyd yn ogystal â rhai bylbiau golau rheini yma yn New Haven os hoffech i fenthyg iddynt ar gyfer prosiectau terfynol, hefyd rai Microsoft Bandiau, sydd yn debyg gwylio eich bod yn gwisgo o gwmpas eich arddwrn bod yn yr un modd yn cael API er mwyn i chi Gall ysgrifennu eich meddalwedd eu hunain ar eu cyfer. Mae gennym gyfrif gyda Afalau 'Cod iOS felly os oes gennych Gwylio Apple neu iPhone neu iPad neu iPod, gallwch ysgrifennu cod sy'n mewn gwirionedd yn rhedeg ar hynny. Mae gennym criw cyfan o Arduinos, sy'n cael eu cyfrifiaduron bach bach heb achosion, yn y bôn, eich bod yn gallu cysylltu drwy USB, fel arfer at eich Mac neu PC eich hun, ysgrifennu cod sy'n rhedeg ar y rhain corfforol dyfeisiau sy'n aml yn cael synwyryddion arnynt fel y gallwch ryngweithio â'r byd go iawn. Mae gennym criw cyfan o ddyfeisiau Naid Motion, sy'n cael eu dyfeisiau USB ar gyfer Macs a Cyfrifiaduron personol, yma ac unwaith eto, yn New Haven. Ac os ydych yn cysylltu at eich Mac, alli 'n weithredol reoli eich cyfrifiadur gan feddalwedd ysgrifennu hynny drwy gyfrwng trawstiau is-goch, ffigurau gwybod lle mae eich dwylo dynol, hyd yn oed heb gyffwrdd eich bysellfwrdd. Rydym yn meddwl y bydden ni'n rhannu cyflym cipolwg ar hyn, er enghraifft. [CHWARAE CERDDORIAETH] Felly, mae gennym cyfan criw o pethau hyn, hefyd, o'r enw bandiau braich Myo yr ydych yn ei roi dros eich braich ac yna gallwch reoli y gwir byd neu y byd rhithwir fel hyn. [CHWARAE CERDDORIAETH] Neu, mae gennym hefyd rai Google Cardbord, sydd yn llythrennol, fel, bocs cardbord gallech roi ar eich wyneb, ond sleid yn eich ffôn i mewn iddo fel eich bod yn rhoi y gwydr eich ffôn yn agos iawn at eich llygaid. A Google Cardbord yw 'n bert rhad yn $ 10 neu $ 20. Ac mae wedi lensys bach hynny ychydig oddi ar shifft y ddelwedd ar y sgrin ar gyfer eich dynol llygaid i roi ymdeimlad o ddyfnder i chi fel eich bod yn mewn gwirionedd yn cael 3D amgylchedd o'ch blaen. Mae gennym hefyd rai Samsung Gear, a oedd yn yw'r fersiwn ddrutach o hyn, ond gall hynny lithro yn yr un modd mewn Android ffôn a rhoi y rhith i chi o- neu roi profiad o realiti rhithwir. Ac yn ein dwy funud olaf, rydym yn meddwl y bydden ni'n ceisio gwneud hyn. Os gallaf brosiect beth Colton wedi yma dim ond i godi blys arnoch, gadewch i mi fynd yn ei flaen a thaflu i fyny ar y sgrin fawr yma. Gadewch i mi ladd y goleuadau. Colton, ydych chi eisiau mynd yn ei flaen a'i roi ar eich cell am eiliad a dewch draw i'r canol y llwyfan? A ydych chi eisiau ei project-- mae hyn yn beth Colton gweld. Yn awr, mae'r Wi-Fi mewn yma yw Nid yw mor gryf ar gyfer y ddyfais hon bod hyn yn super gymhellol, ond Colton yn llythrennol yn y lle hwn ddyfodolaidd hudol. Dim ond yn gweld un ddelwedd. Yr ydych yn gweld ei lygad chwith a dde bod ei ymennydd yn cael eu pwytho at ei gilydd mewn tri dimensiwn amgylchedd ar ei wyneb. Mae'n dim ond dewis opsiwn ddewislen yma. Ac felly eto, mae'n gwisgo headset hwn gyda ffôn Samsung arno dyna wirelessly sy'n ymestyn at ein gorbenion. Nawr eich bod ar y blaned Mawrth, yr wyf yn meddwl? COLTON: Yr wyf yn credu hynny. Dwi ddim yn siŵr [Anghlywadwy]. [Chwerthin] DAVID Malan: Troi allan Mae gan Mars bwydlenni hyn. COLTON: [Anghlywadwy] rhywfaint o oer llefydd os ydym am fynd i'r canlynol-- DAVID Malan: Ble rydym eisiau mynd? COLTON: [Anghlywadwy] DAVID Malan: A gadewch i ni weld lle Colton yn mynd â ni yn awr. COLTON: [Anghlywadwy] DAVID Malan: Felly, mae cymaint o mannau gwahanol y gallwch eu cymryd eich hun. Mae FAPIs trwy y gallwch ysgrifennu gemau neu ryngweithiadau sy'n rhedeg, yn y pen draw, ar y ffôn. Felly, yr ydych mewn gwirionedd dim ond ysgrifennu app ffôn symudol. Ond diolch i feddalwedd a'r galluoedd graffeg, Erbyn hyn Colton yn hyn bwthyn bach bach. Ac ar y risg o llethol ein hunain, Colton a byddaf yn ffon o gwmpas ar gyfer tra ar ddiwedd y dosbarth yma heddiw os hoffech i ddod i fyny a chwarae. A byddwn yn dod â nhw yn ôl yr wythnos nesaf hefyd. Heb ymhellach, ADO dyna ni ar gyfer heddiw. Byddwn yn gweld chi yr wythnos nesaf. [CERDDORIAETH - Efeilliaid RAGGA, "MAN BAD"]