[Music kucheza] DAVID Malan: zote haki, hii ni CS50. Hii ni mwisho wa wiki nane. Na leo, sisi kuanza kujaza baadhi ya vipande linapokuja suala la jengo mambo kwenye mtandao. Hivyo, kukumbuka kuwa siku ya Jumatatu sisi kutumia muda mwingi zaidi juu ya PHP, ambayo ni nguvu huu lugha ya programu kwamba unatuwezesha pato, miongoni mwa mengine mambo, HTML na mengine maudhui kama kwamba tutaweza wanataka kuona. Lakini sisi si kweli inaonekana katika jinsi tunakwenda kuhifadhi taarifa yoyote. Kwa hakika, karibu yoyote ya kuwa super tovuti ya kuvutia kutembelea leo kuwa na aina fulani ya orodha tarehe ya mwisho ya nyuma, haki? Hakika Picha maduka kura ya data kuhusu sisi sote na maduka Gmail zote wa barua pepe yako. Na hivyo, maeneo mengine mengi si tu tuli bidhaa hiyo ni habari. Ni kweli nguvu kwa namna fulani. Wewe kutoa mchango, updates kurasa kwa watu wengine. Kupata ujumbe, kutuma ujumbe, na kadhalika. Hivyo leo, sisi kuangalia kwa karibu katika nguzo ya mradi kwamba utasikia mbizi katika ijayo wiki, CS50 Fedha, ambayo ni kweli kwenda na wewe kujenga kitu ambacho si katika C, lakini katika PHP. Tovuti ya kwamba inaonekana kitu kidogo kama hii ambayo inaruhusu kununua na kuuza hifadhi ya kwamba ni kweli kwenda kuteka juu ya muda halisi data ya hisa kutoka Yahoo Fedha. Na hivyo hatimaye, itabidi udanganyifu kwa ajili yako mwenyewe na kwa ajili ya watumiaji kwamba wewe ni kweli kununua na kuuza hifadhi na kupata muda halisi karibu updates, kusimamia kwingineko, ambayo yote ni kwenda zinahitaji kuwa, hatimaye, orodha ya watumiaji. Hivyo, kwa maneno yako mwenyewe, hasa kama wewe si super ukoo na kompyuta sayansi au databaser, nini Unajua orodha kuwa sasa hivi, katika suala nontechnical? Ni nini? Unaweza kusema nini kuhusu hilo kwa roommate au rafiki? Watazamaji: [inaudible] Maelezo [inaudible] DAVID Malan: Hivyo, orodha ya kampuni, au store-- orodha ya habari kwamba unaweza kutaka kuhifadhi kuhusu jambo fulani, kama mtumiaji. Na nini watumiaji kuwa kuhusishwa na wao? Kama wewe ni mtumiaji juu ya kuungana au Gmail, nini ni tabia kuwa sisi sote watumiaji kuwa? Kama, nini inaweza kuwa baadhi ya nguzo katika spreadsheet ambayo sisi alluded mara ya mwisho? Kwa sababu tena, unaweza kufikiria orodha kweli kama dhana faili Excel au Google Spreadsheet au Apple Hesabu faili. Hivyo, je, unafikiri ya wakati unafikiri ya mtumiaji? Je, wana? Nini hiyo? Watazamaji: jina. DAVID Malan: jina. Hivyo kama jina, kama Daudi Malan kuwa ingekuwa jina la baadhi ya mtumiaji. Nini kingine haina user na? Watazamaji: ID. DAVID Malan: ID. Hivyo, kama ID idadi, kama Harvard yako ID yako au Yale Net ID au kama. Nini kingine inaweza mtumiaji kuwa? Watazamaji: Password. DAVID Malan: neno la siri, labda mitaani, labda namba ya simu, labda barua pepe. Hivyo, kuna mashada ya mashamba na hii inaweza aina ya ond nje ya kudhibiti haraka haraka kama wewe kuanza kutambua, loo, hebu kuhifadhi hii na hebu kuhifadhi hili na lile. Lakini jinsi gani sisi kwa kweli kufanya hivyo? Hivyo tena, mfano wa akili kuwa kwa leo kama sisi mbizi katika SQL halisi, Uliza muundo lugha, ni database kwamba inaonekana kama hii. Ni safu na nguzo tu. Na unaweza kufikiria Google Spreadsheets au idadi yoyote ya programu nyingine. Lakini nini muhimu kuhusu MySQL, ambayo ni Mbegu programu tunakwenda kutumia, uhuru hadharani available-- matumizi Picha na idadi yoyote ya websites-- mengine Mbegu maduka mambo na uhusiano kuwa. Na database kimahusiano tu ina maana moja kwamba literally Maduka takwimu zake katika safu na nguzo. Ni rahisi kama hayo. Kwa hiyo, hata kitu kama Oracle kwamba unaweza kuwa kwa ujumla kusikia ni database kimahusiano. Na chini ya Hood, ni Maduka data katika safu na nguzo. Na Oracle mashtaka yenu fedha nyingi kufanya hivyo, ambapo MySQL mashtaka chochote kwa moja. Hivyo, SQL ni kwenda kutupa shughuli angalau nne. Uwezo wa kuchagua data, kama kusoma data, kuingiza, kufuta, na data update. Kwa maneno mengine, wale ni kweli shughuli muhimu manne kwamba ni kwenda kuruhusu sisi kubadilika mambo katika wale safu na nguzo. Chombo kwamba tutaweza kutumia leo hasa kujifunza SQL na kucheza na hayo kwa mara nyingine tena wito PHP MyAdmin. Ni mtandao msingi chombo. Jumla bahati mbaya kuwa imeandikwa katika PHP. Lakini ni kwenda kutupa graphical user interface ili tuweze kweli kujenga safu hizi na nguzo na kisha kuzungumza nao kupitia kanuni. Hivyo, hebu sasa kuanza nini nadhani ni kusema ukweli aina ya furaha mchakato wa kujenga mwisho ya nyuma ya Nje, sehemu ambayo watumiaji hawana kuona, lakini hakika kufanya huduma kuhusu, kwa sababu hiyo ni badala ya data wanakwenda. Hivyo, sawa na C na a kidogo kidogo kama PHP, SQL, au orodha ambayo inasaidia SQL, ina angalau aina takwimu hizi na mashada ya wengine. CHAR, VARCHAR, INT, BIGINT, Alisema, na DATETIME. Na kuna zima rundo la makala nyingine, lakini hebu kufanya hivyo kwa njia ya mfano halisi. Mimi nina kwenda katika CS50 IDE ambapo, mapema, nimekuwa watumiaji katika na nimekuwa pia alitembelea URL kwa chombo hiki kuitwa PHP MyAdmin. Na katika tatizo kuweka saba, tutaweza kuwaambia hasa jinsi ya kupata interface hii vilevile. On kona ya juu kushoto, taarifa hiyo inasema hotuba. Na kwamba tu ina maana kwamba mapema, mimi umba tupu orodha aitwaye hotuba kwamba hana spreadsheets ndani yake bado. Hakuna safu na nguzo. Kwa sababu kwanza Jambo tunakwenda kufanya ni kuanza kujenga meza hiyo ni kwenda kuhifadhi watumiaji wetu. Hivyo, literally zaidi hapa na haki, mimi nina kwenda kuwaambia orodha Nataka meza inayoitwa Watumiaji. Hivyo, hii ni kama faili kwamba mimi unataka kuhifadhi wote wa data zangu katika. Na jinsi wengi nguzo? Naam, hebu kushika ni rahisi kwa sasa. Mimi nataka tu kuhifadhi kama jina la mtumiaji na jina kwa mtumiaji. Tutaweza kuanza ndogo. Kwa hiyo, nataka nguzo mbili jumla. Na mimi nina kwenda mbele na bonyeza Go. Na kisha, kwa hawa nguzo, nini mimi kwenda do-- kama biashara hii cooperates-- sawa, hivyo sisi ni kwenda kujaribu tena. Mimi nina kwenda kuunda meza inayoitwa Watumiaji na nguzo mbili, bonyeza Go, sawa. Sasa sisi tumepewa ni kweli kwa haraka. Asante, vizuri sana kufanyika. Haki wote, hivyo nini tunataka nguzo hizi kuitwa? Hivyo, moja kwenda kuitwa jina la mtumiaji. Hivyo, kila naona here-- na interface kusema ukweli anapata kidogo mbaya hatimaye, mara moja kuanza kuandika katika taarifa hii yote. Lakini nini ni nzuri ni kwamba aina ya paradoxically, mimi nina kujenga nguzo, lakini chombo ina upumbavu kuwalaza nje katika safu ili niweze configure nguzo hizi. Hivyo, kuna nafasi zilizoachwa wazi miwili huko chini ya Jina. Na moja ya mashamba hayo mimi wanataka aitwaye jina la mtumiaji, na uwanja mwingine nataka kuita Jina. Na sasa mimi kuwa na kuchagua aina ya mambo haya data. Kwa hiyo, ambapo katika Excel na Google Spreadsheets, kama unataka safu, wewe literally aina tu Jina la mtumiaji au, hit Enter. Labda kufanya hivyo ujasiri uso tu kwa uwazi, lakini hiyo ni yake. Huwezi kutaja aina ya nguzo. Sasa katika Google Spreadsheets au Excel, wewe inaweza kutaja jinsi data inavyosema. Unaweza kwenda kwa orodha Format, na wewe Unaweza kutaja kuonyesha ishara hii kama dola, kuonyesha hii kama floating kumweka thamani. Hivyo, ni sawa katika roho kwa kwamba kile sisi ni juu ya kufanya, lakini hii ni kweli kwenda kwa nguvu data kuwa aina fulani. Sasa, ingawa wakati iliyopita mimi Alisema kuna aina chache tu data, kuna kweli mengi yote, na wao uko katika viwango vya maalum. Na kama kando, wewe Unaweza hata kufanya mambo dhana kama geometries kuhifadhi ndani ya database. Unaweza kuhifadhi vitu kama GPS kuratibu na kwa kweli kupata, hesabu, pointi kwamba ni karibu na wengine. Lakini tunakwenda kuweka hii super rahisi na kwenda hadi hapa, yote ya kinachojulikana kamba aina. Kwa hiyo, hapa ni orodha ya rundo zima la chaguzi. CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. Na ni aina ya balaa. Na kwa bahati mbaya, kwa kiasi fulani paradoxically kwa C, CHAR ni kweli si CHAR. Kama wewe taja katika orodha kwamba aina yako data ni CHAR, hiyo ina maana kwamba ndiyo, ni CHAR, lakini ni chars moja au zaidi. Na una bayana jinsi chars nyingi unataka. Hivyo, nini ya kawaida urefu kwa jina la mtumiaji? Je, kuna kikomo kwa kawaida? Watazamaji: [inaudible] DAVID Malan: 16 labda? Kitu kama hicho. Unajua, nyuma katika siku, kutumika kuwa nane. Wakati mwingine ni 16, wakati mwingine ni hata zaidi ya hapo. Na hivyo, hii haina maana nipe CHAR moja. Hii ina maana nina bayana urefu wa shamba, na sasa mimi ili kusema kitu kama 16. Na kuna biashara mbali hapa. Hivyo, tutaweza kuona katika wakati kwamba hii ina maana moja, kila jina ina kuwa 16 wahusika. Lakini kusubiri dakika, M-A-L-A-N. Kama hiyo jina la mtumiaji yangu na mimi nina tu kwa kutumia tano, ungefanya kupendekeza kwamba orodha kufanya kwa wengine wahusika 11 kuwa Nimekuwa zimehifadhiwa nafasi kwa ajili ya? Ungefanya nini? Watazamaji: [inaudible] DAVID Malan: Yeah, tu kuwafanya wote null. Kuwafanya nafasi. Lakini pengine null, hivyo mengi ya backslash zeros. Hivyo, kwa upande mmoja, tumekuwa sasa alihakikisha kwamba jina la mtumiaji yangu unaweza kuwa si zaidi ya 16 wahusika. Na hasara ya kwamba ni kwamba kama ningekuwa na jina kweli kwa muda mrefu au alitaka kweli kwa muda mrefu jina la mtumiaji kama baadhi yenu guys wanaweza kuwa katika kwamba chuo au katika Yale.edu, huwezi kuwa moja. Na hivyo kwa kweli, kama wameweza milele kusajiliwa kwa ajili ya tovuti na wewe kupata yelled saa akisema password yako ni ndefu mno au jina la mtumiaji ni muda mrefu sana, ni kwa sababu tu programu, wakati Configuring orodha yake, kuwa aliamua uwanja huu mapenzi kuwa si zaidi ya urefu huu. Haki wote, hivyo nini kama sisi kuendelea kwa jina? Muda gani anatakiwa jina ya kawaida ya binadamu kuwa? Wahusika wangapi, 16? Mimi guessing tunaweza kupata mtu katika chumba hiki ambapo na pamoja yake ya kwanza jana jina ni zaidi ya 16 wahusika. Hivyo, nini bora kuliko hayo, 17? 18? 25? Kubwa? 30? Watazamaji: [inaudible] DAVID Malan: 5000, loo Mungu wangu. Hivyo, kwamba pengine heshima juu amefungwa, itakuwa sisi kusema. Na hapa sisi aina ya kuwa kupiga simu hukumu. Kama, hakuna jibu sahihi hapa. Usio haiwezekani kabisa, kwa sababu tuko hatimaye kwenda have-- tuko kwenda kukimbia nje ya kumbukumbu. Kwa hiyo, tuna kufanya wito hukumu wakati fulani. Kawaida sana itakuwa, kwa mfano, kwa use-- na napenda kutaja CHAR hapa kama kabla, 255 ulikuwa ukomo wa juu juu ya programu hii orodha miaka iliyopita. Na hivyo, mengi ya binadamu ingekuwa tu kusema, faini. 255 ni kikomo. Hebu tu kutumia kiwango cha juu. Na hii ni pretty ujinga. Kama, kama wewe ni kuandika mtu ni jina kwa 200 pamoja na wahusika, kuwa kidogo ujinga. Lakini, kumbuka kwamba ASCII si mfumo tu kwa wahusika. Na hivyo, hasa katika mengi ya lugha za Asia ambapo kuna wahusika hatuwezi kueleza juu ya keyboards kama Marekani zangu keyboard, baadhi ya wahusika kweli kuchukua 16 bits badala ya bits nane. Na hivyo, hii kwa kweli si yote mantiki kuwa tunahitaji zaidi nafasi kama tunataka kifafa wahusika kubwa kuliko Marekani sana centric ndio tumekuwa wakijifanya kujadili. Hivyo, tunahitaji baadhi amefungwa juu. Sijui nini moja bora ni, lakini 255 kwa ujumla ni moja ya kawaida. 25 anahisi chini. 16, 32 kujisikia chini. Napenda kupotea kwa upande kitu juu. Lakini kuna biashara mbali, kama siku zote. Je, ni, pengine, dhahiri biashara mbali ya reservera 255 chars kwa jina la kila mtu katika orodha yangu? Watazamaji: [inaudible] DAVID Malan: Nini hiyo? Watazamaji: [inaudible] DAVID Malan: Ni mengi ya kumbukumbu, sawa? M-A-L-A-N. I have just kupita 250 wahusika tu kuhifadhi jina langu kujitetea, tu katika kesi ya mtu darasani ina jina kweli kwa muda mrefu. Hiyo inaonekana kama tradeoff visivyofaa. Hivyo, ni zamu nje kwamba SQL, hii lugha Mbegu, kweli inasaidia kitu aitwaye VARCHAR, au kutofautiana CHAR. Na hii ni aina ya nzuri katika kuwa hii utapata bayana si fasta upana, lakini badala yake, upana kutofautiana. Na hasa zaidi, upana upeo wa shamba. Kwa hiyo, hii ina maana kwamba jina Unaweza kuwa wahusika si zaidi ya 250, lakini inaweza shaka kuwa wachache. Na database ni kwenda kuwa smart. Kama huna kuweka katika M-A-L-A-N, ni kwenda tu kutumia tano, labda ka sita kwa kama trailing null tabia, na si kutumia ziada 249 au 250 ka usiokuwa. Kwa hiyo, hii inaonekana kama mimi lazima wameanza na kisa hiki. Lakini kuna siku zote tradeoff. Kwa hiyo, kwa upande mmoja, jina nimekuwa maalum kwa kuwa ngumu coded saa 16, na labda hiyo haikuwa wito wa kulia, labda ni ni, lakini kwa nini matumizi VARCHARs kwa kila kitu? Ipo kwa sababu. Kwa nini matumizi VARCHARs kwa kila uwanja ambaye urefu huna kujua mapema kama inaonekana kuwa jambo kubwa, sawa? Kutumia nafasi tu kama vile unahitaji hadi kikomo hii? Watazamaji: polepole. DAVID Malan: Speller? Watazamaji: Hufanya hivyo polepole? DAVID Malan: Oh, ni polepole. Nzuri, hiyo ni karibu kila mara jibu, kusema ukweli. Kama, nini tradeoff? Ni ama gharama nafasi zaidi au ni gharama na muda zaidi. Hivyo, katika kesi hii, inaweza kuwa polepole. Kwa nini? Watazamaji: [inaudible] kuamua [inaudible]. DAVID Malan: Mwema. Hivyo, unaweza kukumbuka kutoka hata PSED5, kucheza na njia yako kwa kamusi, ikiwa una kutenga kumbukumbu dynamically au kuweka kuongezeka buffer, kwamba kweli anaweza polepole. Kama una kuwaita malloc chini ya Hood na labda hilo ndilo MySQL ni kufanya, hivyo Hakika kwamba inaweza kuwa kesi. Na kama unadhani njia nyuma PSet-- au hata muda wa wiki mbili, wakati sisi alifanya mambo kama tafuta binary au hata tafuta linear, moja ya mambo mazuri kuhusu kila neno katika orodha ya au kila neno katika safu kuwa hasa urefu sawa, hata kama rundo zima la wahusika hao ni tupu, ni kwamba unaweza kutumia random kupata juu ya taarifa yako, sawa? Kama unajua kwamba kila neno ni 16 wahusika mbali, unaweza kutumia pointer arithmetic, hivyo akisema hivyo, kwenda kwetu 16, 32, 48, 64, na unaweza tu kuruka mara moja kwa kutumia hesabu kwa mtu yeyote wa maneno katika orodha yako. Wakati ikiwa ni VARCHAR, je, badala una kufanya? [Simu kupigia] Kama ni VARCHAR, wewe Huwezi kutumia random kupata. Nini una kuangalia kwa au nini? Yeah? Watazamaji: [inaudible] DAVID Malan: Angalia kupitia kuwaeleza whole-- kupitia orodha nzima kuangalia kwa nini, uwezekano mkubwa? Ni aina gani ya thamani maalum? Watazamaji: [inaudible] DAVID Malan: Kuangalia for terminators kwamba kutenga mgawanyo wa maneno. Hivyo tena, tradeoff, na hakuna jibu sahihi. Lakini hii ni wapi, hasa wakati watumiaji yako kupata kuwa wengi na mzigo wako juu ya watumishi wako, idadi ya watu kwa kutumia anapata juu, hizi ni kweli maamuzi nontrivial. Hivyo, tunaweza kuondoka hizi kama hii, lakini hebu kitabu chini zaidi na haki hapa. Sasa, kuna wanandoa wa nguzo ambapo tuna kupiga simu hukumu. Je, ni mantiki ya kuruhusu mtumiaji jina, jina la mtumiaji mtumiaji au mtumiaji majina yao, ili itakuwa batili? Hiyo ni, tu tupu. Anahisi kidogo nonsensical, hivyo mimi nina si kwenda kuangalia masanduku hayo. Lakini zinageuka katika Mbegu, unaweza kusema, mtu unaweza hiari na thamani hii. Safu hii haina kwa kweli kuwa huko. Sasa, kuna kushuka chini orodha hii. Na taarifa mimi bado nina katika safu ya kwanza huko, hivyo mimi kuzungumza juu jina la mtumiaji sasa. Na zinageuka kuwa Mbegu, tofauti na rahisi tu spreadsheet, ina makala nguvu aitwaye bahati. Na ripoti ni njia ya kuwaambia Mbegu mapema kwamba mimi binadamu am nadhifu kuliko wewe. Mimi najua kile aina ya maswali, kuchagua au kuingiza au kufuta au update, kwamba kanuni yangu inaenda kuisha up kufanya juu ya orodha hii. Nataka kusoma mengi ya data. Nataka kuingiza mengi ya data. Nataka daima kufuta mengi ya data. Kama Najua kwamba mimi nina kwenda kuwa kupata uwanja kama mtumiaji mengi, Siwezi kuwaambia preemptively Mbegu, najua zaidi kuliko wewe, na mimi nataka amri kwamba unapaswa ripoti uwanja huu. Ambapo Indexing shamba au safu maana yake ni kwamba orodha mapema lazima kukopa baadhi ya mawazo kutoka, kama, wiki nne na tano na sita kutoka CS50 na kwa kweli kujenga kitu kama tafuta binary mti au kitu ujumla aitwaye B mti kwamba ungependa kujifunza darasani kama CS124 katika Harvard, algorithms darasani, au idadi yoyote ya maeneo mengine. Mbegu na smart watu ambao kutekelezwa ni itakuwa kufikiri jinsi ya kuhifadhi kwamba meza ya maelezo katika kumbukumbu ili upekuzi na shughuli nyingine ni super haraka. Huna kufanya hivyo. Huna kutekeleza tafuta linear au tafuta binary au kuunganisha aina au uteuzi aina, yoyote ya hiyo. Mbegu gani kwa ajili yenu ikiwa kumweleza ni preemptively kwa ripoti uwanja huu. Na unaweza kuona pia, kuna baadhi sifa nyingine tunaweza kujua orodha ya kutekeleza. Nini kinaweza Ina maana kama mimi kuchagua Kipekee kutoka orodha hii, tu intuitively? Yeah? Watazamaji: [inaudible] DAVID Malan: Yeah, jina la mtumiaji ina kuwa ya kipekee. Je, hii ni jambo zuri au baya kwa Mbegu, kwa ajili ya tovuti na watumiaji? Lazima majina ya watumiaji kuwa ya kipekee? Naam, pengine. Kama hilo ndilo uwanja tunatumia kuingia kwenye, wewe si kweli wanataka watu wenye kujisikia sawa au jina la mtumiaji sawa. Hivyo, tunaweza kuwa na Mbegu kutekeleza kwamba hivyo kwamba sasa katika PHP kificho wangu au lugha yoyote, Sina kwa, kwa mfano, kuangalia lazima gani jina hili la mtumiaji kuwepo kabla mimi basi mtu kujiandikisha? Mbegu si basi watu wawili aitwaye David au Malans kujiandikisha katika kesi hii. Na kama kando, hata kama hii orodha tu inakuwezesha kuchagua moja, ripoti kipekee ni moja kwamba indexed kwa super haraka utendaji, lakini pia utekelezaji pekee. Na tutaweza kurudi kwa nini wengine wawili maana katika muda tu. Wakati huo huo, kama mimi kwenda kwa mstari yangu ya pili, ambayo ni jina la mtumiaji, anatakiwa kutaja kwamba jina lazima ziwe za kipekee? Hapana, kwa sababu wewe naweza hakika have-- hakuna Daudi mbili Malans katika nafasi hii, uwezekano mkubwa. Lakini kama sisi kuchagua jina tofauti, tupate hakika kuwa migongano. Fikiria nyuma hash meza na kadhalika. Kwa hiyo, sisi hakika hawataki kufanya uwanja jina kipekee. Kwa hiyo, sisi ni kwenda tu na kuondoka kwamba kama dash, dash, dash, chochote. Na mimi nina kwenda kuondoka kila kitu kingine peke yake. Kwa hakika, wengi wa mashamba hayo hatutakuwa na huduma ya juu. Na wakati mimi niko tayari kuokoa huu, kama biashara inashirikiana, Mimi bonyeza Save, na sana, sana, sana polepole haina orodha kupata kuokolewa. Na sasa mimi nina nyuma hii interface, ambayo admittedly, ni balaa katika mtazamo wa kwanza. Lakini wote mimi nina kwenda kufanya ni click juu ya Watumiaji neno juu kushoto. Mimi nina kwenda juu hapa, bonyeza Watumiaji, na kwa default, ina kunyongwa baadhi SQL, lakini zaidi juu ya kwamba katika wakati huu. Hapa ni tu muhtasari wa nini mimi. Na si kuwa na wasiwasi kwamba unaweza kuona kutaja ya Amerika na Sweden hapa. Hayo ni tu chaguo-msingi mazingira, kwa sababu MySQL awali, au PHP MyAdmin, mmoja wa hao wawili kilichotokea kuandikwa na baadhi ya watu Sweden. Lakini ni lisilo na maana katika kesi yetu hapa. Haki wote, hivyo kwa nini ni hii yote ya kuvutia? Ni zinageuka, siwezi kuingiza data katika orodha kwa kuandika kanuni. Na mimi nina kwenda mbele na katika faili yangu hapa, mimi nina kwenda mbele na kujifanya kama hii ni wired kwamba database, ambayo si kwa sasa, lakini itakuwa kuwa wakati sisi kupata tatizo kuweka saba. Na mimi nina kwenda mbele na kutekeleza kazi kuitwa swala, ambayo sisi nitakupa katika tatizo kuweka saba wa usambazaji kificho, kwamba inachukua hoja angalau moja, ambayo ni haki kamba. Kamba ya kificho SQL. Hivyo, wewe ni kuhusu kujifunza jinsi ya kuandika Uliza muundo lugha. Kama mimi nataka kuingiza safu mpya katika wangu Mbegu kwa sababu mtu imewasilisha fomu kwa kificho yangu, napenda literally kuandika kuingiza KATIKA watumiaji zifuatazo mashamba: jina la mtumiaji, comma, jina, MAADILI, na sasa mimi haja ya kuingiza kitu kama Malan, na kunukuu, unquote 'David Malan.' Na sasa hata kwa wale usio wa kawaida na SQL, kwa nini mimi kutumia quotes moja ndani ya hii kamba ya kijani? Nini kinaweza kuwa sababu hapa? Taarifa mimi nina ushirikiano mingling lugha mbili. Swala ni PHP kazi, lakini inachukua hoja. Na hoja kuwa ana yenyewe kuwa Imeandikwa katika lugha mwingine aitwaye SQL, Strukturerad Query Language. Hivyo, kila kitu ambacho mimi tu yalionyesha hapa ni lugha hii inaitwa SQL. Hivyo, nini na quotes moja, tu kama haraka sanity hundi? Endelea. Wao ni masharti. Hivyo, quote, unquote Malan na kunukuu, unquote Daudi Malan ni masharti. Na tu kufikiri shirikishi sasa, kujua nini kujua kuhusu C na PHP, kwa nini mimi si kufanya hivyo, ambayo mimi kawaida kutumika mara mbili quotes kwa masharti? Kwa nini mimi sitaki kufanya hivyo? Yeah? Watazamaji: [inaudible] DAVID Malan: Hasa. Kwa sababu mimi niko tayari kutumia quotes mbili juu ya njia nje ya hoja kwa PHP kazi, Napenda tu kuwachanganya mkalimani. Itakuwa si unajua, je hawa waende pamoja? Je, hawa waende pamoja? Je, hawa waende pamoja? Kwa hiyo, mimi mbadala badala yake. Au mimi naweza kufanya kitu kama hii, kunukuu backslash au backslash kunukuu. Kwa kweli, kwamba tu kuanza kupata unreadable sana na mbaya. Lakini kwamba itakuwa kufikia Matokeo yake huo pia. Hivyo, kama ningekuwa kutekeleza hii swala sasa, hebu angalia nini kinatokea. Mimi nina kwenda mbele sasa na badala kuliko kutekeleza kanuni PHP, ambayo Hapa ndipo itabidi kucheza katika tatizo kuweka saba, Mimi nina kwenda badala kwenda PHP MyAdmin. Na mimi nina kwenda kwa mikono kwenda SQL tabo, na napenda kuvuta interface. Na mimi nina kwenda kwa kuweka katika Jambo mimi tu typed. Na rangi coding ina iliyopita kidogo sasa, kwa sababu tu ya miundo mpango mambo tofauti kidogo. Lakini taarifa kwamba wote mimi tumefanya ni nilivyosema, kuingiza ndani ya Watumiaji. Nimekuwa maalum, basi, katika comma kutengwa parenthesized orodha wawili mashamba ambayo nataka kuingiza, na huo nimekuwa literally alisema maadili ikifuatiwa na Paren mwingine, na kisha maadili mbili Nataka kuziba-katika, na sasa kwa hatua nzuri, Mimi itabidi kuweka semicolon mwishoni. Hivyo, hii si C. Hii si PHP. Hii ni sasa SQL, na mimi nina pasting ndani ya hii mtandao msingi interface hiyo ni tu kwenda napenda, haraka kama mimi bonyeza Go, kutekeleza swala hili kwenye orodha mbio ndani ya CS50 IDE. Hivyo hii ni nzuri. Taarifa kwamba alisema mstari mmoja kuingizwa, akaenda super haraka, Sekunde 0.0054 kuingiza data hizo. Hivyo, kwamba inaonekana pretty afya. Ni reformatted swala yangu kwa ajili yangu hapa tu kuona ni katika aina ya rangi coded toleo. Lakini sasa kama mimi bonyeza Browse, taarifa kwamba, hata ingawa kuna mengi ya clutter juu ya screen, meza yangu sasa ina mistari miwili. Hivyo, napenda kwenda mbele na kufanya mwingine. Badala ya hii, napenda kwenda SQL tabo tena. Na wakati huu mimi itabidi kuingiza kitu kama Rob na jina lake litakuwa Rob Bowden. Bowden. Hebu bonyeza Hifadhi. Oops, badala Go. Bofya Browse tena, na sasa taarifa nina safu mbili. Kwa hiyo, hili ni jambo jema tata njia zaidi njia ya kufungua Google Spreadsheets na kuandika tu mstari katika safu. Lakini nini muhimu ni kwamba sasa tuna syntax na ambayo kwa kuandika kanuni ili hatimaye, tunaweza kweli kufanya baadhi na hii. Kumbuka kwamba PHP mkono vigezo super kimataifa. Nini ndani ya dola ishara kusisitiza kupata katika PHP? Sisi alichukua kuangalia moja rahisi mifano moja au mbili. Na katika PSet6, kukumbuka una hodi dot PHP inayotumia kutofautiana hii. Yale yanayoendelea huko? Au ni nini? Kidogo nguvu zaidi. Watazamaji: [inaudible] DAVID Malan: Ni theluji mbegu ya safu, ambayo ni njia tu ya dhana ya kusema safu ambayo ina thamani jozi ufunguo. Na funguo si nambari. Wao ni maneno au masharti. Na hasa, nini ni wale thamani jozi ufunguo? Wapi wametoka? Pole? Watazamaji: [inaudible] DAVID Malan: Hakuna? Ambapo kufanya wale ufunguo thamani jozi kuja kutoka? Kusema tena? Tena? Mimi ni mmoja tu kusikia kitu? [Kicheko] Hiyo ni haki, ndiyo? Watazamaji: [inaudible] DAVID Malan: Yeah, wao wanatoka kamba swala. Hivyo, kama wewe rewind katika muda wa wakati tumekuwa alicheza na Google na tumeenda kwa Google.com kufyeka la swali alama q ni sawa na paka, kama ningekuwa kugonga kuingia na kama Google yalifanywa katika PHP, PHP kificho kwamba Google aliandika bila kupata ishara ya dola kusisitiza GET ndani ya ambayo ni muhimu aitwaye Swali na thamani aitwaye paka iweze kisha kutumia kutumika kufanya search halisi kwa. Kwa hiyo, kwa kweli, nini mimi kwenda kwa kufanya sasa ni kurudi kwenye kanuni PHP yangu kwamba utasikia tena kuona zaidi ya katika PSet7. Na badala ya kuziba katika maadili ngumu coded ambayo haionekani kama sana tovuti ya nguvu, Mimi nina kwenda kukupa teaser ya nini kanuni yako halisi atafanya. Bila kuweka vipande viwili swali alama kama hii. Sijui nini jina la mtumiaji ni. Sijui nini jina ni kwenda kuwa, lakini najua naweza kupata yao dynamically. Hivyo, kama kanuni sisi ni kuandika sasa ni kificho mbio juu ya seva ya Google, au kama hii ni hodi nukta PHP, ambayo huja kwa PSet6, Mimi nina kwenda kupita katika kazi swala kama printf, hoja mbili vingine. Kupata, quote, unquote jina la mtumiaji, na kupata, quote, unquote jina. Na sasa, taarifa ya nini muundo wa jumla ni hapa. Mimi nimepata upande wa kushoto mkono upande wa wito, kazi hii inaitwa swala katika PHP. Bado nina kama kwanza Hoja, tu kamba ya maandishi. Lakini hiyo kamba ya maandishi ni Imeandikwa katika lugha inayoitwa SQL. Na kusema ukweli, siyo lugha kubwa. Sisi ni tu kwenda kuzungumza kuhusu ni rasmi leo, kwa kweli. Na kisha katika tatizo kuweka saba, kuna kiasi makala chache kwamba tuko kwenda kujiinua. Alama ya kuuliza, ingawa, maana kuziba katika thamani hapa na kuziba katika thamani nyingine hapa. Na taarifa, nimekuwa liliondolewa nini kutoka duniani damn quote-- it-- karibu quotation alama wakati huu. Nimekuwa liliondolewa quotation alama kuzunguka alama swali, pole, wakati huu. Hivyo, nini ni nzuri kuhusu hili swali chapa kipengele ambayo PHP huelekea kusaidia, Ruby na Chatu na lugha nyingine, hii ina maana tu kuziba katika baadhi thamani hapa na unajua nini? Wewe kufikiri kama kutumia quotes moja au quotes mbili. Usinisumbue na wale kielimu uninteresting maelezo. Lakini, kuhakikisha ni sahihi ili kificho wangu ni hatimaye uendeshaji na salama, ambayo utakuwa na maana kabla ya muda mrefu. Sasa, jinsi hoja nyingi jumla, tu kuwa wazi, ni swala kazi kuchukua? Mtu yeyote wanataka kupiga kura kwa zaidi ya wawili? Tatu? Hakika, kwa nini? Kwa nini tatu? Watazamaji: [inaudible] DAVID Malan: Hasa. Sehemu ya kwanza ni kamba. Hoja ya pili ni ishara ya dola kusisitiza GET mabano jina la mtumiaji. Na hoja ya tatu ni kitu kimoja, lakini tu jina. Hivyo kwa maneno mengine, sasa kama ningekuwa na fomu mtandao kwamba alikuwa na mashamba maandishi, moja kwa mtumiaji username, moja kwa wake au jina yake, tu kama ungependa kuona katika tovuti wakati wa kujiandikisha kwa baadhi ya tovuti, Nguvu hii kuwa kanuni ya mwisho ya nyuma kwamba kweli haina kuingizwa sasa katika database. Sasa kwa kulinganisha, hebu kufunga mbele. Tuseme user ni sasa magogo katika na unataka kuandika PHP kificho kwamba hundi kama mtu ambaye ni tu watumiaji katika ni kweli mtumiaji, unaweza kutumia syntax pretty rahisi. Unaweza kusema SELECT, hebu sema nyota, ambapo nyota ina maana kila kitu. Sijui nini mimi wanataka, hivyo tu nipe nguzo zote kutoka meza aitwaye watumiaji wapi, na hii ni nzuri. Teule inasaidia nini aitwaye prediketo, ambayo ni kama njia ya kufuzu unataka nini. Ambapo jina la mtumiaji sawa na quote, unquote Malan. Hivyo hapa pia, nimekuwa iliyoingia ndani ya hoja kwa PHP kazi, mstari wa kanuni SQL. Na kwamba kanuni SQL hii muda ni halisi kwenda kutafuta quote, unquote Malan. Sasa kwa kuwa si wote kwamba muhimu, hivyo mimi nina kwenda ruka kwamba na mimi nina kwenda kuachana ncha hii kutoka Brady, na kwenda na kuziba-katika badala swali chapa hapa. Kwa hiyo, tu kuwa wazi, nini lazima hoja ya pili yangu kuwa kama mtu ana haki ya watumiaji katika na mimi unataka kuangalia kama yeye au yeye ni kweli user? Watazamaji: [inaudible] DAVID Malan: Yeah. Nasikia dola ishara kusisitiza Kupata quote, unquote jina la mtumiaji. Na kwamba lazima kurudi kwangu yoyote ya mistari katika orodha yangu ambazo zina jina la mtumiaji wa Malan. Sasa matumaini, mimi nina kwenda kupata nyuma sifuri ikiwa Malan ya hawajawahi hapa, au moja kama ana. Sitakuwa kupata nyuma mbili au tatu au nne. Kwa nini? Watazamaji: [inaudible] DAVID Malan: Nilisema kipekee, sawa? Sababu rahisi. Kwa sababu nalisema ni got kuwa ya kipekee, tu mantiki, unaweza tu kuwa na zero au moja Malans hasa hii database meza. Sasa kama kando, ili tu wameweza kuona hivyo, hata mimi kuendelea kutumia GET na hata kama PSet6 tu kutumika GET, unaweza hakika kuwa POST. Na kukumbuka kuwa baada ya mwingine ni mbinu kwa kuwasilisha taarifa kutoka fomu, lakini haina show up katika URL. Ni salama zaidi kidogo kwa hakika kwa mambo kama majina ya watumiaji na nywila, ambayo PSet7 itakuwa, kwa kweli, kuhusisha. Hivyo, hebu kufanya hivyo katika PHP MyAdmin na kuona nini kinatokea. Mimi nina kwenda kwa MySQL tab. Na taarifa kwamba thamani chaguo-msingi kwa PHP MyAdmin, tu kujaribu kuwa na manufaa, ni kuchagua nyota kutoka kwa watumiaji ambapo moja. Naam, moja daima ni kweli, hivyo hii ina silly ufanisi ya kuchagua tu kila kitu. Lakini mimi nina kwenda kuwa kidogo pedantic zaidi na manually aina nje nyota SELECT kutoka watumiaji. Sasa kitaalam, unaweza kunukuu jina la meza. Ni nadra kwamba una, lakini taarifa hizi sio quotes yako ya kawaida juu ya Marekani keyboard. Hii ni kinachojulikana backtick, ambayo kwa ujumla ni kwa upande juu kushoto kona ya keyboard yako. Lakini ni nadra kuwa utasikia kweli haja ya kujisumbua na kwamba, hivyo mimi itabidi saza yao anyway. Hivyo sasa, basi mimi kwenda mbele na kugonga kwenda. Na jinsi wengi safu lazima mimi kupata nyuma wakati mimi kuchagua nyota kutoka kwa watumiaji? Watazamaji: [inaudible] DAVID Malan: idadi ya mistari, uhakika. Lakini wangapi katika hii hadithi halisi sasa hivi? Mbili, kwa sababu kulikuwa na mimi na kulikuwa na Rob. Hivyo, kama mimi bonyeza Go, naona kuibua kwamba Nimekuwa wamezipata nyuma, kwa hakika, safu mbili. Kuna mengi ya clutter juu ya screen, lakini mimi tu kuona mistari miwili. Kwa upande mwingine, kama mimi kufanya hivyo tena na kufanya Nyota SELECT kutoka watumiaji, ambapo jina la mtumiaji sawa quote, unquote Malan, sasa kama mimi bonyeza Go, Mimi tu kwenda kupata nyuma mstari mmoja. Na Mwisho, kama mimi kufanya kitu kama hii, tuseme kwamba mimi hawajali kupata kila kitu, ambayo ni aina ya maana sasa, kwa sababu kuna nguzo mbili tu. Siyo kama mimi nina kuchagua kiasi kikubwa cha data. Tuseme mimi kwenda mbele na Je, CHAGUA jina kutoka watumiaji, ambapo jina la mtumiaji sawa na Malan, nini ni nzuri kuhusu SQL kwa uaminifu, ni kwamba ni kweli haina tu nini kuwaambia ni kufanya. Ni pretty succinct, lakini wewe literally tu kuwaambia ni nini unataka kufanya. Teule jina kutoka kwa watumiaji ambapo jina la mtumiaji sawa na Malan. Na ni kweli ni kwamba wazi. Kwa hiyo, sasa kama mimi hit Go, ni wangapi safu Mimi ni kwenda kupata nyuma? Moja, kwa sababu ni tu Malan, hopefully. Au zero kama yeye si pale, lakini moja maximally. Na jinsi wengi nguzo mimi kupata nyuma? Jinsi wengi nguzo? Wakati huu, mimi nina kwenda tu kupata moja kwa sababu sikuwa kuchagua nyota, ambayo ni kila kitu. Sasa mimi nina kuchagua jina tu, hivyo mimi tu kupata nyuma safu moja na mstari mmoja. Na inaonekana aina ya ipasavyo ujinga, kuangalia tu super dogo kama hili. Hivyo, nini kweli yanatokea? Wakati kutekeleza SQL swala kutumia kuchagua, nini wewe kupata nyuma kutoka orodha ni kama meza ya muda na safu na nguzo, labda, lakini hiyo saza chochote ambacho ilikuwa si kweli kuchaguliwa na wewe. Hivyo, ni kama kama mtu alikuwa na kubwa spreadsheet ya wanafunzi wote kusajiliwa kwa baadhi mwanafunzi wa kikundi, na kusema, nipe wote wa Freshman ambao wameweza kusajiliwa kwa mwanafunzi wetu kundi, nini mwenzake yako katika mwanafunzi anaweza kufanya kundi ni wangeweza mkono tu wewe spreadsheet nzima. Hiyo ni kama kusema kuchagua nyota. Na ni kidogo annoying kama alitaka tu Freshman. Na hivyo, kama wewe badala alisema, kuchagua kutoka orodha meza nyota ambapo mwaka ni sawa na quote, unquote Freshman, ni kana kwamba rafiki yako katika kundi mwanafunzi halisi yalionyesha na kunakiliwa tu safu Freshman, pasted yao ndani ya mwezi Google Spreadsheet au Excel file, na kukabidhiwa nyuma kusababisha faili tu. Hayo ni yote ambayo inaenda juu ya conceptually hapa. Hivyo katika mwisho, tunaweza kufanya baadhi ya mambo pretty dhana kwa kuhifadhi vitu kama majina ya watumiaji na nywila na kadhalika. Lakini, ni zamu nje, tunapaswa kufanya tofauti kidogo kuliko huu. Siyo kwamba smart tu kuhifadhi username na password. Mtu awali, nadhani chini hapa, alipendekeza ID. Sasa ID inaweza kuwa kama Harvard ID au Yale ya Net ID, lakini inaweza kuwa hata rahisi katika kesi yetu database. Na hakika, kesi ya kawaida ni kuwa na safu nyingine. Na mimi nina kwenda mbele na hariri meza yangu. Na kama wewe kucheza karibu na interface huu kwa PSet7, utaona kwamba unaweza kuangalia hii kifungo hapa na kuongeza uwanja mwanzoni mwa meza. Na sasa kama mimi bonyeza Go, ni kwenda kunipa moja ya fomu hizo kutoka mapema. Mimi nina kwenda kuongeza shamba aitwaye ID. Na mimi nina kwenda kufanya hivyo aina nambari. Nina rundo zima ya maadili kwa numerics. Mimi tu kwenda kwa kuchagua INT na wasiwasi kuhusu ukubwa tofauti. Sina bayana urefu au thamani, kwa sababu itakuja kuwa 32 bits bila kujali. Sifa, sisi hawakuona kabla. Maslahi yoyote katika kimojawapo cha vitu hivi orodha ya chaguzi wakati huu? Kwa INT? Je, wewe kupendekeza? Hakuna? Je yoyote ya hizi mantiki? Naam. Naam, unsigned, sawa? Kwa ujumla, kama sisi ni kwenda kutoa kila mtu Idadi ya kipekee, ambayo Hapa ndipo kisa hiki ni kwenda, mimi kwa kweli wanataka tu mtu kuwa na idadi kama sifuri na moja na mbili na tatu na nne. Sina haja ya kukabiliana na namba hasi. Inaonekana tu kama utata visivyofaa. Nataka maadili bilioni nne inawezekana, si bilioni nne maadili inawezekana, hivyo mimi tu mara mbili uwezo wa INT yangu. Kama kando, kama unataka kuhusisha huu kwa kitu kama Facebook, nyuma katika aina ya siku yangu wakati Picha kwanza akatoka, Naamini kile walichokuwa kutumia katika orodha yao MySQL kuhifadhi mtumiaji kitambulisho, mara tu INT. Lakini bila shaka, kuna mengi ya watu halisi katika dunia. Kuna mengi ya Facebook bandia akaunti katika dunia. Na hivyo hatimaye, Facebook ukifurika ukubwa wa INT, bilioni nne thamani. Ambayo ni kwa nini, kama ukiangalia karibu na kuna tovuti ambazo zinaweza kukuambia nini ID yako ya kipekee ni. Na kama wewe kamwe waliamua jina la mtumiaji katika Facebook, utaona ID yako ya kipekee. Nadhani ni wasifu nukta PHP alama swali ID sawa na kitu. Hiyo sasa ni kitu kama kubwa INT, au mrefu kwa muda mrefu kama wewe, ambayo ni thamani ya 64-bit au kitu kulinganishwa. Kwa hiyo, hata katika ulimwengu wa kweli kufanya hivi masuala hatimaye wakati mwingine jambo. Na zinageuka hapa, kama mimi nina kutoa yote ya watumiaji yangu ID kipekee, Nataka kuwa super wazi na minimally kufanya uwanja huu pekee. Lakini zinageuka kuna moja kipande cha utaratibu wa majina leo pia hiyo ni muhimu ya msingi. Kama wewe ni kubuni orodha meza na wewe kujua mapema kuwa moja ya nguzo katika meza kwamba lazima na kipekee kutambua safu katika meza, unataka kutaja na kuwaambia Mbegu, huu ni muhimu yangu ya msingi. Huenda kuna marudio katika maeneo mengine, lakini mimi nawaambia kwamba hii orodha ni msingi wangu, shamba langu muhimu zaidi, hiyo ni uhakika kuwa ya kipekee. Sasa, hii inaonekana kutokuwa na maana. Mimi sasa kupendekeza kwamba sisi kuongeza, kwa kubonyeza Ila hapa, uwanja called-- na mimi nina kwenda kwenda mbele na bonyeza ai, tutaweza kurudi kwa kwamba katika wakati huu, Ila. Napendekeza sasa kwamba meza yangu kuangalia kama hii. Nina shamba INT aitwaye ID, uwanja CHAR aitwaye jina la mtumiaji, uwanja VARCHAR aitwaye Jina, lakini ID, ikiwa ni ya msingi na kwa hiyo pekee, kwa nini mimi tu kupoteza wakati kuanzisha kile ufanisi ni ya pili kipekee uwanja aitwaye ID hilo ni INT? Jina la mtumiaji, kukumbuka, alikuwa Tayari kipekee, sisi alisema. Hivyo tu mantiki, huna haja uzoefu wowote orodha ya sababu kwa njia hii, kwa nini Huenda mimi kuwa na vishawishi INT kama kitambulisho changu kipekee pia? Nini Haya kusema tena? Watazamaji: [inaudible] DAVID Malan: Random upatikanaji ni rahisi zaidi, kwa nini? Watazamaji: [inaudible] DAVID Malan: Yeah, ni tu kupata namba. Hivyo, kama wewe kufikiria hii kweli ni meza, kama safu, sasa nina vitambulisho vya kipekee niweze kuruka karibu. Na bora kuliko hayo bado ni kwamba jinsi kubwa ni INT kwenda kuwa tena? Bits 32 au ka nne. Jinsi kubwa ni jina la mtumiaji yangu kwenda kuwa? Maximally? 16 ka. Hivyo, kama wewe ni kweli kujali juu utendaji wa kanuni yako, kufikiri nyuma PSet5, unapendelea kutafuta nne Byte thamani au 16 thamani Byte, sawa? Ni kweli ni rahisi kama hayo. Una kufanya mara nne kama kazi kubwa kutafuta majina ya watumiaji kwa sababu wale ni 16 ka. Hivyo, una halisi kulinganisha ka zote 16 kuwa uhakika ndiyo, hii ni jina la mtumiaji nataka. Ambapo kwa INT, unaweza kufanya hivyo pamoja ka nne tu. Na kama kando kwa wale nia ya vifaa vya kompyuta, ni zamu nje unaweza fit kitu kama INT au 32-bit thamani katika kitu aitwaye kujiandikisha katika kompyuta CPU, ambayo ina maana ni super, super haraka, hata katika chini kiwango cha vifaa vya kompyuta ya. Hivyo, kuna faida tu pande zote. Kwa hiyo, hii ina maana gani? Kwa kweli, wakati wewe ni kubuni Mbegu meza, karibu wote wa wakati unakwenda na si tu data unaowajali, lakini pia kitu kama kitambulisho kipekee kwa sababu hii ni kwenda hebu kufanya mambo mengine. Na hebu safari juu ya tatizo moja hapa. Tuseme kwamba watumiaji kuwa si majina ya watumiaji na majina tu, lakini pia kuwa vitu kama miji na mataifa na codes zip, angalau hapa nchini Marekani. Kwa hiyo, mimi nina kwenda mbele na haraka tu kusema, nipe nguzo tatu zaidi mwishoni mwa meza. Na hii ni kwenda kuwa City, hii ni kwenda kuwa Serikali, na hii ni kwenda kuwa Zip. Sasa aina City, kile data lazima hii kuwa, labda? VARCHAR? Sijui nini muda mrefu zaidi jina mji ni. Mahali fulani katika Marekani, kuna pengine baadhi neno ridiculously kwa muda mrefu, hivyo hebu tu kwenda kwa 255, kiasi fulani kihistoria au kiholela. Nchi, unataka nini cha kufanya? Hukumu wito, sawa? Nini labda ufanisi zaidi? Jinsi wahusika wengi? Labda mbili tu, kama tunaweza kupata mbali na kufanya tu, kama, MA kwa Massachusetts na kadhalika. Kwa hiyo, mimi nina kwenda CHAR thamani ya mbili. Msimbo moja ya kuvutia. Tuko hapa katika 02138, ili unaonyesha tunapaswa kutumia nini? Ni INT, sawa? INT, INT, short? Muda ingekuwa kazi. Hakuna? CHAR au tano, lakini nataka INT. Kwa nini kushinikiza nyuma juu ya INT? Kuwashawishi mimi kutokana na hili. Nini kijinga kuhusu INT, wazo langu? Naam. Watazamaji: Kuchukua kumbukumbu zaidi. DAVID Malan: Kuchukua kumbukumbu zaidi. Ka nne, lakini wewe ni kupendekeza msimbo kama ka tano au mtu alikuwa kama CHAR, ambayo anahisi kama eh, hiyo si kweli kesi. Naam, furaha hadithi. Miaka iliyopita, wakati Nilikuwa kutumia Microsoft Outlook kwa email yangu, Mimi hatimaye alitaka kubadili Gmail. Na hivyo, mimi nje wote wa yangu mawasiliano kutoka Outlook kama jalada la CSV. Comma kutengwa maadili, ambayo tu maana mimi alikuwa na majina yangu yote marafiki na mwisho majina na namba za simu na codes zip na yote hayo. Na kisha mimi alifanya makosa ya ufunguzi it up katika Excel, ambayo ni mpango spreadsheet kwamba anaelewa files CSV kama tumeona. Lakini basi, ni lazima kuwa na kugonga, kama, Amri au Kudhibiti S katika hatua moja. Na Excel inaonekana wakati alikuwa kipengele ambapo wakati wowote yake aliona idadi, ni walijaribu kuwa na manufaa. Na kama idadi hiyo ilianza na zeros, ingekuwa tu kujikwamua yao. Kwa nini hakuna haja ya kuongoza zeros juu ya integers? Wao ni maana, hesabu. Wao siyo maana katika mfumo wa Marekani Postal. Hivyo, nimepata kwa miaka, hadi leo hii, mimi bado kuwa na marafiki kwamba wakati nadra kesi hiyo nahitaji mtu ni kushughulikia siku hizi, Mimi itabidi bado kuona kwamba mimi na rafiki katika Cambridge, Massachusetts, 2138. Na ni annoying kama wewe ni kujaribu aina ya programmatically kuzalisha bahasha au tu hata nukta chini. Na hiyo ndiyo sababu ya sababu hii, Nilichagua data vibaya aina. Hivyo, I love wazo lako. Hebu kutumia uwanja CHAR. Wahusika tano, isipokuwa kuna kesi kona. Kama bado kutuma barua pepe, wakati mwingine zip codes siku hizi, wao uko, kama, pamoja na minne. Hivyo, tunahitaji hyphen na kisha tunahitaji namba nne zaidi. Hivyo kwa kuwa waaminifu, inaweza kwenda njia nyingi tofauti. Kwa sasa, mimi nina kwenda kuweka ni rahisi na mimi nina tu kwenda kusema kwamba ni tano CHAR thamani na tuko kwenda ruka dash zima pamoja na nne. Lakini haya ni aina ya ujanja. Na unaweza kufikiria matatizo kama hayo kutokana na namba ya simu au maeneo mengine. Na sasa, hii ni kweli barabara wajinga kwenda chini. Tuseme wote mimi Rob na Hana na na Maria na [? Davon?] Na Andy na wengine juu ya wafanyakazi wote wanaishi katika Cambridge, Massachusetts, 02138. Hii kweli kujisikia kijinga kwamba mimi nina kuongeza kwa watumiaji yangu meza, mji, jimbo, na zip. Kwa nini? Watazamaji: [inaudible] DAVID Malan: Sema tena? Watazamaji: [inaudible] DAVID Malan: Wao ni siku zote kwenda pamoja, sawa? Wakati ni zamu nje, sisi tukidhani hii ilikuwa ni kesi mpaka sisi vyema msako Marekani nzima, na zinageuka kuwa kuna ni baadhi kutokwenda ambapo miji mbalimbali na Zip huo, ambayo ni weird. Lakini, kama sisi inasema kwa sasa 02138 Daima Cambridge, Massachusetts, kwa nini katika dunia gani unaweza kuhifadhi katika Mbegu yako Cambridge na MA na 02138 kwa ajili yangu na kwa Hana na kwa Rob na kwa [? Davon?] Na kwa watu wengine wanaoishi hapa katika Cambridge, ni kikamilifu redundant. Tunapaswa kupata mbali na tu kuhifadhi nini? Tu msimbo. Lakini basi, kama sisi kuhifadhi tu msimbo, sijui wanataka, pengine, kwa ajili ya tovuti yangu kujua ambapo 02138 ni. Kwa hiyo, mimi haja meza nyingine. Na hiyo ni sawa. Na kwa kweli, hii ni moja ya michakato ya mpango wa kubuni meza kwamba utasikia kufanya katika PSet7 pamoja ambapo unataka sababu nje data ya kawaida. Tu kama tumekuwa factoring nje kificho kawaida na factoring nje ya kawaida mitindo kutoka CSS, hapa pia katika orodha, kama mimi tu haja 02138 kwa kipekee kubaini mji wa mtu, si kuhifadhi Cambridge, Misa kwa kila mtumiaji darn katika meza yako. Badala yake, kuwa na meza tofauti inayoitwa Zips kwamba wanapaswa kuwa na kile nguzo? Pengine shamba ID, tu kwa sababu, kwa kanuni tunazungumzia sasa. Pengine shamba zip kwa 02138. Na kisha pengine kile nguzo mengine? Mji na serikali, lakini tu moja mstari kwa 02138, safu moja kwa 02139, safu moja kwa 90,210. Na kwamba ni halisi namba zote zip najua. Hivyo sasa, unaweza kufanya nini? Hii ni tatizo, kwa sababu sasa mimi nimepata meza mbili. Hivyo, watumiaji yangu ni zaidi juu hapa, lakini mji hali zao ni maelezo hapa. Hivyo, ni zamu nje na SQL, kuna kweli njia kujiunga maelezo, na utaona hii katika pset. Lakini zinageuka unaweza kufanya kitu kama hiki. Nyota SELECT kutoka watumiaji, JOIN zips ILIYO watumiaji dot zip sawa na zips dot zip. Ambayo ni wordy kidogo, admittedly, lakini hii tu ina maana kuchagua kila kitu kutoka mchakato wa kuchukua watumiaji yangu meza na zips yangu meza. Kujiunga nao kwenye moja uwanja wao katika safu. Hivyo, literally kufanya kitu kama hii, na kunipa nyuma mpya meza muda hiyo ni pana, hiyo ni kubwa zaidi, ambayo ina yote ya nguzo kutoka wote wawili. Na kwamba, kwa urahisi kabisa, itakuwa syntax kwa ajili ya kufanya kitu kama hiki. Kwa hiyo, kuna hii mbele, lakini kuna kwenda kuwa maamuzi mengine kubuni utasikia una kufanya, si tu kwa bahati lakini pia mbio katika changamoto. Kwa kweli, kuna changamoto katika yoyote kubuni orodha ambapo wakati mwingine watu wawili kutaka kupata safu hiyo ya orodha meza. Kwa hiyo, hii ni kitu ambacho tutaweza kukutana katika PSet7 pia. Lakini nilifikiri ningependa tuangalie moja mashambulizi kwamba inawezekana katika SQL. Je, ni baadhi ya matatizo ambayo yanaweza kutokea? Hivyo, utasikia kukutana hii katika PSet7. Na sisi kukuambia wazi kile coding ufumbuzi kwa tatizo hili ni. Lakini kama wewe kuchukua ngazi ya darasa juu, hasa katika mifumo ya uendeshaji, wewe ni kwenda kukutana Suala la atomicity, tatizo la kujaribu kufanya mambo mbalimbali wote kwa mara moja bila usumbufu. Na mimi nilifikiri d kuanzisha hii wazo kwa ajili ya PSet7 kwa mfano kwamba mimi kujifunza mimi mwenyewe katika Margo Mifumo ya uendeshaji Seltzer ya CS164 tabaka la miaka iliyopita. Tuseme kwamba una mmoja wa haya Dorm fridges katika Dorm chumba yako au nyumba, na una penchant halisi kwa maziwa. Na hivyo, wewe kuja nyumbani kutoka madarasa siku moja, wewe kufungua friji. Loo, damn it. Hakuna maziwa katika hali tete. Hivyo, wewe karibu hali tete, kufuli mlango, kufuli Dorm wako, kutembea kuzunguka kona kwa CVS, kupata katika mstari, na kuanza kuangalia nje kwa baadhi ya maziwa. Na ni kwenda kuchukua muda, kwa sababu wale damn ubinafsi Checkout counters kuchukua milele kutumia anyway. Hivyo wakati huo huo, roommate yako anakuja nyumbani. Yeye au yeye kweli anapenda maziwa pia. Wao kuja katika chumba Dorm, kufungua friji, loo, darn hilo. Hakuna maziwa zaidi. Hivyo, yeye au yeye pia huenda kuzunguka kona. Lakini sasa, kwa vile kuna kama viwili au CVSes mitatu au minne karibu, wao kutokea kwa kwenda kwa moja ya ndio tofauti katika mraba. Dakika na hivyo kwa sasa, chache baadaye, nyote wawili kuja nyumbani na ugh, mbaya zaidi tatizo milele. Sasa una maziwa mengi mno kwa sababu ni kwenda sour. Na wewe kama maziwa, lakini wewe si kweli kama maziwa. Hivyo sasa, hii ilikuwa ghali makosa kwa sababu wote wewe uamuzi kulingana na hali ya baadhi ya kutofautiana kwamba ilikuwa katika mchakato wa kuwa iliyopita na wewe, kuanzisha ya kwenda kupata maziwa. Hivyo, ni nini labda binadamu ufumbuzi wa tatizo hilo? Watazamaji: [inaudible] DAVID Malan: Acha kumbuka, sawa? Daima kuondoka kumbuka, kama wewe ni ukoo na kwamba show. Ndiyo, kuna mambo mawili ya kwetu. Hivyo, daima kuondoka kumbuka, au halisi kufuli jokofu na baadhi ya aina ya kufuli au kitu juu juu kama hicho. Lakini hiyo ni kweli kwenda kuwa Tatizo muhimu kwa kubuni Mbegu, hasa wakati unaweza kuwa browsers mbalimbali, Laptops nyingi, watumiaji mbalimbali wote kujaribu update habari mara moja. Maelezo hasa nyeti kama taarifa za fedha, ambapo pamoja na hisa internet tovuti kama wewe utakuwa kujenga, nini kama unataka kuangalia fedha kiasi gani una na kisha kama una kutosha, kununua baadhi ya hisa? Lakini nini kama mtu mwingine ambaye ina akaunti ya pamoja na wewe ni wakati huo huo kujaribu kununua baadhi ya hisa? Hivyo, yeye au yeye ni kuangalia usawa akaunti, nyote wawili kupata nyuma sawa jibu, hakuna maziwa. Au wote wawili wa kupata nyuma jibu, una $ 100 katika akaunti. Wote wewe kujaribu kufanya uamuzi kununua sehemu moja ya kampuni baadhi hisa. Na sasa, nini kitatokea? Una hisa mbili? Wewe huna hisa? Matatizo kama hayo yanaweza kutokea. Hivyo, tutaweza kukutana huo. SQL mashambulizi sindano, nashiriki, ni kitu tutaweza kukusaidia na, lakini haya ni atrociously kawaida siku hizi bado. Kwa hiyo, huu ni mfano tu. Mimi kufanya hakuna madai kwamba Harvard PIN mfumo ni kuathirika zaidi na mashambulizi fulani. Tumejaribu. Lakini, unajua kwamba sisi na uwanja kama hii. Na Yale ya Net ID ina sawa kuangalia screen siku hizi. Na ni zamu nje, kwamba labda Mfumo PIN ni kutekelezwa katika PHP. Na kama ni were-- ni not-- wao anaweza kuwa kificho kwamba inaonekana kama hii. Wana vigezo mbili. Nipe username na password kutoka katika wadhifa super variable kimataifa kwamba kuongelea awali. Labda Harvard ina swala kama nyota SELECT kutoka watumiaji ambapo jina la mtumiaji sawa na kwamba na neno la siri ni sawa na kwamba. Na taarifa kwamba mimi nina tu kuziba katika kutumia curly brace nukuu kutoka nyingine siku, ambayo ina maana kuziba tu katika thamani hapa. Mimi si kutumia swali chapa mbinu. Sina pili wowote au tatu hoja. Mimi tu halisi ujenzi kamba mwenyewe. Tatizo, ingawa, ni kwamba kama mtu kama scroob, ambayo ni kumbukumbu ya filamu, magogo katika na kitu kama hii, na nimekuwa kuondolewa nukta kwamba kwa kawaida kuficha nywila, nini kama yeye ni hasa kwa makusudi na neno la siri yake labda ni 12,345, per movie inayoitwa "Spaceballs," lakini yeye kina aina kunukuu moja baada ya tano, kisha literally neno au katika nafasi, na kisha kunukuu, unquote moja sawa na kunukuu moja, lakini ilani yeye kuachwa nini? Yeye liliondolewa kunukuu juu ya haki na yeye kuachwa kunukuu upande wa kushoto. Kwa sababu kama mshambulizi hii dhulma scroob ya ni kwamba watu ambao aliandika huu kificho PHP hazikuwa mkali, labda wao tu na baadhi ya single ananukuu kuzunguka kitabu ya kutofautiana katika braces curly? Na hivyo labda, hakuweza aina ya kukamilisha fikra zao kwa ajili yao, lakini kwa njia ambayo inaenda awe hacked katika mfumo PIN. Kwa maneno mengine, tuseme kwamba hii ni kanuni na sisi sasa kuziba katika kile scroob typed. Na ni nyekundu, kwa sababu ni mbaya. Na asilia msingi ni kile typed katika, scroob inaweza hila server Harvard ndani ya ujenzi swala SQL kamba kwamba inaonekana kama hii. Nywila ni sawa na 12,345 au moja sawa na mtu. Matokeo yake ni kwamba, mantiki, ni kwamba hii itakuwa kuingia scroob katika kama password yake ni 12345 au kama moja sawa moja, ambayo ni ya kweli kweli daima, ambayo ina maana scroob daima anapata katika. Na hivyo, njia ya kurekebisha hivyo, kama katika mengi ya matukio, itakuwa kuandika zaidi kujitetea. Kutumia kitu kama yetu swala kazi halisi, ambayo utaona katika PSet7, ambapo sisi kuziba katika kitu kama swali alama hapa. Na uzuri wa swala kazi ambayo sisi kukupa ni inatetea dhidi ya hawa kinachojulikana SQL mashambulizi sindano, ambapo mtu ni tricking kanuni yako katika sindano kificho yake mwenyewe SQL. Kwa sababu gani kazi swala sisi kutoa wewe kweli kufanya, kama matumizi ya alama swali syntax na pili na wa tatu hoja hapa, ni nini alifanya hivyo kuongeza pembejeo kwamba mtumiaji zinazotolewa? Wale backslash ananukuu. Kwa hiyo, epuka yoyote uwezekano hatari wahusika. Hii inaonekana weird sasa, lakini siyo mazingira magumu kwa sababu hana mabadiliko mantiki tena kwa sababu neno la siri kwamba wote ni sasa kunukuu moja si kwamba, kwa kweli, neno la siri scroob ya. Hivyo, kumekuwa na baadhi utani kuhusu hili kwa miaka mingi. Hivyo, hii ilikuwa picha zilizochukuliwa baadhi geek katika kura ya maegesho ambapo unaweza kujua kwamba baadhi ya miji na mataifa kujaribu Scan leseni yako sahani kwa muswada wewe au kwa tiketi ya wewe kama wewe kwenda kupitia bila, kama, E-Z Pass kitu. Kwa hiyo, mtu huyu kudhaniwa kwamba labda watu kuandika mfumo E-Z Pass hazikuwa mkali, na labda wao tu concatenated pamoja kamba, hivyo kuwa yeye hakuweza kwa nia mbaya si tu kukamilisha mawazo yao, lakini kwa kweli kutekeleza amri mbaya, ambayo tumekuwa haikutajwa bado, lakini pengine unaweza nadhani. Kwamba zaidi ya kufuta na kuingiza na update na kuchagua, pia kuna keyword aitwaye kushuka, ambayo literally deletes kila kitu katika orodha, ambayo ni mbaya zaidi hasa. Tunaweza kuvuta hii ikiwa ni kidogo mgumu kuona. Hii, sasa, ni cartoon maarufu hiyo ni ajabu wajanja sasa na ya kueleweka. [Kicheko] Yeah, baridi. Aina ya geeking nje. Hivyo haya, basi, ni SQL sindano mashambulizi. Na wao uko hivyo rahisi kuepuka kwa kutumia kificho haki au maktaba ya haki. Na utaona katika PSet7, hiyo ni nini sisi kukupa kazi swala. Hivyo, wanandoa wa Teasers kwamba tulidhani tunatarajia kukupa hapa katika yetu dakika zilizobaki pamoja. Hivyo, kama wewe kumbuka kutoka wiki sifuri, sisi ilianzisha hizi mbili balbu mwanga ambayo ni nzuri, si tu kwa sababu wao uko mzuri na ni rangi, lakini kwa sababu wanaunga mkono jambo aitwaye API, Maombi Programming Interface Na katika CS50 hivi sasa, tumekuwa wengi wao wakiwa kulenga GET na POST, lakini zinageuka kuna vitendo vingine HTTP kama PUT. Na kwa kweli, hii ilikuwa slide kutoka wiki sifuri ambapo kama wewe kuandika kanuni anaye la PSet6 ombi HTTP kwamba Inaonekana kama hii kwa chunk hii ya maandishi chini, iitwayo JSON, au JavaScript Object nukuu kwamba tutaweza majadiliano juu ya wiki ijayo, unaweza kurejea kwenye au kuzima au mabadiliko rangi ya taa kama hizo. Hivyo kama CS50 pia ina pamoja na baadhi ya balbu wale mwanga hapa katika New Haven kama Ningependa kukopa nao kwa ajili ya miradi ya mwisho, pia baadhi ya Microsoft Bendi, ambayo ni kama lindo kwamba kuvaa kuzunguka mkono wako kwamba vile vile na API ili uweze Unaweza kuandika programu yako mwenyewe kwa ajili yao. Tuna akaunti na Apple iOS kificho hivyo kwamba kama una Apple Watch au iPhone au iPad au iPod, unaweza kuandika kificho kwamba kweli anaendesha juu ya hayo. Tuna kundi zima ya Arduinos, ambayo ni vidogo kompyuta ndogo bila kesi, kimsingi, kwamba unaweza kuunganisha kupitia USB, kawaida kwa Mac yako mwenyewe au PC, kuandika kificho kwamba anaendesha juu ya hizi kimwili vifaa kwamba mara nyingi kuwa sensorer juu yao hivyo unaweza kuingiliana na ulimwengu wa kweli. Tuna kundi zima ya vifaa Leap Motion, ambayo ni vifaa USB kwa Macs na PC, hapa na tena, katika New Haven. Na kama wewe kuungana kwa Mac yako, unaweza kweli kudhibiti kompyuta yako kwa kuandika programu kwamba kupitia mihimili infrared, takwimu za nje ambapo mikono yako binadamu ni, hata bila kugusa keyboard yako. Sisi mawazo tunatarajia kushiriki haraka glimpse ya jambo hilo, kwa mfano. [Music kucheza] Hivyo, tuna mzima rundo la mambo hayo, pia, aitwaye Myo mkono bendi ambayo kuweka juu ya forearm yako na kisha unaweza kudhibiti halisi dunia au ulimwengu virtual kama hii. [Music kucheza] Au, sisi pia kuwa baadhi Google Mbao, ambayo ni halisi, kama, kadi sanduku unaweza kuweka juu yako uso, lakini slide katika simu yako ndani yake ili kuweka glasi ya yako simu kweli karibu na macho yako. Na Google Kadi ni pretty nafuu katika $ 10 au $ 20. Na ina lenses kidogo kuwa kidogo mbali kuhama picha kwenye screen kwa binadamu yako macho ili kukupa hisia ya kina ili kwa kweli kuwa 3D mazingira mbele yenu. Sisi pia kuwa baadhi Samsung Gear, ambayo ni ghali zaidi toleo la hii, lakini ambazo zinaweza vile vile kuteleza katika Android simu na kukupa udanganyifu of-- au kutoa uzoefu ya ukweli virtual. Na katika dakika ya mwisho wetu wawili, sisi mawazo tunatarajia kujaribu kufanya hivyo. Kama naweza mradi nini Colton ina hapa tu kwa whet hamu yako, basi mimi kwenda mbele na kutupa up kwenye screen kubwa hapa. Napenda kuua taa. Colton, je, unataka kwenda mbele na kuweka juu ya kiini yako kwa muda na kuja juu juu kwa katikati ya hatua? Na je, unataka project-- hii ni nini anaona Colton. Sasa, Wi-Fi katika hapa ni si hivyo nguvu kwa kifaa hiki kwamba hii ni super kulazimisha, lakini Colton ni halisi katika hii Futuristic mahali kichawi. Yeye tu anaona picha moja. Wewe ni kuona jicho lake la kushoto na kulia kwamba ubongo wake ni wakitengeneza pamoja katika pande tatu mazingira kifudifudi. Yeye tu kuchaguliwa menu chaguo hapa. Na hivyo tena, yeye amevaa headset hii na Samsung simu juu yake hiyo ni wirelessly kinachoonyesha kwa uendeshaji yetu. Sasa wewe ni juu ya Mars, nadhani? COLTON: Nadhani hivyo. Sina hakika [inaudible]. [Kicheko] DAVID Malan: Zinageuka Mechi ina menus haya. COLTON: [inaudible] baadhi ya baridi maeneo kama tunataka kwenda to-- DAVID Malan: wapi tunataka kwenda? COLTON: [inaudible] DAVID Malan: Na hebu angalia ambapo Colton ya kuchukua nasi sasa. COLTON: [inaudible] DAVID Malan: Hivyo, kuna mengi maeneo mbalimbali unaweza kuchukua mwenyewe. Kuna FAPIs kupitia ambayo unaweza kuandika michezo au mwingiliano kwamba kukimbia, hatimaye, kwenye simu. Hivyo, wewe kweli tu kuandika programu ya simu. Lakini, shukrani kwa programu na graphics uwezo, sasa Colton ni katika hii kidogo kidogo Cottage. Na katika hatari ya balaa sisi wenyewe, Colton na mimi itabidi fimbo karibu kwa wakati mwishoni mwa tabaka la hapa leo kama Ningependa kuja na kucheza. Na tutaweza kuwaleta nyuma wiki ijayo pia. Bila zaidi, ado hiyo ni kwa ajili ya leo. Tutaweza kuona wewe wiki ijayo. [Music - RAGGA TWINS, "BAD MAN"]