[Daqq tal-mużika] DAVID Malan: Kull dritt, dan huwa CS50. Dan huwa l-aħħar ta 'tmien ġimgħat. U llum, nibdew biex timla xi biċċiet meta niġu għall-bini affarijiet fuq il-web. Allura, ifakkar li nhar it-Tnejn nonfqu ħafna aktar ħin fuq PHP, li huwa dan dinamiku lingwa ta 'programmar li tikri us output, fost oħrajn affarijiet, HTML u kontenut ieħor bħal li aħna ser trid tara. Iżda aħna ma verament ħares lejn kif aħna qed tmur biex jaħżnu kwalunkwe informazzjoni. Tabilħaqq, kważi xi li l super websajts interessanti li żżur illum għandhom xi tip ta 'database fuq il-aħħar lura, id-dritt? Facebook ċertament taħżen lottijiet ta 'data dwar lkoll u mħażen Gmail kollha ta 'emails tiegħek. U għalhekk, bosta siti oħra mhumiex biss kontenut statiku li l informattivi. Huwa fil-fatt dinamika b'xi mod. Inti tipprovdi input, taġġorna il-paġni għal nies oħra. Ikollok messaġġi, inti tibgħat messaġġi, u oħrajn. Hekk illum, aħna qrib lejn l-irfid ta 'proġett li inti ser adsa fis jmiss ġimgħa, CS50 Finanzi, li huwa attwalment se jkollhom inti tibni xi ħaġa mhux C, iżda fil-PHP. A website li jistenna ftit xi ħaġa bħal din li jippermetti li jixtru u jbiegħu istokkijiet li huma attwalment ser timxi fuq ħin reali dejta ta 'stokk minn Yahoo Finanzi. U għalhekk finalment, inti ser ikollok l- illużjoni għalik innifsek u għall-utenti li int fil-fatt jixtru u jbiegħu ħażniet u jkollna ħin kważi reali aġġornamenti, ġestjoni ta ' portafoll, li kollha se jeħtieġu li, finalment, database ta 'utenti. Allura, fi kliem tiegħek, speċjalment jekk int ma super familjari mal-kompjuter xjenza jew databases, liema do you know database li tkun dritt issa, f'termini nontechnical? X'inhu dan? Kif tiddeskrivi lilha għal roommate jew xi ħabib? UDJENZA: [inaudible] informazzjoni [inaudible] DAVID Malan: Allura, lista ta 'informazzjoni, jew store-- lista ta 'informazzjoni li inti tista 'tixtieq li taħżen dwar xi ħaġa, bħal utent. U liema do utenti jkollhom assoċjati magħhom? Jekk int utent fuq Facebook jew Gmail, liema huma l-karatteristiċi li lkoll utenti jkollhom? Bħal, x'jista 'jkun xi wħud mill- kolonni fil-spreadsheet li aħna allużjoni aħħar darba? Minħabba darb'oħra, inti tista ' think ta 'database verament bħala fancy fajl Excel jew Google Spreadsheet jew Apple Numri fajl. Allura, x'taħseb ta meta taħseb ta 'utent? What do huma għandhom? Dak X'inhu? UDJENZA: A isem. DAVID Malan: A isem. Mela jekk isem, bħal, David Malan tkun l-isem ta 'xi utent. X'iktar ma l-utent għandhom? UDJENZA: An ID. DAVID Malan: An ID. Allura, bħal numru ta 'identifikazzjoni, bħal Harvard tiegħek ID jew Yale ID Net tiegħek jew bħalhom. X'iktar jista utent għandhom? UDJENZA: Password. DAVID Malan: A password, forsi indirizz, forsi numru tat-telefon, forsi email address. Allura, hemm għenieqed ta 'oqsma u dan tista tip ta 'spirali barra mill-kontroll malajr malli tibda twettiq, oh, ejja taħżen din u ejja jaħżnu dan u li. Imma kif nistgħu fil-fatt jagħmlu dan? Għalhekk għal darb'oħra, il-mudell mentali li jkollhom għal-lum kif aħna adsa fis SQL attwali, Strutturat Mistoqsija Lingwa, hija database li tidher bħal dan. Huwa biss ringieli u kolonni. U inti tista 'timmaġina Google ispreadsheets jew kwalunkwe numru ta 'programmi oħra. Imma x'hemm prinċipali dwar MySQL, li hija l- softwer tad-database aħna qed tmur għall-użu, l apertament liberament available-- użi Facebook u kull numru ta 'websites-- oħra database jaħżen affarijiet relationally. U database relazzjonali ifisser biss wieħed li litteralment imħażen tad-data tiegħu fir-ringieli u kolonni. Huwa sempliċi bħal dik. Għalhekk, anki xi ħaġa bħal Oracle li inti jista 'jkollok ġeneralment jinstemgħu ta' hija database relazzjonali. U taħtha il-barnuża, huwa jaħżen data fir-ringieli u kolonni. U Oracle tariffi inti ħafna flus biex jagħmlu dan, billi tariffi MySQL inti xejn għall-istess. Allura, SQL se tagħtina mill-anqas erba 'operazzjonijiet. Il-ħila li tagħżel data, bħal read data, daħħal, tħassar, u taġġorna data. Fi kliem ieħor, dawn huma verament l-erba 'operazzjonijiet ewlenin li ser inessu bidla Jittieħed f'dawk ringieli u kolonni. L-għodda li aħna ser tuża llum speċjalment biex jitgħallmu SQL u jilagħbu magħha terġa tissejjaħ MyAdmin PHP. Huwa web għodda bbażata. Koinċidenza Total li Huwa bil-miktub fil-PHP. Iżda li għaddej biex tagħtina grafika user interface sabiex inkunu nistgħu attwalment joħolqu dawn ringieli u kolonni u mbagħad tkellem lilhom permezz kodiċi. Allura, ejja issa tibda dak li naħseb huwa franchement tip tal-proċess gost ta ' bini tal-aħħar lura ta 'websajts, il-partijiet li l-utenti ma jagħmlux dan tara, iżda b'mod kostanti jagħmlu kura dwar, għaliex dan huwa pjuttost ta 'data għaddej. Allura, simili għal C u ftit inqas bħal PHP, SQL, jew database li jappoġġja SQL, għandha tipi tal-anqas din id-data u għenieqed ta 'oħrajn. CHAR, varchar, INT, BIGINT, Deċimali, u dateTime. U hemm ħaġa waħda mazz ta 'fatturi oħra, imma ejja tagħmel dan billi Bħala eżempju attwali. Jien se jmorru fil CS50 IDE fejn, bil-quddiem, stajt illoggjat u Stajt ukoll żar URL għall din l-għodda msejħa PHP MyAdmin. U fil-problema stabbiliti seba ', aħna ser jgħidlek inti eżattament kif tikseb din l-interfaċċa kif ukoll. Min-rokna ta 'fuq tax-xellug, Avviż jgħid lecture. U dan ifisser biss li bil-quddiem, I ħolqot database imsejħa lecture vojta li m'għandha l-ebda spreadsheets fil encore. M'hemm l-ebda ringieli u kolonni. Minħabba li l-ewwel Ħaġa aħna qed tmur biex tagħmel huwa tibda biex joħolqu tabella li għaddej biex jaħżnu utenti tagħna. Allura, litteralment fuq hawn lejn il-lemin, jien ser jgħidlek-database Irrid tabella msejħa Utenti. Allura, dan huwa bħall-fajl li I tixtieq li taħżen kollha ta 'data tiegħi fil. U kemm kolonni? Well, ejja jżommha sempliċi għal issa. I biss tixtieq li taħżen bħal username u l-isem għall-utent. Aħna ser tibda żgħar. So, I tixtieq żewġ kolonni totali. U jien ser jimxi 'l quddiem u kklikkja Go. U mbagħad, għal dawn kolonni, dak li jien ser biex do-- jekk dan internet cooperates-- id-dritt, hekk aħna qed tmur biex tipprova li għal darb'oħra. Jien ser tinħoloq tabella msejħa Utenti b'żewġ kolonni, ikklikkja Go, OK. Issa konna ltqajna verament mgħaġġel. Grazzi, tajjeb ħafna isir. Kull dritt, hekk dak li irridu dawn il-kolonni li għandu jissejjaħ? Għalhekk, wieħed għaddej biex jiġu msejħa Username. Allura, kollha nara here-- u l-interface franchement gets ftit ikrah eventwalment, ladarba tibda ittajpjar f'dan data kollha. Imma x'hemm sbieħ huwa li tip ta ' paradossalment, jien ħolqien kolonni, iżda l-għodda għandha foolishly stabbiliti minnhom fir-ringieli sabiex I tista 'tikkonfigura dawn il-kolonni. Allura, hemm żewġ blanks taħtu Isem. U waħda minn dawn l-oqsma I tixtieq li jissejjaħ Username, u l-qasam oħra nixtieq li sejħa Isem. U issa I għandhom jagħżlu tipi ta 'data għal dawn l-affarijiet. Allura, filwaqt li fl-Excel u Spreadsheets Google, jekk inti tixtieq kolonna, inti litteralment biss it-tip Isem jew Username, hit Ikteb. Forsi inti tagħmel dan wiċċ bold biss għaċ-ċarezza, iżda li dan. Inti ma jispeċifikawx il- tipi tal-kolonni. Issa fil Google Spreadsheets jew Excel, inti jista tispeċifika kif id-data hija mogħtija. Inti tista 'tmur għall-menu Format, u inti tista 'tispeċifika juru dan is-sinjal dollaru simili, juru dan bħal valur b'punt li jvarja. Għalhekk, huwa simili fl-ispirtu li li dak li aħna qed waslu biex jagħmlu, iżda dan huwa attwalment għaddejjin seħħ id-data li tkun ċertu tip. Issa, anki jekk mument ilu I qal hemm tipi ta 'data biss ftit, hemm attwalment lott kollu, u dawn qed fi gradi ta 'speċifiċità li jvarjaw. U bħala twarrib, inti tista 'anki tagħmel affarijiet fancy bħal ġeometriji ħażna ġewwa ta 'database. Inti jista 'jaħżen affarijiet bħal GPS koordinati u attwalment issib, matematikament, punti li huma qrib lill-oħrajn. Iżda aħna qed tmur biex iżommu din super sempliċi u jitla 'sa hawn, kollha l-hekk imsejħa tipi sekwenza. Allura, hawn lista ta ' mazz sħiħ ta 'għażliet. CHAR, varchar, TINYTEXT, MEDIUMTEXT, LONGTEXT. U huwa tip ta 'kbira. U sfortunatament, xi ftit paradossalment sa C, a CHAR mhuwiex verament CHAR. Jekk inti tispeċifika fid-database dak it-tip tad-data tiegħek huwa CHAR, dan ifisser li iva, huwa CHAR, imma hija Chars wieħed jew aktar. U għandek tispeċifika kif Chars ħafna inti tixtieq. Allura, x'hemm tipiku tul għal username? Hemm limitu tipikament? UDJENZA: [inaudible] DAVID Malan: 16 forsi? Xi haga hekk. You know, lura fil- jum, li jintuża biex tkun tmienja. Xi kultant huwa 16, kultant huwa saħansitra aktar minn dak. U għalhekk, dan ma ifisser jagħtu me CHAR wieħed. Dan ifisser I biss għandhom jispeċifikaw it-tul tal-qasam, u issa I jista 'jgħid xi ħaġa simili 16. U hemm kummerċ off hawn. Allura, aħna ser tara fil-mument li dan ifisser wieħed, kull username għandu jkun 16 karattru. Iżda stenna minuta, M-A-L-A-N. Jekk dan huwa username tiegħi u jien biss jużaw ħames, dak tipproponi li d-database tagħmel għall-11 karattri oħra li Stajt riżervati spazju għall? X'taghmel? UDJENZA: [inaudible] DAVID Malan: Yeah, just jagħmluhom kollha null. Jagħmluhom spazji. Iżda probabbilment null, so a ħafna żerijiet backslash. Għalhekk, fuq naħa waħda, konna issa għamel żgur li username tiegħi jistax ikun hemm aktar minn 16 karattru. U n-naħa flip ta 'dan huwa li jekk kelli isem verament twila jew riedu verament twila username bħal xi wħud minnkom guys jista 'jkollhom f'dik kulleġġ jew fil Yale.edu, ma jistax ikollok wieħed. U għalhekk fil-fatt, jekk inti stajt qatt irreġistrati għal websajt u ikollok għajjat ​​fil jgħidu password tiegħek twil wisq jew username tiegħek twil wisq, huwa sempliċement minħabba programmer, meta konfigurazzjoni database tiegħu jew tagħha, li ddeċieda f'dan il-qasam se ikun itwal minn dan it-tul. Dritt kollox, jekk iva, liema aħna tipproċedi biex insemmu? Kemm għandu jkun twil ta ' Isem tal-bniedem tipiku jkun? Kemm karattri, 16? Jien guessing nistgħu issib xi ħadd f'din il-kamra fejn mill-ewwel plus tiegħu jew tagħha aħħar isem huwa itwal minn 16 karattru. Allura, x'hemm aħjar minn dik, 17? 18? 25? Akbar? 30? UDJENZA: [inaudible] DAVID Malan: 5000, oh Alla tiegħi. Allura, li probabbilment deċenti ta 'fuq marbuta, nistgħu ngħidu. U hawn aħna tip ta 'jkollhom tagħmel sejħa sentenza. Bħal, hemm ebda tweġiba t-tajba hawn. Infinita ma tantx huwa possibbli, għaliex aħna qed eventwalment ser have-- aħna qed ser jispiċċaw ta 'memorja. Allura, aħna għandna biex jagħmlu sentenza sejħa f'xi punt. Komuni ħafna tkun, per eżempju, li use-- u let me tispeċifika CHAR hawn kif before-- 255 kien litteralment il- limitu massimu fuq dan is-software database snin ilu. U għalhekk, ħafna bnedmin se biss jgħidu, multa. 255 tal-limitu. Ejja biss jużaw il-massimu. U dan huwa pretty redikoli. Bħal, jekk int ittajpjar xi ħadd huwa isem għal 200 karattru plus, li ftit redikola. Iżda, ftakar li ASCII mhuwiex l-unika sistema għall-karattri. U għalhekk, speċjalment Ħafna lingwi Asjatiċi fejn hemm karattri ma nistgħux jesprimu fuq tastieri bħall-Istati Uniti tiegħi tastiera, xi karattri attwalment jieħdu 16 bits minflok tmienja bits. U għalhekk, dan fil-fatt mhux kollha li irraġonevoli li għandna bżonn aktar ispazju jekk irridu li tajbin karattri akbar mill-Istati Uniti ħafna dawk iċċentrati konna tendenza li jiddiskutu. Għalhekk, għandna bżonn xi rbit għoli. I do not know liema l-aħjar waħda hija, iżda 255 huwa ġeneralment wieħed komuni. 25 iħoss baxx. 16, 32 tħoss baxx. Nixtieq żball fuq in-naħa ta 'xi ħaġa ogħla. Iżda hemm kummerċ off, bħal dejjem. X'inhu l-, forsi, ovvju kummerċ off li jiġi rriżervat 255 Chars għall-isem ta 'kulħadd fid-database tiegħi? UDJENZA: [inaudible] DAVID Malan: X'hemm li? UDJENZA: [inaudible] DAVID Malan: Huwa lott ta 'memorja, right? M-A--L A-N. I għadek moħlija 250 karattri biss biex jaħżnu l-isem tiegħi defensively, biss fil-każ li xi ħadd fil-klassi għandha isem verament twila. Li tidher qisha tradeoff żejjed. Allura, jirriżulta li SQL, din il-lingwa database, fil-fatt jappoġġja xi ħaġa imsejħa varchar, jew varjabbli CHAR. U dan huwa tip ta 'sbieħ f'dak dan jippermettilek li tispeċifika mhux fiss wisa ', iżda, wisa varjabbli. U b'mod aktar speċifiku, ta ' wisa 'massima tal-qasam. Allura, dan ifisser li isem jista tkun aktar minn 250 karattru, imma tista 'ċertament tkun inqas. U d-database se tkun intelliġenti. Jekk inti tpoġġi fil M-A-L-A-N, huwa biss ser tuża ħames, forsi sitt bytes għall like karattru null batuta, u ma jonfqu addizzjonali 249 jew 250 bytes bla bżonn. Allura, din tidher qisha I għandhom bdew ma 'din l-istorja. Imma dejjem hemm tradeoff. Allura, min-naħa waħda, username stajt speċifikat li tkun jsibuha ikkodifikat f'livell 16, u forsi li ma kienx is-sejħa dritt, forsi huwa, iżda għaliex ma jużawx VARCHARs għal kollox? Jeżisti għal raġuni. Għaliex ma jużawx VARCHARs għal kull qasam li t-tul inti ma taf minn qabel jekk jidher li tkun ħaġa kbira, id-dritt? Uża biss kif spazju kemm għandek bżonn sa dan il-limitu? UDJENZA: anqas mgħaġġel. DAVID Malan: speller? UDJENZA: Jagħmilha aktar bil-mod? DAVID Malan: Oh, huwa kajman. Tajba, li kważi dejjem it-tweġiba, franchement. Bħal, x'inhu l-tradeoff? Hija la spejjeż aktar spazju jew li l-ispejjeż aktar ħin. Allura, f'dan il-każ, jista 'jkun aktar bil-mod. Għaliex? UDJENZA: [inaudible] determinazzjoni [inaudible]. DAVID Malan: Tajba. Allura, inti tista 'recall minn anki PSED5, playing mal-approċċ tiegħek għall-dizzjunarju, jekk għandek jalloka memorja dinamikament jew iżommu tkabbir ta 'buffer, li jista 'attwalment jiġi bil-mod. Jekk inti għandek sejħa malloc taħt il-barnuża u forsi dan huwa dak MySQL qed tagħmel, hekk żgur li jista 'jkun il-każ. U jekk taħseb mod lura għall PSet-- jew saħansitra ġimgħat żewġ, affarijiet meta għamilna bħall tfittxija binarju jew saħansitra tfittxija lineari, waħda mill-affarijiet sbieħ dwar kull kelma f'database jew kull kelma fil-kolonna jkunu eżattament l-istess tul, anke jekk mazz sħiħ ta 'dawk il-karattri huma vojta, hija li inti tista 'tuża aċċess bl-addoċċ fuq data tiegħek, id-dritt? Jekk inti taf li kull kelma hija 16 karattri bogħod, inti tista 'tuża aritmetika pointer, hekk li jitkellmu, u mur lilna 16, 32, 48, 64, u inti tista 'biss jaqbżu istantanjament billi jintuża aritmetika għal xi kliem fid-database tiegħek. Billi jekk huwa varchar, dak li inti minflok tagħmel? [PHONE Żarżir] Jekk huwa varchar, inti ma tistax tuża l-aċċess bl-addoċċ. Dak li għandek tfittex jew tagħmel? Yeah? UDJENZA: [inaudible] DAVID Malan: Ħares permezz tal-traċċa whole-- permezz tal-lista sħiħa infittxu dak li, x'aktarx? X'tip ta 'valur speċjali? UDJENZA: [inaudible] DAVID Malan: Ħarsa għall-Terminators nulla li jiddemarkaw s-separazzjoni ta 'kliem. Għalhekk għal darb'oħra, tradeoff, u hemm ebda tweġiba t-tajba. Iżda din hija fejn, speċjalment meta l-utenti tiegħek jiksbu jkunu differenti ħafna u t-tagħbija tiegħek fuq servers tiegħek, il- numru ta 'nies li jużaw jiġrilha għolja, dawn huma attwalment deċiżjonijiet nontrivial. Allura, nistgħu tħalli dawn għax, iżda ejja iscroll fuq il-lemin hawn. Issa, hemm koppja ta 'kolonni fejn irridu nkunu sejħa sentenza. Jagħmel sens li jippermettu s utent isem, username ta 'utent jew ta utent isem, li jkun null? Dan huwa, biss vojta. Iħoss ftit tagħmel sens, hekk jien mhux se jiċċekkja dawn il-kaxxi. Iżda jirriżulta fi database, inti tista 'tgħid, xi ħadd tista 'voluntarjament jkollhom dan il-valur. Din il-kolonna ma jkollux li attwalment ikun hemm. Issa, hemm dan drop down menu. U avviż jien xorta fl-ewwel filliera hemm, hekk jien jitkellem dwar username issa. U jirriżulta li database, b'differenza sempliċi spreadsheet sempliċi, għandu l-karatteristiċi qawwija msejħa indiċijiet. U indiċi huwa mod ta 'javżak l- database minn qabel li I l-bniedem am intelliġenti minn int. Naf liema tipi ta 'mistoqsijiet, tagħżel jew daħħal jew tħassar jew taġġorna, dan il-kodiċi tiegħi se jispiċċaw up tagħmel fuq id-database. Irrid li taqra ħafna ta 'data. Irrid li daħħal ħafna ta 'data. Irrid li kontinwament tħassar ħafna ta 'data. Jekk Naf li jien ser tkun aċċess qasam bħal Username ħafna, I tista 'tgħid l-preemptively database, I taf aktar milli suppost, u nixtieq li digriet li għandek indiċi f'dan il-qasam. Fejn indiċjar qasam jew kolonna ifisser li d-database bil-quddiem għandu jissellef xi ideat minn, bħal, ġimgħa erba 'u ħames u sitt persuni minn CS50 u fil-fatt jibnu xi ħaġa bħal tfittxija binarja siġra jew xi ħaġa ġeneralment imsejħa siġra B li inti titgħallem fil-CS124 bħal klassi fil-Harvard, klassi algoritmi, jew kwalunkwe numru ta 'postijiet oħra. Id-database u l-smart nies li implimentaw dan se figura kif taħżen dik it-tabella ta 'informazzjoni fil-memorja sabiex tfittxijiet u operazzjonijiet oħra huma super fast. Inti ma għandekx tagħmel dan. Inti ma għandekx biex jimplimentaw tfittxija lineari jew tfittxija binarja jew jingħaqdu sort jew selezzjoni sort, xi li. Id-database ma għalik jekk inti tgħid dan preemptively indiċi f'dan il-qasam. U tista 'tara wisq, hemm xi karatteristiċi oħra nistgħu tell-database li tinforza. Liema jista jfisser jekk I jagħżlu Unique minn dan il-menu, biss intuwittivament? Yeah? UDJENZA: [inaudible] DAVID Malan: Yeah, il- username għandu jkun uniku. Huwa dan ħaġa tajba jew ħaġa ħażina għal database, għal websajt ma 'utenti? Jekk usernames jkun uniku? Yeah, probabbilment. Jekk dan huwa dak li l- qasam nużaw biex login, inti ma verament irridu li persuni li jkollhom l-istess jħossu jew l-istess username. Allura, jista 'jkollna l- database jinfurzaw dik hekk li issa fil-kodiċi PHP tiegħi jew kwalunkwe lingwa, I ma jkollhom, per eżempju, check neċessarjament ma dan username jeżistu qabel I let reġistru xi ħadd? Id-database mhux se let żewġ persuni msemmija David jew Malans jirreġistraw f'dan il-każ. U bħala twarrib, anke jekk din menu biss ihallik tagħżel waħda, indiċi uniku huwa wieħed li l- indiċjati għall-prestazzjoni super fast, iżda jinforza wkoll uniċità. U aħna ser terga 'lura għal dak l- oħra żewġ jfissru fi ftit mument. Sadanittant, jekk immur tieni ringiela tiegħi, li huwa l-isem tal-utent, għandi jispeċifika li l-isem għandu jkun uniku? Le, għaliex inti tista 'ċertament have-- hemm l-ebda tnejn David Malans f'din il-kamra, l-aktar probabbli. Imma jekk nagħżlu isem differenti, nistgħu ċertament, ħabtiet. Think lura hash tabelli u simili. Allura, aħna żgur ma jridux li jagħmlu l-qasam isem uniku. Allura, aħna qed biss ser jitilqu li bħala sing, sing, sing, xejn. U jien ser jitilqu kull ħaġa oħra biss. Tabilħaqq, ħafna minn dawn l-oqsma aħna mhux se jkollhom kura dwar. U meta jien lest biex jiffrankaw din, jekk l-internet tikkoopera, I ikklikkja Save, u ħafna, ħafna, ħafna bil-mod ma 'l-database nikseb ffrankati. U issa jien lura għal dan interface, li ċertament, huwa enormi fl-ewwel daqqa t'għajn. Imma kollha jien ser tagħmel hu li ikklikkja fuq l-utenti verbali in quċċata xellug. Jien ser jitla 'hawn, ikklikkja Utenti, u fil-kontumaċja, huwa tkun wettqet xi SQL, iżda aktar fuq li fil-mument. Hawn biss sommarju ta 'dak li għamilt. U ma joqogħdu jinkwetaw li inti tara isemmu ta Latin u Svediża hawn. Dawk huma biss l-default settings, minħabba MySQL oriġinarjament, jew PHP MyAdmin, wieħed miż-żewġ ġara li tkun miktuba minn xi persuni Svediż. Imma hija irrilevanti fil-każ tagħna hawn. Kull dritt, hekk għaliex huwa dan kollu interessanti? Jirriżulta, I tista 'daħħal data fi database billi tikteb kodiċi. U jien jimxi 'l quddiem u fil-fajl tiegħi hawn, jien se jimxi 'l quddiem u nippretendu simili dan huwa fili għall dik id-database, li mhuwiex fil-mument, iżda se jkun meta nikbru għall-problema stabbiliti sebgħa. U jien ser jimxi 'l quddiem u tesegwixxi funzjoni msejħa mistoqsija, li naghtuk fil-problema sett seba s kodiċi distribuzzjoni, li jieħu argument l-anqas waħda, li huwa biss sekwenza. A sensiela ta 'kodiċi SQL. Allura, int ser jitgħallmu kif jiktbu Strutturat Mistoqsija Lingwa. Jekk irrid li tiddaħħal ringiela ġdida fis tiegħi database minħabba xi ħadd ikun issottometta formola għall-kodiċi tiegħi, nixtieq litteralment jiktbu DAĦĦAL FIS-utenti li ġej oqsma: username, comma, isem, l-VALURI, u issa għandi bżonn biex tiddaħħal xi ħaġa bħall Malan, u kwotazzjoni, "David Malan." unquote U issa anki għal dawk familjari ma 'SQL, għaliex jien jużaw kwotazzjonijiet uniku ġewwa ta 'din is-sekwenza aħdar? Liema jista 'jkun ir-raġuni hawn? Avviż Jien ko-mingling żewġ lingwi. Mistoqsija hija funzjoni PHP, iżda tieħu argument. U dan l-argument għandu innifsu jkun miktub f'lingwa oħra msejħa SQL, Strutturat Mistoqsija Lingwa. Allura, dak kollu li I għadek enfasizzat hawn hija din il-lingwa imsejħa SQL. Allura, x'hemm mal-kwotazzjonijiet uniku, biss bħala kontroll sanità malajr? Jimxi 'l quddiem. Huma qed kordi. Allura, kwotazzjoni, Malan unquote u kwotazzjoni, unquote David Malan huma kordi. U biss ħsieb intuwittivament issa, jafu dak li taf dwar C u PHP, għaliex ma I ma tagħmel dan, li normalment I kwotazzjonijiet doppja użati għall-kordi? Għaliex ma I ma trid tagħmel dan? Yeah? UDJENZA: [inaudible] DAVID Malan: Eżattament. Għaliex jien diġà jużaw kwotazzjonijiet doppja fuq il-mod barra tal-argument għall-funzjoni PHP, Nixtieq biss jikkonfondi l-interpretu. Dan mhux se tkun taf, ma dawn imorru flimkien? Do dawn imorru flimkien? Do dawn imorru flimkien? So, I talterna minflok. Jew I jistgħu jagħmlu xi ħaġa bħal din, kwotazzjoni backslash jew kwotazzjoni backslash. Franchement, li biss jibda jiksbu ħafna ma jistgħux jinqraw u ikrah. Iżda dan kieku jinkiseb l-istess riżultat ukoll. Għalhekk, jekk I kellhom tesegwixxi dan query issa, ejja ara dak li jiġri. Jien ser jimxi 'l quddiem issa u aktar minn tesegwixxi l-kodiċi PHP, li huwa fejn inti ser tilgħab fl problema sett sebgħa, Jien ser minflok tmur għall MyAdmin PHP. U jien ser manwalment biex tmur fil-tab SQL, u let me zoom fl fuq l-interface. U jien ser paste fil il-ħaġa I biss ittajpjat. U l-kodifikazzjoni kulur għandu nbidlu ftit issa, biss minħabba l-formati tal-programm affarijiet ftit differenti. Iżda avviż li kollha I ghamilt huwa Stajt qal, daħħal fis Utenti. Stajt speċifikat, imbagħad, fil virgola lista parenthesized separati ż-żewġ oqsma li nixtieq li daħħal, u imbagħad stajt litteralment qal valuri segwit minn paren ieħor, U allura l-żewġ valuri Irrid li plug-in, u issa għal miżura tajba, I ser jitqiegħdu b'semicolon fl-aħħar. Allura, dan mhux C. Dan mhux PHP. Dan issa huwa SQL, u jien pasta fis din il-web interface bbażati thats biss ser let me, malli I ikklikkja Go, teżegwixxi din il-mistoqsija dwar id-database tmexxija ġewwa tal IDE CS50. Allura dan huwa tajjeb. Avviż li qal ringiela waħda jiddaħħal, marru super fast, 0.0054 sekondi biex jiddaħħal li data. Allura, li l-ħsejjes pretty b'saħħithom. Hija ifformattja mistoqsija tiegħi għalija hawn biss biex tara li fil-tip ta 'kulur kodifikati verżjoni. Imma issa jekk I ikklikkja Browse, avviż li, anki għalkemm hemm ħafna ta 'imbarazz fuq l-iskrin, il-mejda tiegħi issa għandha żewġ ringieli. Allura, let me imorru quddiem u jagħmlu ieħor. Minflok dan, let me mur l-tab SQL darb'oħra. U din id-darba jien ser daħħal xi ħaġa simili Rob u ismu se jkun Rob Bowden. Bowden. Ejja ikklikkja Save. Oops, pjuttost Go. Ikklikkja Browse darb'oħra, u issa Avviż Għandi żewġ ringieli. Allura, dan huwa biss kumpless b'mod aktar mod ta 'ftuħ Google ispreadsheets u biss ittajpjar filliera fi kolonna. Imma x'hemm importanti hu li issa għandna l-sintassi li biex jikteb il-kodiċi sabiex finalment, nistgħu attwalment jagħmlu xi u dan. Ifakkar li jappoġġja PHP varjabbli super globali. Dak li hu ġewwa ta 'dollaru sinjal jenfasizzaw IKOLLOK fil-PHP? Aħna ħa ħarsa lejn wieħed jew żewġ eżempji sempliċi. U fl PSet6, recall għandek bonjour dot PHP li juża din il-varjabbli. X'inhu jiġri fil hemmhekk? Jew x'inhu? A louder ftit. UDJENZA: [inaudible] DAVID Malan: Huwa borra żerriegħa tal array, li huwa biss mod fancy ta 'tgħid xi firxa li għandha pari b'valur ewlenin. U ċ-ċwievet mhumiex numerika. Huma qed kliem jew kordi. U speċifikament, liema huma dawk pari b'valur ewlenin? Fejn huma ġejjin minn? Jiddispjacini? UDJENZA: [inaudible] DAVID Malan: Nru? Fejn do dawk ewlenin pari b'valur jiġu minn? Say mill-ġdid? Għal darb'oħra? Am I-unika ħaġa f'seduta waħda? [Rires] Dak id-dritt, iva? UDJENZA: [inaudible] DAVID Malan: Yeah, huma ġejjin mill-sekwenza mistoqsija. Għalhekk, jekk inti kontrina fil-ħin biex meta konna lagħbu Google u konna marret għal mmejla Google.com tfittxija trade mark in kwistjoni q ugwali qtates, jekk I kellhom hit Ikteb u jekk Google ġew implimentati fil-PHP, Kodiċi PHP li Google kiteb jkollhom aċċess għal sinjal dollaru jenfasizzaw tikseb ġewwa minnhom hija essenzjali tissejjaħ Q u valur imsejħa qtates li jistgħu mbagħad jużaw użati biex jagħmlu tfittxija attwali mal. Allura, fil-fatt, dak li jien ser tagħmel issa hu li jmur lura għall-kodiċi PHP tiegħi li inti ser terġa tara aktar ta 'fil PSet7. U minflok ta 'fejn jitwaħħal fil-valuri kodifikati iebes li ma jidhru simili ħafna website dinamiku, Jien ser jagħtuk teaser ta liema kodiċi attwali tiegħek ser jagħmlu. Inti tpoġġi f'żewġ kwistjoni marki bħal dan. I do not know dak l-username hu. I do not know dak l- isem se tkun, imma I do know I tista ' tikseb minnhom dinamiku. Għalhekk, jekk il-kodiċi aħna qed miktub issa huwa il-kodiċi taħdem fuq servers Google, jew jekk dan huwa bonjour dot PHP, li tiġi ma PSet6, Jien ser jgħaddu fil il-funzjoni mistoqsija bħad printf, żewġ argumenti oħra. IKOLLOK, kwotazzjoni, username unquote, u IKOLLOK, kwotazzjoni, l-isem unquote. U issa, avviż dak il istruttura ġenerali huwa hawnhekk. Stajt qbilna fuq ix-xellug naħa tas-sejħa, din il-funzjoni tissejjaħ mistoqsija fil-PHP. I għad għandhom bħala l-ewwel argument, biss sensiela ta 'test. Iżda dan sekwenza tat-test huwa miktub fl-lingwa imsejjaħ SQL. U franchement, mhuwiex lingwa big. Aħna biss ser jitkellmu dwar formalment illum, tassew. U mbagħad fl problema stabbiliti seba ', hemm relattivament ftit karatteristiċi li aħna qed se lieva. Il trade marks in kwistjoni, għalkemm, tfisser plagg fil valur hawn u plug fil-valur ieħor hawn. U avviż, stajt naqset dak minn madwar id-kkritikat quote-- it-- madwar il-kwotazzjoni jimmarka din id-darba. Stajt titħalla barra l-kwotazzjoni marki madwar id-trade mark in kwistjoni, sorry, din id-darba. Allura, x'hemm sbieħ dwar dan marka kwistjoni karatteristika li PHP tendenza li jappoġġjaw, Ruby u Python u lingwi oħra, dan ifisser biss plug f'xi valur hawn u inti taf liema? Inti figura jekk l-użu kwotazzjonijiet uniku jew kwotazzjonijiet doppja. Ma jolqot lili ma 'dawk Dettalji intellettwalment uninteresting. Iżda, kun ċert li huwa korrett sabiex kodiċi tiegħi huwa finalment operattiv u sigur, li se jkollu tifsira qabel fit-tul. Issa, kemm argumenti totali, just biex ikunu ċari, huwa t-teħid funzjoni query? Kull min jixtiequ li jivvutaw għal aktar minn tnejn? Tliet? Sure, għaliex? Għaliex tliet? UDJENZA: [inaudible] DAVID Malan: Eżattament. L-ewwel parti hija l-sekwenza. It-tieni argument huwa sinjal dollaru jenfasizzaw IKOLLOK username parentesi. U t-tielet argument huwa l- istess ħaġa, iżda biss l-isem. Allura fi kliem ieħor, issa jekk I kellhom formola tal-web li kellhom oqsma test, waħda għall username-utent, wieħed għal tiegħu jew l-isem tagħha, just bħal inti tara fil-website meta inti tirreġistra għal xi websajt, dan jista ' jkun il-kodiċi fuq il-aħħar lura li attwalment ma l-inserzjoni issa fid-database. Issa għall-kuntrarju, ejja fast quddiem. Ejja ngħidu utent issa huwa qtugħ fi u inti tixtieq li jikteb il-kodiċi PHP li l-kontrolli jekk il-persuna li jinsab biss illoggjat huwa attwalment utent, inti tista ' jużaw sintassi pretty sempliċi. Tista 'tgħid TAGĦŻEL, ejja ngħidu star, fejn star tfisser dak kollu. I do not know dak I trid, hekk biss jagħtu me l-kolonni mit-tabella imsejħa utenti meta, u dan huwa sbieħ. Agħżel jappoġġja x'hemm imsejħa relattivi, li hija bħal mod ta 'kwalifikazzjoni dak li trid. Fejn username ugwali kwotazzjoni, unquote Malan. Allura hawnhekk ukoll, stajt inkorporati ġewwa l-argument għal funzjoni PHP, linja ta 'kodiċi SQL. U dak il-kodiċi SQL dan ħin huwa litteralment tmur ta 'tiftix għal kwotazzjoni, unquote Malan. Issa dak li mhux kollha li utli, hekk jien ser skip li u jien ser poġġejt dan il-ponta minn Brady, u jmorru u plug-in minflok kwistjoni mark hawn. Għalhekk, biss li jkun ċar, liema għandhom jissekondaw argument tiegħi jiġu jekk xi ħadd għadu kif illoggjat u I jridu jiċċekkjaw jekk hu jew hi attwalment utent? UDJENZA: [inaudible] DAVID Malan: Yeah. Nisma dollaru jenfasizzaw sinjal IKOLLOK kwotazzjoni, username unquote. U li għandhom jirritornaw lill me kwalunkwe mill-ringieli fid-database tiegħi li jkollhom username ta Malan. Issa nisperaw, jien ser terġa 'lura żero jekk l Malan qatt kien hawn, jew wieħed jekk ikollu. I ma għandhom jingħataw lura tnejn jew tlieta jew erba '. Għaliex? UDJENZA: [inaudible] DAVID Malan: I said uniku, id-dritt? Sempliċi raġuni. Minħabba I qal li ltqajna biex tkun unika, biss loġikament, inti tista 'biss ikollha żero jew wieħed Malans f'din it-tabella database partikolari. Issa bħala twarrib, biss sabiex inti stajt tidher dan, anki jekk I iżommu jużaw IKOLLOK u anki jekk PSet6 jintuża biss IKOLLOK, inti tista 'ċertament POST. U tfakkar li hija ieħor Post teknika għall-preżentazzjoni ta 'informazzjoni minn forma, iżda ma juru up fil-URL. Huwa ftit aktar sigur ċertament għal affarijiet simili usernames u passwords, li PSet7 se, fil-fatt, jinvolvu. Allura, ejja tagħmel dan fil-PHP MyAdmin u tara x'jiġri. Jien se jmorru biex tab MySQL. U tinnota li l-valur awtomatiku għall PHP MyAdmin, just biex jipprova jkun utli, huwa li tagħżel star minn utenti fejn ikunu. Ukoll, wieħed huwa dejjem veru, hekk dan għandu l-iblah effettiv ta 'ftit tagħżel kollox. Imma jien ser tkun ftit aktar pedantic u manwalment tip out star jintgħażlu minn utenti. Issa teknikament, inti tista ' nikkwota l-isem tat-tabelli. Huwa rari li inti għandek, iżda tinnota dawn mhumiex kwotazzjonijiet normali tiegħek fuq it-tastiera Istati Uniti. Dan huwa l-hekk imsejħa backtick, li hija ġeneralment fuq il-naħa tax-xellug kantuniera ta 'tastiera tiegħek. Iżda huwa rari li tkun taf fil-fatt bżonn li jolqot ma 'dan, so I taf biss jħalli barra minnhom xorta waħda. Allura issa, let me imorru quddiem u hit tmur. U kemm ringieli għandi nikseb lura meta I jagħżlu star minn utenti? UDJENZA: [inaudible] DAVID Malan: In-numru ta 'ringieli, żgur. Imma kemm f'dan istorja konkreti dritt issa? Tnejn, minħabba li kien hemm lili u kien hemm Rob. Għalhekk, jekk I ikklikkja Go, nara viżwalment li Stajt gotten lura, tabilħaqq, żewġ ringieli. Hemm ħafna ta 'imbarazz fuq il- screen, imma jien biss tara żewġ ringieli. B'kuntrast, jekk nagħmel dan mill-ġdid u tagħmel Star TAGĦŻEL MINN utenti, fejn username ugwali kwotazzjoni, unquote Malan, issa jekk I ikklikkja Go, Jien biss se terġa 'lura ringiela waħda. U fl-aħħar, jekk I do xi ħaġa bħal din, ejja ngħidu li jien ma care about jkollna kollox, li huwa tip ta 'bla sens issa, għaliex hemm biss żewġ kolonni. Mhuwiex simili jien għażla ammont kbir ta 'data. Ejja ngħidu I jimxi 'l quddiem u do TAGĦŻEL isem MILL utenti, fejn username jiġi daqs Malan, x'hemm sbieħ dwar SQL onestament, hija li verament ftit ma dak li inti tgħid li tagħmel. Huwa pretty konċiża, iżda inti litteralment biss għid dak li inti trid tagħmel. Isem Agħżel minn utenti fejn ikun il username ugwali Malan. U huwa verament huwa li espliċita. Allura, issa jekk I hit Go, kemm ringieli am I se terġa 'lura? Waħda, għaliex huwa biss Malan, nisperaw. Jew zero jekk huwa ma hemm, iżda wieħed maximally. U kemm kolonni se niġi lura? Kif kolonni ħafna? Din id-darba, jien biss ser li tikseb wieħed minħabba I ma tagħżel stilla, li huwa kollox. Issa jien għażla biss isem, so I biss jiksbu lura kolonna waħda u ringiela waħda. U jidher tip ta 'xieraq redikoli, biss tħares super żgħar bħal dan. Allura, dak li verament jiġri? Meta inti teżegwixxi SQL query użu tagħżel, dak li qed jkollna lura mid-database huwa bħal tabella temporanju ma ringieli u kolonni, forsi, iżda li jħalli barra xejn li ma kienux attwalment magħżula minnek. Allura, huwa simili jekk xi ħadd kellu big spreadsheet mill-istudenti kollha irreġistrata għal xi grupp student, u inti tgħidli, jagħtu me kollha tal-freshman li ħadthom irreġistrata għall-grupp student tagħna, dak kollega tiegħek fil- grupp student tista 'tagħmel huwa dawn jistgħu sempliċement naħa inti l-spreadsheet kollu. C'est simili qal star tagħżel. U huwa ftit annoying jekk inti biss riedu l freshman. U hekk, jekk inti minflok qal, star tagħżel minn tabella database fejn sena ugwali kwotazzjoni, freshman unquote, huwa bħallikieku ħabib tiegħek fil-grupp istudent litteralment enfasizzat u kkupjati biss il-fillieri Freshman, pasted tagħhom fiċ-Google ġdida Spreadsheet jew fajl Excel, u mogħtija inti lura l- fajl jirriżulta biss. Li kollox li għaddej fuq kunċettwalment hawn. Għalhekk fl-aħħar, nistgħu nagħmlu xi affarijiet pretty fancy billi jaħżnu affarijiet simili usernames u passwords u simili. Iżda, jirriżulta, għandna nagħmlu ftit differenti minn dan. Dan m'huwiex smart biss jaħżnu username u password. Xi ħadd qabel, naħseb stabbiliti hawn, ssuġġeriet ID. Issa ID tista 'tkun bħal Harvard ID jew ID Net Yale, il iżda tista 'tkun saħansitra aktar sempliċi fil-każ database tagħna. U fil-fatt, il-każ komuni huwa li jkun kolonna ieħor. U jien se jmorru quddiem u jeditjaw mejda tiegħi. U jekk inti play madwar dan interface għall PSet7, tkun taf tara li inti tista 'tivverifika din il-buttuna hawn u żid qasam fil-bidu tat-tabella. U issa jekk I ikklikkja Go, li għaddej li tagħti me wieħed minn dawk forom minn qabel. Jien ser iżid qasam imsejjaħ ID. U jien ser jagħmilha tip numerika. I jkollhom mazz sħiħ ta 'valuri għal numerics. Jien biss ser jagħżlu INT u Ma joqogħdu jinkwetaw dwar l-daqsijiet differenti. I ma jkollhom jispeċifika tul jew valur, minħabba li għaddej biex tkun 32 bits x'ikun. Attributi, aħna ma tara qabel. Xi interess fi kwalunkwe minn dawn għażliet menu din id-darba? Għal INT? What did you tipproponi? Nru? Do xi wieħed minn dawn jagħmlu sens? Yeah. Yeah, mhux iffirmat, id-dritt? Ġeneralment, jekk aħna qed tmur biex jagħtu kulħadd numru uniku, li huwa fejn din l-istorja hija tmur, I verament irridu biss persuna li jkollha n-numru simili żero u wieħed u tnejn u tlieta u erbgħa. I m'għandhomx bżonn li jittrattaw bin-numri negattivi. Hija biss tidher bħal kumplessità bla bżonn. Irrid erba biljun valuri possibbli, mhux erba 'biljun valuri possibbli, so I biss irdoppja l kapaċità tal INT tiegħi. Bħala twarrib, jekk inti tixtieq li jirrelataw dan għal xi ħaġa bħal Facebook, lura fil-tip ta 'ġurnata tiegħi meta Facebook ewwel daħal out, Nemmen dak li kienu użu fl MySQL database tagħhom biex jaħżnu s utent identifikatur, kien biss ta 'INT. Iżda naturalment, hemm ħafna ta 'persuni reali fid-dinja. Hemm ħafna ta 'foloz Facebook kontijiet fid-dinja. U għalhekk eventwalment, Facebook fawrien id-daqs ta 'INT, a erba' biljun valur. Liema hu għaliex, jekk inti tħares madwar u hemm websajts li jista 'jgħidlek liema ID unika tiegħek. U jekk int qatt għażlet username fi Facebook, tkun taf tara ID unika tiegħek. Naħseb li huwa profil dot PHP trade mark in kwistjoni ID ugwali xi ħaġa. Li issa huwa xi ħaġa bħal big INT, jew twil twil jekk inti se, li hija valur 64-bit jew xi ħaġa simili. Għalhekk, anki fid-dinja reali tagħmel dawn kwistjonijiet finalment kultant jimpurtax. U jirriżulta li hawnhekk, jekk jien tagħti kollha ta 'utenti tiegħi ID unika, Nixtieq inkun super espliċita u minimament jagħmlu dan il-qasam uniku. Iżda jirriżulta hemm wieħed biċċa nomenklatura illum wisq li l-kodiċi primarju. Jekk int tfassil ta 'database mejda u inti taf minn qabel li waħda mill-kolonni dik it-tabella għandhom u se jidentifika unikament ringieli fit-tabella, inti tixtieq li jispeċifika dan u tell-database, dan huwa kodiċi primarju tiegħi. Jista 'jkun hemm duplikati f'oqsma oħra, imma jien javżak-database li din huwa primarja tiegħi, iktar settur importanti tiegħi, li garantit li jkun uniku. Issa, dan jidher superfluwu. I am issa tipproponi li aħna żid, billi tikklikkja Save hawn, a called-- qasam u jien ser li jimxi 'l quddiem u kklikkja AI, aħna ser terga 'lura għal li fil-mument, Save. Qed nipproponi issa li tabella tiegħi look like dan. I jkollhom kamp INT imsejħa ID, qasam CHAR imsejjaħ Username, qasam varchar imsejjaħ Isem, iżda ID, jekk huwa primarja u għalhekk uniku, għaliex ma I biss skart ħin jiġi introdott dak effettivament hija t-tieni unika qasam imsejħa ID thats INT? Username, irtirar, kien diġà unika, għidna. Hekk biss loġikament, inti m'għandekx bżonn kwalunkwe esperjenza database biex raġuni permezz ta 'dan, għaliex jista I introduċew l INT kif identifikatur uniku tiegħi ukoll? X'hemm this-- ngħid mill-ġdid? UDJENZA: [inaudible] DAVID Malan: Random aċċess huwa aktar faċli, għaliex? UDJENZA: [inaudible] DAVID Malan: Yeah, huwa biss aċċess numri. Għalhekk, jekk inti taħseb ta 'dan verament huwa tabella, bħal firxa, issa għandi identifikaturi uniċi li I tista 'tiżdied madwar. U aħjar minn dak xorta hija li kemm hu kbir huwa l INT se tkun mill-ġdid? 32 bits jew erba 'bytes. Kemm hi kbira l username tiegħi se tkun? Maximally? 16 bytes. Allura, jekk int verament ħsieb dwar il-prestazzjoni tal-kodiċi tiegħek, think lura għall PSet5, kieku inti tippreferi ta 'tiftix għal valur erba byte jew 16 valur byte, id-dritt? Huwa verament huwa sempliċi bħal dik. Inti għandek tagħmel erba 'darbiet aktar xogħol ta 'tiftix għal usernames għaliex dawk huma 16 bytes. Allura, inti għandek litteralment iqabblu 16 bytes kollha li jkunu żgur iva, dan huwa username irrid. Billi għal INT, inti tista jagħmlu dan bil biss erba 'bytes. U bħala twarrib għal dawk interessati fil-hardware tal-kompjuter, jirriżulta inti tista tajbin xi ħaġa bħal l INT jew valur 32-bit fil xi ħaġa imsejħa reġistru fil-kompjuter CPU, li jfisser li huwa super, super fast, anke fl-inqas livell ta 'hardware tal-kompjuter. Allura, hemm biss vantaġġi kollha madwar. Allura, dak li jfisser dan? Fil-fatt, meta int tfassil ta ' tabella database, kważi kollha tal-ħin inti se jkollhom mhux biss l-informazzjoni li inti care about, iżda wkoll xi ħaġa bħal identifikatur uniku għaliex dan se ejjew jagħmlu affarijiet oħra. U ejja vjaġġ fuq problema waħda hawn. Ejja ngħidu li l-utenti ma jkunux biss usernames u ismijiet, imma għandhom ukoll affarijiet simili ibliet u l-istati u l-kodiċi zip, għall-inqas hawn fl-Istati Uniti. Allura, jien ser jimxi 'l quddiem u biss malajr jgħidu, tagħti me tliet kolonni aktar fl-aħħar tat-tabella. U dan se jkun City, dan se jkun l-Istat, u dan se tkun Zip. Issa tipi City, liema data jekk dan ikun, forsi? Varchar? I do not know dak l- itwal belt isem huwa. X'imkien fl-Amerika, hemm probabbilment xi kelma ridiculously twal, so ejja biss jmorru ma '255, kemmxejn storikament jew b'mod arbitrarju. Stat, dak li inti trid tagħmel? Sejħa is-sentenza, id-dritt? X'hemm forsi l-aktar effiċjenti? Kif karattri ħafna? Forsi biss tnejn, jekk nistgħu jitbiegħed ma tagħmel biss, bħal, MA għall Massachusetts u oħrajn. Allura, jien ser imorru valur CHAR ta 'tnejn. Kodiċi zip huwa wieħed interessanti. Aħna hawn fil 02,138, sabiex jissuġġerixxi għandna nużaw dak? Huwa ta 'INT, id-dritt? INT, INT, qasir? Short tkun taħdem. Nru? CHAR jew ħames, imma nixtieq li INT. Għaliex timbotta lura fuq INT? Tipperswadi lili minn dan. X'hemm stupid madwar INT, idea tiegħi? Yeah. UDJENZA: Ħu l-memorja aktar. DAVID Malan: Ħu l-memorja aktar. Erba bytes, imma int tipproponi zip code bħala ħames bytes jew xi ħadd kien bħala CHAR, li jħoss simili eh, li mhux verament il-każ. Ukoll, storja divertenti. Snin ilu, meta I użati biex jużaw Microsoft Outlook għall-email tiegħi, I eventwalment ridt li jaqilbu għal Gmail. U hekk, I esportati kollha tiegħi kuntatti mill-Outlook bħala fajl CSV. Comma separati valuri, li ftit fisser I kellu l-ismijiet ħbieb tiegħi u l-aħħar ismijiet u numri tat-telefon u l-kodiċi zip u kollha ta 'dak. U mbagħad I magħmula l- żball tal-ftuħ it up fl-Excel, li hija programm spreadsheet li jifhem CSV fajls kif aħna stajt tidher. Imma mbagħad, I għandu jkollhom hit, bħal, Kmand jew Control S fuq punt wieħed. U Excel apparentement fiż-żmien kellhom karatteristika li biha kwalunkwe ħin li raw numru, ippruvaw jkun utli. U jekk dak in-numru beda bil żerijiet, ikun biss jeħles minnhom. Għaliex għandek bżonn ewlieni żerijiet fuq interi? Huma qed sens, matematikament. Dawn mhux qed bla sens fis-sistema US Postali. So, I kellna għas-snin, din il-ġurnata, I still ħbieb li meta l- każ rari li I bżonn xi ħadd huwa tindirizza dawn il-ġranet, I xorta ser tara li I xi ħabib fil-Cambridge, Massachusetts, 2138. U huwa annoying jekk int jippruvaw biex issolvi tal programmatically jiġġeneraw pakketti jew eżatt LOGHOME-isfel. U dan għaliex din ir-raġuni, I għażlet dejta tat-tip żbaljata. So, I imħabba l-idea tiegħek. Ejja jużaw qasam CHAR. Ħames karattri, ħlief hemm każ kantuniera. Jekk inti xorta tibgħat posta, kultant zip kodiċijiet dawn il-ġranet, dawn qed, bħal, flimkien ma 'erba. Għalhekk, għandna bżonn sing u mbagħad għandna bżonn erba 'numri aktar. Allura biex ikunu onesti, din tista mur f'ħafna modi differenti. Għal issa, jien ser iżommu sempliċi u jien biss se ngħid li din hija ħamsa valur CHAR u aħna ser skip il-sing kollu plus erbgħa. Iżda dawn huma t-tipi ta 'kompromessi. U inti tista 'taħseb l- problemi li jinqalgħu istess bin-numri tat-telefon jew oqsma oħra. U issa, dan huwa attwalment triq foolish li jinżlu. Ejja ngħidu kemm Rob u I u Hannah u Maria u [? Davon?] U Andy u oħrajn fuq il-persunal kollu jgħixu fil Cambridge, Massachusetts, 02138. Dan attwalment iħossu stupid li jien li jżid mal-mejda utenti tiegħi, belt, statali, u ZIP. Għaliex? UDJENZA: [inaudible] DAVID Malan: Say mill-ġdid? UDJENZA: [inaudible] DAVID Malan: Huma qed dejjem se jmorru flimkien, id-dritt? Meta jirriżulta, aħna użati biex jaħsbu dan kien il-każ sakemm aħna eżawrjenti mfittxija l-Istati Uniti kollu, u jirriżulta li hemmhekk huma xi inkonsistenzi fejn bliet multipli jkollhom l-istess zip, li huwa stramb. Iżda, jekk irridu jistipulaw għal issa dak 02138 huwa dejjem Cambridge, Massachusetts, għaliex fid-dinja kieku inti jaħżen fil database tiegħek Cambridge u MA u 02138 għalija u għal Hannah u għal Rob u għall [? Davon?] U għal oħrajn li jgħixu hawn fil Cambridge, huwa perfettament żejda. Għandna jitbiegħed mal biss ħażna liema? Biss il-kodiċi zip. Iżda mbagħad, jekk aħna maħżen biss il- zip code, I do jridu, probabbilment, għall-website tiegħi li tkun taf fejn 02138 hu. So, I bżonn ieħor tabella. U li OK. U fil-fatt, dan huwa wieħed mill- proċessi ta 'disinn ta' tfassil tabelli li inti ser tagħmel fil PSet7 kif ukoll permezz tagħha inti tixtieq li fattur out data komuni. Eżatt bħal aħna kont qed factoring out kodiċi u l-fattorar out komuni komuni stili minn CSS, hawn wisq fid-database, jekk għandi bżonn 02138 biss biex unikament jidentifikaw Hometown xi ħadd, taħżinx Cambridge, Quddiesa għall kull utent darn fit-tabella tiegħek. Minflok, jkollhom tabella separata msejħa Żippijiet li għandu jkollu dak kolonni? Probabbilment qasam ID, sempliċement minħabba, per il-prinċipji aħna qed jitkellem dwar issa. Probabbilment qasam code għall 02138. U allura probabbilment dak kolonni oħra? Belt u stat, iżda biss għandek wieħed ringiela għal 02138, ringiela waħda għal 02139, ringiela waħda għal 90,210. U li huwa litteralment il-kodiċijiet kollha zip naf. Allura issa, dak li tista 'taghmel? Dan huwa fatt problematiku, minħabba issa stajt ltqajna żewġ tabelli. Allura, l-utenti tiegħi huma l-aktar fuq hawn, iżda l-informazzjoni belt stat tagħhom huwa minn hawn. Allura, jirriżulta bl SQL, hemm fil-fatt mod biex jissieħbu informazzjoni, u tkun taf tara dan fil-PSet. Iżda jirriżulta li tista tagħmel xi ħaġa bħal din. Star Agħżel minn utenti, Jissieħbu zips FUQ utenti dot zip huwa ugwali zips dot zip. Li hija wordy ftit, ċertament, iżda dan biss tfisser dak kollu Agħżel mill- proċess tat-teħid tabella utenti tiegħi u tabella żippijiet tiegħi. Jingħaqdu magħhom fuq il-wieħed qasam li jkunu fil-kolonna. Allura, litteralment tagħmel xi ħaġa bħal dan, u jagħtu me back tabella temporanju ġdid li l-aktar wiesa ', li l-akbar, li għandu l- kolonni minn tnejn minnhom. U li, pjuttost sempliċi, ikun il- sintassi biex isir xi ħaġa bħal din. Allura, hemm dan l quddiem, imma hemm għaddej li jkunu deċiżjonijiet oħra tad-disinn tkun taf għandhom jagħmlu, mhux biss ma 'indiċijiet iżda wkoll tmexxija fis-isfidi. Fil-fatt, hemm sfida fi kwalunkwe disinn database li biha kultant żewġ persuni tista 'tixtieq aċċess għall-istess ringieli tad-database tabella. Allura, din hija xi ħaġa li aħna ser jiltaqgħu fil PSet7 ukoll. Imma ħsibt d naraha attakk li possibbli fil SQL. Liema huma wħud mill- problemi li jistgħu jinqalgħu? Allura, inti ser tiltaqa dan fil PSet7. U aħna jgħidlek kollox dak l- kodifikazzjoni soluzzjoni għal din il-problema hija. Imma jekk inti tieħu klassi livell ogħla, speċjalment fis-sistemi operattivi, int ser jiltaqgħu kwistjoni ta 'atomicity, il-problema ta 'tipprova tagħmel affarijiet multipli kollha f'daqqa mingħajr interruzzjoni. U ħsibt I d jintroduċu dan idea għal PSet7 ma metafora li tgħallimt myself fil Margo Sistemi operattivi CS164 Seltzer ta snin klassi ilu. Ejja ngħidu li għandek wieħed minn dawn dorm fridges fil-kamra dorm tiegħek jew dar, u inti għandek penchant reali għall-ħalib. U għalhekk, inti come home minn klassijiet ġurnata waħda, inti tiftaħ il-fridge. Oh, kkritikat dan. M'hemm l-ebda ħalib fil-friġġ. Allura, inti qrib il-fridge, lock-bieb, lock dorm tiegħek, mixja madwar il-kantuniera li CVS, jiksbu fil-linja, u tibda ikkontrollar out għal xi ħalib. U li għaddej biex tieħu filwaqt li, minħabba dawk kkritikat checkout awto counters jieħdu dejjem biex jintuża xorta waħda. Allura sadanittant, roommate tiegħek jiġi dar. Hu jew hi verament jħobb ħalib kif ukoll. Huma jidħlu fil-kamra dorm, tiftaħ il-fridge, oh, darn dan. M'hemm l-ebda ħalib aktar. Allura, hu jew hi wkoll tmur madwar il-kantuniera. Imma issa, peress li hemm simili żewġ jew tlieta jew erba CVSes fil-qrib, jiġri li jmorru lil wieħed mill- dawk differenti fil-pjazza. U hekk issa, ftit minuti aktar tard, tnejn inti come home u ugh, problema agħar qatt. Issa għandek ħalib wisq minħabba li għaddej biex tmur qarsa. U inti tixtieq ħalib, imma int ma verament simili ħalib. Allura issa, dan kien jiswa żball minħabba tnejn inti ħadet deċiżjoni bbażata fuq l- qagħda ta 'madwar varjabbli li kienet fil-proċess ta ' tbiddlet minnek, l-inizjatur ta 'se tikseb ħalib. Allura, dak li huwa forsi bniedem soluzzjoni għal din il-problema? UDJENZA: [inaudible] DAVID Malan: Ħalli nota, id-dritt? Dejjem iħallu nota, jekk int familjari ma 'dak ispettaklu. Iva, hemm żewġ of us. Allura, dejjem iħallu nota, jew litteralment lock-friġġ ma 'xi tip ta' katnazz jew xi ħaġa matul il-quċċata bħal dik. Iżda li fil-fatt se tkun problema ewlenija ma 'disinn database, speċjalment meta inti jista 'jkollok browsers multipli, laptops multipli, utenti multipli kollha jippruvaw jaġġorna l-informazzjoni f'daqqa. Informazzjoni partikolarment sensittiva bħal informazzjoni finanzjarja, li biha bil-stock trading websajt bħal inti ser tkun bini, dak jekk inti tixtieq li jiċċekkjaw kemm flus għandek u mbagħad jekk għandek biżżejjed, jixtru xi stokk? Imma x'jiġri jekk xi ħadd ieħor li għandu kont konġunt miegħek hija simultanjament tipprova biex jixtru xi stokk? Allura, hu jew hi iċċekkjar tal- bilanċ tal-kont, tnejn inti jiksbu lura l-istess tweġiba, hemm ebda ħalib. Jew it-tnejn minnkom tikseb lura l-risposta, għandek $ 100 fl-kont. Tnejn inti tipprova tagħmel id-deċiżjoni li jixtru sehem wieħed ta 'xi stokk kumpanija. U issa, x'jiġri? Għandek żewġ ishma? Inti għandek l-ebda ishma? Problemi bħal li jistgħu jinqalgħu. Allura, aħna ser jiltaqgħu dak. SQL attakki injezzjoni, B'xorti tajba, huma xi ħaġa aħna ser jgħinuk bil- iżda dawn huma atrociously komuni f'dawn il-jiem xorta. Allura, dan huwa biss eżempju. I jagħmlu ebda pretensjonijiet li Sistema Harvard PIN hija vulnerabbli għal dan l-attakk partikolari. Imxejna ppruvaw. Iżda, inti taf li aħna ikollhom kamp bħal dan. U l-ID Net Yale għandha simili tfittex iskrin dawn il-jiem. U jirriżulta, li forsi l- Sistema PIN hija implimentata fil-PHP. U jekk huwa were-- huwa not-- huma jista 'jkollhom kodiċi li tidher bħal dan. Huma għandhom żewġ varjabbli. Agħtini l-username u password mill-varjabbli globali post super li tkellimna dwar preċedenti. Forsi Harvard għandha query bħal stilla Agħżel minn utenti fejn username ugwali li u password huwa egwali għal dak. U tinnota li jien biss pagamnenti fl-użu in-notazzjoni Brace kaboċċi mill-ieħor jum, li jfisser biss plagg fil-valur hawn. Jien ma jużawx l- trade mark in kwistjoni teknika. Jien m'għandi l-ebda tieni jew argumenti terzi. Jien biss litteralment kostruzzjoni l-sekwenza myself. Il-problema, għalkemm, hi li jekk xi ħadd bħal scroob, li hija referenza għal film, zkuk ma xi ħaġa bħal din, u stajt jitneħħew l-tikek li normalment tkopri sa passwords, dak li jekk huwa jkun partikolarment malizzjużi u password tiegħu forsi huwa 12345, Skond il-movie imsejjaħ "Spaceballs," imma hu kritiku tipi ta ' kwotazzjoni waħda wara l-ħames, allura litteralment il-kelma jew fl-ispazju, u mbagħad kwotazzjoni, wieħed unquote ugwali wieħed jikkwota, imma avviż hu titħalla barra dak? Hu titħalla barra l-kwotazzjoni fuq il-lemin u hu ma jsirx il-kwotazzjoni fuq ix-xellug. Għaliex jekk dan attakkant preżunzjoni scroob s hija li l-persuni li kiteb dan il-kodiċi PHP ma kinux daqshekk qawwi, forsi huma biss ikollhom xi wieħed kwotazzjonijiet madwar il-interpolazzjoni ta 'varjabbli fl ċineg kaboċċi? U hekk forsi, huwa seta tip tal ilestu ħsieb tagħhom għalihom, iżda b'mod li għaddej let lilu Hacked fis-sistema PIN. Fi kliem ieħor, ejja ngħidu li dan huwa l-kodiċi u aħna issa plagg fil dak scroob ittajpjat. U huwa aħmar, għaliex dan huwa ħażin. U t-test sottostanti huwa dak li ittajpjat fil, scroob jista trick server Harvard fi kostruzzjoni mistoqsija SQL string li tidher bħal dan. Password ugwali 12345 jew wieħed ugwali wieħed. Ir-riżultat tagħha, loġikament, hija li dan se log scroob fil jekk password tiegħu hija 12345 jew jekk wieħed ugwali waħda, li naturalment huwa dejjem veru, li jfisser scroob dejjem gets fis. U għalhekk, il-mod biex jiffissaw dan, bħal fil-ħafna każijiet, tkun li tikteb aktar fid-difiża. Biex tuża xi ħaġa bħal tagħna funzjoni query attwali, li tkun taf tara fil PSet7, fejn aħna plug xi ħaġa bħal kwistjoni jimmarka hawn. U l-sbuħija tal- funzjoni mistoqsija li aħna jtik huwa qiegħed jadotta kontra dawn hekk imsejħa SQL attakki injezzjoni, fejn xi ħadd qed tricking kodiċi tiegħek fis tinjetta kodiċi SQL tiegħu jew tagħha stess. Għaliex dak l-funzjoni mistoqsija aħna nagħtuk fil-fatt se tagħmel, jekk inti tuża l-kwistjoni mark sintassi u t-tieni u t-tielet argument hawn, huwa dak li għamlet dan iżid il- input li l-utenti ma pprovda? Dawk backslash kwotazzjonijiet. Allura, dan jaħrab kwalunkwe potenzjalment karattri perikolużi. Dan jidher stramb issa, iżda mhux vulnerabbli minħabba li ma jibdlu l-loġika jibqgħalu minħabba li password kollu huwa issa kwotazzjoni waħda li mhux, fil-fatt, password scroob s. Allura, kien hemm xi ċajt dwar dan matul is-snin. Allura, dan kien ritratt meħud ta 'xi geek fil-lott ipparkjar fejn inti tista 'taf li xi bliet u stati jippruvaw scan liċenzja tiegħek pjanċa li inti kont jew li biljett inti jekk inti tmur permezz mingħajr, bħal, il-ħaġa E-Z adda. Allura, din il-persuna preżunt li forsi il-poplu bil-miktub is-sistema E-Z Pass ma kinux daqshekk qawwi, u forsi huma biss concatenated flimkien string, sabiex hu jew hi ma setax b'mod malizzjuż mhux biss ilestu maħsub tagħhom, imma attwalment tesegwixxi kmand ħażina, li konna mhux imsemmija għadhom, imma inti tista 'probabbilment raden. Li minbarra iħassru u daħħal u taġġorna u tagħżel, hemm ukoll keyword imsejjaħ qatra, li letteralment tħassar kollox fid-database, li huwa partikolarment ħażina. Nistgħu zoom fl fuq dan jekk huwa ftit iebsa biex tara. Dan, issa, hija cartoons famuż dan huwa wonderfully għaqlija issa u li tinftiehem. [Rires] Yeah, berred. Tip ta 'geeking out. Allura dawn, allura, huma SQL attakki injezzjoni. U dawn qed daqshekk faċli biex jiġi evitat bl-użu il-kodiċi dritt jew il-libreriji dritt. U tkun taf tara fil PSet7, li għaliex aħna nagħtuk l-funzjoni mistoqsija. Allura, ftit teasers li ħsibna aħna'd jagħtuk hawn fil tagħna minuti fadal flimkien. Allura, kif inti tiftakar minn żero ġimgħa, aħna introduċa dawn iż-żewġ bozoz tad-dawl li huma sbieħ, mhux biss minħabba dawn qed pretty u huma colorful, imma għax huma jappoġġjaw xi ħaġa imsejħa API, Applikazzjoni Programmazzjoni Interface U fil CS50 s'issa, konna aktar iffukat fuq IKOLLOK u POST, iżda jirriżulta hemm verbi oħra HTTP bħall PUT. U fil-fatt, dan kien slide minn żero ġimgħa li biha jekk tikteb kodiċi li jibgħat a la PSet6 talba HTTP li tidher bħal dan ma 'dan blokki ta' test fil-qiegħ, li huwa msejjaħ JSON, jew JavaScript Notazzjoni Għan li aħna ser nitkellmu dwar ġimgħa d-dieħla, inti tista 'ddawar fuq jew itfi jew bidla il-kulur tad-dwal bħal dawk. Mela jekk CS50 wkoll flimkien ma 'xi ta 'dawk bozoz tad-dawl hawn fi New Haven jekk inti tixtieq li tissellef minnhom għal proġetti finali, wkoll xi Microsoft Bands, li huma simili arloġġi li tilbes madwar polz tiegħek li bl-istess mod ikollhom API sabiex inti jistgħu jiktbu software tiegħek stess għalihom. Għandna kont ma Apple kodiċi IOS hekk li jekk għandek Apple Watch jew iPhone jew iPad jew iPod, inti tista 'tikteb kodiċi li attwalment timxi fuq dawk. Għandna mazz sħiħ ta Arduinos, li huma kompjuters ftit żgħira mingħajr każijiet, essenzjalment, li inti tista 'tqabbad via USB, tipikament Mac tiegħek jew PC, jikteb il-kodiċi li timxi fuq dawn fiżika apparati li spiss ikollhom sensors fuqhom sabiex inti tista 'jinteraġixxu mal-dinja reali. Għandna mazz sħiħ ta 'tagħmir Leap Mozzjoni, li huma apparat USB għall MACs u PCs, hawn u għal darb'oħra, fi New Haven. U jekk inti tqabbad lill Mac tiegħek, inti tista 'attwalment kontroll tal-kompjuter tiegħek billi tikteb software li permezz travi infra-aħmar, figuri fl fejn idejn tal-bniedem tiegħek huma, anki mingħajr ma tmiss it-tastiera tiegħek. Ħsibna aħna'd jaqsmu malajr glimpse għal dan, per eżempju. [Daqq tal-mużika] Allura, aħna għandna kollha mazz ta 'dawn l-affarijiet, wisq, imsejħa faxex driegħ Myo li inti tpoġġi fuq driegħ tiegħek u allura inti tista 'tikkontrolla l-veru dinja jew fid-dinja virtwali bħal dan. [Daqq tal-mużika] Or, irridu wkoll xi Google Kartun, li huwa litteralment, bħal, kaxxa tal-kartun inti tista 'tpoġġi fuq tiegħek wiċċ, iżda slide fil-telefon ċellulari tiegħek fis dan sabiex inti tpoġġi l-tazza tiegħek telefon verament qrib l-għajnejn tiegħek. U Google kartun huwa pretty irħas fil $ 10 jew $ 20. U għandu lentijiet ftit li ftit off shift l-immaġni fuq l-iskrin għall-bniedem tiegħek għajnejn li jtik sens ta 'fond sabiex inti fil-fatt ikollhom 3D ambjent fuq quddiem tal inti. Għandna wkoll xi gear Samsung, li hija l-verżjoni aktar għaljin ta 'dan, iżda li jista 'bl-istess mod slide fi Telefon android u jagħtuk l-illużjoni of-- jew jagħtu l-esperjenza ta 'realtà virtwali. U fil tagħna aħħar żewġ minuti, ħsibna aħna'd tipprova tagħmel dan. Jekk I tista 'proġett liema Colton għandha hawn biss biex iqabbduk aptit tiegħek, let me imorru quddiem u tarmi up fuq l-iskrin kbira hawn. Let me joqtlu l-dwal. Colton, do inti tixtieq li tmur quddiem u mqiegħda fuq ċelluli tiegħek għal mument u jiġu fuq matul il nofs tal-fażi? U inti tixtieq li project-- dan huwa dak Colton jara. Issa, il-Wi-Fi fil hawn huwa mhux daqshekk qawwi għal dan l-apparat li dan huwa super konvinċenti, iżda Colton huwa litteralment f'dan il-post futuristiku maġika. Huwa biss jara immaġini waħda. Inti tara għajn tax-xellug u tal-lemin tiegħu li l-moħħ tiegħu huma legatura flimkien fi tliet dimensjonijiet ambjent fuq wiċċu. Hu biss magħżul għażla menu hawn. U għalhekk għal darb'oħra, hu liebes dan headset ma 'cell Samsung fuqha dan huwa wirelessly jipproġettaw biex overhead tagħna. Issa int fuq Mars, I think? COLTON: I think so. M'inix ċert [inaudible]. [Rires] DAVID Malan: Jinstabx Mars għandha dawn menus. COLTON: [inaudible] xi jibred postijiet jekk irridu imorru to-- DAVID Malan: Fejn irridu imorru? COLTON: [inaudible] DAVID Malan: U ejja naraw fejn l Colton tieħu us issa. COLTON: [inaudible] DAVID Malan: Allura, hemm tant postijiet differenti inti tista 'tieħu yourself. Hemm FAPIs permezz tiegħu tista ' jiktbu logħob jew interazzjonijiet li run, finalment, fuq it-telefon. Allura, int verament ftit kitba ta 'app telefon ċellulari. Iżda grazzi għall-software u l-kapaċitajiet grafika, issa Colton Huwa f'dan cottage ftit żgħira. U għar-riskju ta ' joħnoq nfusna, Colton u jien ser twaħħal madwar għal filwaqt li fl-aħħar ta 'klassi hawn illum jekk inti tixtieq li toħroġ u play. U aħna ser iġibu magħhom ġimgħa d-dieħla lura kif ukoll. Mingħajr aktar, dewmien din hija għal-lum. Aħna ser tara int ġimgħa d-dieħla. [MUSIC - tewmin ragga, "MAN BAD"]