[Muzikos grojimo] DAVID Malan: Gerai, tai yra CS50. Tai yra aštuoni savaitės pabaigoje. Ir šiandien, mes pradedame užpildyti kai kurių gabalų kai jis ateina į pastato dalykų internete. Taigi, priminti, kad pirmadienį mes praleidžiame daug daugiau laiko PHP, kuris yra ši dinamika programavimo kalba, kuri leidžia mums išėjimą, be kita dalykų, HTML ir kitas toks turinys kad mes norime matyti. Bet mes ne tikrai atrodė, kaip mes ketiname saugoti bet kokią informaciją. Iš tiesų, beveik, bet kad super Įdomios svetainės lankotės šiandien turėti tam tikrą bazę natūra ant nugaros pabaigoje, tiesa? "Facebook" tikrai saugo daug duomenų apie mus visus ir "Gmail" parduotuvėse visiems Jūsų el. Ir taip, ir daugelis kitų svetainių yra ne tik Statiškas Turinys tai informacinėje. Tai tikrai dinamiškas tam tikru būdu. Jūs pateikiate įėjimas, ji atnaujina dėl kitų žmonių puslapiai. Jūs gaunate pranešimus, siųsti pranešimai, ir kt. Taigi, šiandien mes atidžiau ne projekto pagrindus kad jums pasinerti į šalia savaitę, CS50 Finansai, kuri iš tikrųjų teks jums sukurti kažkas ne C, o PHP. Svetainėje, kuri atrodo tiek kažkas panašaus į tai kuri leidžia pirkti ir parduoti atsargos, kurie iš tikrųjų ketina pasitelkti realiu laiku Akcijų duomenys iš Yahoo Finance. Ir taip galiausiai, jūs turėsite iliuzija sau ir vartotojams kad jūs iš tikrųjų perka ir parduoda atsargos ir gauti beveik realiu laiku atnaujinimai, valdyti portfelis, kurie visi ketina reikalauti, kurių, galiausiai, dalis vartotojų, duomenų bazę. Taigi, savo žodžiais, ypač jei esate ne Super susipažinę su kompiuteriu mokslo ar duomenų bazės, kas jūs žinote, duomenų bazę, kad būtų dabar, kad nontechnical sąlygomis? Kas tai? Kaip jūs jį apibūdinti į kambarioku ar draugui? Auditorija: [nesigirdi] informaciją [nesigirdi] DAVID Malan: Taigi, informacijos sąrašas, arba store-- informacijos sąrašą kad jūs galbūt norėsite laikyti apie kažką, kaip vartotojas. Ir ką vartotojai turi su jais? Jei esate "Facebook" ar vartotojo "Gmail", kas yra savybės kad visi mūsų vartotojai? Kaip, kas gali būti kai kurie iš stulpeliai skaičiuoklės, į kuriuos mes užsiminė paskutinį kartą? Nes vėl, jūs galite manau, duomenų bazės tikrai kaip išgalvotas Excel failo arba Google Skaičiuoklės ar "Apple" numeriai failą. Taigi, ką manote apie kai manote, kad vartotojas? Ką jie turi? Kas tai? Auditorija: pavadinimas. DAVID Malan: pavadinimas. Taigi, jei vardas, kaip ir David Malan būtų iš tam tikru vartotojo vardą. Ką dar veikia naudotojas turi? AUDITORIJA: an ID. DAVID Malan: an ID. Taigi, kaip tapatybės dokumento numeris, kaip jūsų Harvardo ID arba jūsų Jeilio Grynasis ID ar pan. Ką dar gali naudotojas turi? AUDITORIJA: Slaptažodis. DAVID Malan: slaptažodį, o gal Adresas, gal telefono numerį, gal elektroninio pašto adresą. Taigi, ten kekių srityse ir tai gali rūšiuoti nebevaldomi greitai, kaip greitai, kaip jūs pradėti suprasdamas, OH, tegul saugo šią ir tegul laikyti šį bei tą. Bet kaip mes iš tikrųjų tai padaryti? Taigi dar kartą, psichikos modelis turėti šiandien, kaip mes pasinerti į tikrąjį SQL, Struktūrinių užklausų kalba, yra duomenų, kad atrodo taip. Tai tik eilutes ir stulpelius. Ir jūs galite įsivaizduoti "Google" skaičiuoklės arba bet kuri kita programų skaičius. Bet kas svarbiausia apie MySQL, kuri yra duomenų bazės programinė įranga mes ketiname naudoti, laisvai nustatytas atvirai available-- Facebook naudojimo IT ir bet kita websites-- skaičius duomenų bazė saugo dalykus relationally. Ir reliacinės duomenų bazės tiesiog reiškia viena, kad pažodžiui saugo savo duomenų eilučių ir stulpelių. Tai taip paprasta, kaip kad. Taigi, net kažkas panašaus į "Oracle", kad Jūs galbūt jau apskritai girdėję yra reliacinės duomenų bazės. Ir po gaubtu, ją parduotuvės duomenis eilučių ir stulpelių. Ir Oracle įkrauna Jums daug pinigų, kaip tai padaryti, o MySQL mokesčių tu nieko už tą patį. Taigi, "SQL ketina duoti mums bent keturi operacijos. Gebėjimas pasirinkti duomenis, kaip skaitytą duomenys, įterpti, ištrinti, atnaujinti duomenis. Kitaip tariant, jie yra tikrai keturi pagrindiniai veiksmai kad ketina leisti mums pakeisti Daiktai tose eilučių ir stulpelių. Šis įrankis, kad mes naudosime šiandien ypač išmokti SQL ir žaisti su juo vėl vadinamas PHP MyAdmin. Tai internetinė priemonė. Iš viso sutapimas, kad tai parašyta PHP. Bet jis ketina duoti mums grafinę vartotojo sąsaja, kad galėtume iš tikrųjų sukurti šias eilutes ir stulpelius ir tada pasikalbėti su jais per kodą. Taigi, tegul dabar pradeda kas, manau, yra atvirai rūšies įdomus procesas pastato atgal pabaigoje interneto svetainėse, dalys, vartotojai negali pamatyti, bet tikrai tikrai rūpinasi, nes tai gana duomenys vyksta. Taigi, panašus į C, ir Šiek tiek mažiau kaip PHP, SQL arba duomenų bazę, kuri palaiko SQL yra bent šie duomenų tipai ir kekių kitiems. CHAR, VARCHAR, INT, bigint, Kablelio, ir DATETIME. Ir ten visai krūva kitų funkcijų, bet tegul tai padaryti būdas faktinio pavyzdyje. Aš ruošiuosi eiti į CS50 IDE Tais atvejais, kai iš anksto, aš prisijungęs ir aš taip pat aplankė URL Šis įrankis vadinamas PHP MyAdmin. Ir problema nustatyti septyni, mes pasakyti jums tiksliai, kaip patekti į šią sąsają taip pat. Viršutiniame kairiajame kampe, pastebėti ji sako paskaitą. Ir tai tiesiog reiškia, kad iš anksto, aš sukūriau tuščia duomenų bazė vadinama paskaita kad neturi į jį skaičiuoklės dar. Nėra jokių eilutes ir stulpelius. Kadangi pirmasis dalykas mes ketiname daryti yra pradėti sukurti lentelę kad ketina laikyti mūsų vartotojams. Taigi, tiesiog per čia į dešinę, aš norėčiau papasakoti duomenų bazę Noriu lentelė vadinama vartotojams. Taigi, tai yra, kaip failo, kad aš norite išsaugoti visus savo duomenis. Ir kiek stulpeliai? Na, tegul keep it simple dabar. Aš tik noriu laikyti tarsi vardas ir už naudotojo vardą. Pradėsime mažas. Taigi, aš noriu du stulpelius iš viso. Ir aš ruošiuosi eiti į priekį ir spustelėkite Vykdyti. Ir tada, ir tai kolonos, ką aš ruošiuosi į do-- jei tai internete cooperates-- visą teisę, todėl mes ketiname išbandyti, kad dar kartą. Aš ruošiuosi sukurti lentelę, pavadintą Vartotojai su dviem stulpeliais, spustelėkite Eiti, Gerai. Dabar mes turime tai tikrai greitai. Ačiū, labai gerai padaryta. Gerai, Taigi, ką mes norime Šie stulpeliai turi būti vadinama? Taigi, vienas ketina būti vadinamas Nick. Taigi, visi matau here-- ir sąsaja atvirai gauna šiek tiek negraži, galų gale, Kai pradėsite rašyti visose šiais duomenimis. Bet kas malonu yra tai, kad rūšiuoti Paradoksalu, aš sukurti stulpelius, bet įrankis turi kvailai nustatyta juos eilėmis taip, kad aš galiu sukonfigūruoti šiuos stulpelius. Taigi, ten du ruošiniai ten pagal vardą. Ir vienas iš šių sričių Aš noriu vadinamas vardu, o kitas lauke noriu skambinti, vardą. Ir dabar aš turiu pasirinkti duomenų tipai šių dalykų. Taigi, kadangi Excel ir "Google" skaičiuoklės, jei norite stulpelį, galite tiesiog tiesiog įveskite vardą arba vartotojo vardą, paspauskite Enter. Gal jūs galite padaryti jį paryškinti veido tik aiškumo, bet tai viskas. Jūs neturite nurodėte tipų stulpelius. Dabar "Google" skaičiuoklių ar Excel, jums gali nurodyti, kaip duomenys yra suteiktos. Jūs galite eiti į meniu Formatas, ir jūs galite nurodyti parodyti šią panašaus dolerio ženklas, rodo, kad tai, kaip slankiojo kablelio vertės. Taigi, jis panašus į dvasia kad tai, ką mes ruošiamės padaryti, bet tai iš tikrųjų vyksta priversti duomenys turi būti tam tikro tipo. Dabar, nors prieš akimirką aš sakė ten tik keletas duomenų tipai, ten tikrai visai daug, ir jie įvairaus laipsnio specifika. Ir kaip žemę, jūs netgi galite padaryti išgalvotas dalykų kaip saugojimo geometrija viduje bazę. Galite išsaugoti dalykus kaip GPS koordinatės ir tikrai rasite, matematiškai, Taškai, kurie yra arti kitiems. Tačiau mes ketiname išlaikyti šią super paprasta ir eiti į čia visus vadinamieji string tipai. Taigi, čia yra sąrašas visa krūva variantų. CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. Ir tai tipo absoliuti. Ir, deja, šiek tiek Paradoksalu C, char yra tikrai ne char. Jei nurodysite duomenų bazėje kad jūsų duomenų tipas yra CHAR, tai reiškia, kad taip, tai CHAR, bet tai vienas arba daugiau simbolių. Ir jūs turite nurodyti kiek simbolių norite. Taigi, kas tipiška ilgis vardą? Ar yra riba paprastai? Auditorija: [nesigirdi] DAVID Malan: 16 gal? Kažkas panašaus. Žinote, atgal į dieną, jis naudojamas aštuoni. Kartais tai 16, kartais tai dar daugiau nei tai. Ir taip, tai nėra reiškia duoti man vieną CHAR. Tai reiškia, kad aš turiu nurodyti laukų ilgį, ir dabar galiu pasakyti kažką panašaus į 16. Ir ten ne čia prekyba. Taigi, matysime per akimirką kad tai reiškia, viena, kiekvienas vardas turi būti 16 simbolių. Bet palauk, M-A-L-A-N. Jei tai my username ir aš naudoju tik penki, ką siūlytumėte, kad duomenų bazė padaryti dėl kitų 11 simbolių, kad Aš saugomos erdvę? Ką tu darytum? Auditorija: [nesigirdi] DAVID Malan: Taip, tik padaryti juos visus null. Padaryti juos tarpų. Bet tikriausiai niekinis, todėl daug backslash nuliais. Taigi, viena vertus, mes su dabar pasistengėme, kad my username gali būti ne daugiau kaip 16 simbolių. Ir blogoji pusė, kuri yra kad jei aš turėjo tikrai ilgą pavadinimą arba norėjo tikrai ilgai naudotojo vardą, kaip kai kurie iš jūsų vaikinai gali turėti toje kolegijoje ar ne Yale.edu, jūs negalite turėti vieną. Ir taip iš tiesų, jei jūs kada registruotas svetainės ir gausite rėkė ne sakydamas Jūsų slaptažodis yra per ilgas arba jūsų vartotojo vardas yra per ilgas, tai tiesiog, nes programuotojas, kai konfigūruoti jo ar jos duomenų bazę, nusprendė, kad šioje srityje būti ne ilgesnis nei šio ilgio. Gerai, tai kas, jei mes pereisime prie įvardyti? Ar ilgai Tipiškas Žmogaus vardas bus? Kiek simbolių, 16? Spėju, mes galime rasti žmogų, šiame kambaryje kur jo ar jos pirmos plius paskutinio vardas yra ilgesnis nei 16 simbolių. Taigi, kas geriau nei, kad 17? 18? 25? Didesnis? 30? Auditorija: [nesigirdi] DAVID Malan: 5000, Oh My God. Taigi, tai tikriausiai padorus viršutinė riba, sakysime. Ir čia mes natūra turi kad teismo sprendimas skambutį. Kaip, nėra teisingas atsakymas čia. Begalinė yra ne visai įmanoma, nes mes galų gale ketina have-- mes ketina paleisti iš atminties. Taigi, mes turime padaryti Sprendimas skambutis tam tikru momentu. Labai dažnas būtų gali būti, pavyzdžiui, į use-- ir leiskite man nurodyti CHAR čia kaip before-- 255 buvo pažodžiui viršutinė riba dėl šio duomenų bazės programinę įrangą prieš daug metų. Ir taip, iš žmonių daug būtų tiesiog pasakyti, gerai. 255 yra riba. Leiskite tiesiog naudokite didžiausias. Ir tai yra gana juokinga. Kaip, jei jūs įvedėte kažkas yra vardas 200 plius simbolių, kad šiek tiek juokinga. Tačiau atminkite, kad ASCII nėra vienintelė sistema simbolių. Ir taip, ypač daug Azijos kalbomis ten, kur personažai mes negalime Express klaviatūros, pavyzdžiui, mano JAV klaviatūra, kai kurie simboliai faktiškai užtrukti iki 16 bitų vietoj aštuonių bitų. Ir taip, tai iš tiesų yra ne visi, kad neprotinga kad mums reikia daugiau vietos, jei norime, kad tilptų didesni simbolių nei pačiame JAV centric tie mes linkę diskutuoti. Taigi, mes turime kai viršutinė riba. Aš nežinau, kas geriausia iš jų yra, bet 255 paprastai yra paplitusi. 25 jaučiasi mažas. 16, 32 jaučiasi mažas. Norėčiau klysti ant šono kažko daugiau. Bet ten kompromisą, kaip visada. Kas yra, ko gero, akivaizdu, kompromisą rezervuoti 255 simbolių kad kiekvienas vardas mano duomenų bazėje? Auditorija: [nesigirdi] DAVID Malan: Kas tai? Auditorija: [nesigirdi] DAVID Malan: Tai daug atminties, tiesa? M-A-L-A-N. Aš tiesiog švaistomi 250 simbolių tiesiog laikyti savo vardą gintis, tik tuo atveju kažkas klasėje yra tikrai ilgą pavadinimą. Tai atrodo kaip nepagrįsto kompromisas. Taigi, it turns out, kad SQL, Ši duomenų bazė kalba, iš tikrųjų palaiko kažką vadinamas VARCHAR, arba kintamo CHAR. Ir tai yra rūšies gražus, kad šis Leidžia nustatyti ne fiksuotas plotis, o, kintamo pločio. Ir dar Konkrečiai, didžiausias plotis srityje. Taigi, tai reiškia, kad vardas gali būti ne daugiau kaip 250 ženklų, bet tai tikrai gali būti mažiau. Ir bazė bus protingas. Jei įdėti į M-A-L-A-N, tai tik ketina naudoti penki, gal šešis baitų kaip sekantį niekinis pobūdis, o ne išleisti papildomas 249 arba 250 baitų be reikalo. Taigi, tai atrodo turėčiau pradėjo su šią istoriją. Bet visada yra kompromisas. Taigi, viena vertus, vartotojo vardą aš nurodyta, kad bus sunku koduojami 16 metų, o gal tai buvo ne teisė skambutis, gal jis yra, bet kodėl gi ne naudoti VARCHARs už viską? Ji egzistuoja priežasties. Kodėl gi ne naudoti VARCHARs kiekvienam srityje kurio ilgis jums nereikia žinoti iš anksto jei ji atrodo puikus dalykas, tiesa? Naudokite tik vietos kiek jums reikia iki šios ribos? Auditorija: lėčiau. DAVID Malan: Speller? Auditorija: Leidžia lėčiau? DAVID Malan: O, tai lėčiau. Geras, tai beveik visada atsakymas, tiesą sakant. Kaip, kas yra kompromisas? Tai tiek kainuoja daugiau erdvės ar tai kainuoja daugiau laiko. Taigi, šiuo atveju, tai gali būti lėtesnis. Kodėl? Auditorija: [nesigirdi] Nustatant [nesigirdi]. DAVID Malan: Geras. Taigi, jums gali prisiminti net iš PSED5, žaisti su savo požiūrio į žodyną, jei turite paskirstyti atmintį dinamiškai arba laikyti auga buferį, kad iš tikrųjų gali būti lėtas. Jei jūs turite skambinti malloc po kapotu, o gal kad tai, ką MySQL daro, todėl tikrai, kad gali būti tas atvejis. Ir jei jūs manote būdas Atgal į PSet-- ar net dvi savaites, kai mes padarėme dalykų, pavyzdžiui, dvejetainis paieškos ar net linijinis paieška, vienas iš gražumynai apie kiekvieną žodį į duomenų bazę ar kiekvieno žodžio stulpelio yra lygiai taip pat, ilgis, net jei visa krūva tų ženklų yra tuščias, yra tai, kad jūs galite naudoti laisvosios kreipties savo duomenis, tiesa? Jei žinote, kad kiekvienas Žodis yra 16 simbolių toli, galite naudoti rodyklę aritmetikos, taip kalbėti, ir eiti į mus 16, 32, 48, 64, ir jūs galite tiesiog šokti Nedelsiant naudojant aritmetinį bet kurį iš savo duomenų bazės žodžiai. Kadangi, jei tai VARCHAR, ką jūs, o ne daryti? [Telefono skambutį] Jei tai VARCHAR, jums Negalite naudoti laisvą prieigą. Ką jūs turite ieškoti ir daryti? Taip? Auditorija: [nesigirdi] DAVID Malan: Pažvelkite per whole-- pėdsakų per visą sąrašą ko, greičiausiai? Kokios turi ypatingą vertę? Auditorija: [nesigirdi] DAVID Malan: Domina už neapibrėžtų Terminatorius kad paženklina žodžių atskyrimą. Taigi dar kartą, kompromisas, ir nėra teisingas atsakymas. Bet tai kur, ypač kai jūsų vartotojai gauti turi būti daug ir jūsų apkrova jūsų serverių, The žmonių skaičius, naudojant ji pasireiškia didelis, tai yra iš tikrųjų nontrivial sprendimai. Taigi, mes galime palikti tai, kaip šis, bet tegul slinkite žemyn daugiau nei į dešinę čia. Dabar ten stulpelių pora kur mes turime priimti sprendimą skambutį. Ar tai prasminga leisti vartotojo anketa pavadinimą, vartotojo vardas arba vartotojo anketa Vardas, būti niekinis? Tai yra, tik tuščias. Jaučiasi šiek tiek absurdiškas, todėl aš nesiruošia patikrinti tuos langelius. Tačiau paaiškėja, A duomenų bazė, galima sakyti, kas nors gali pasirinktinai turėti šią vertę. Šis stulpelis nėra iš tikrųjų ten. Dabar ten tai išskleidžiamasis meniu. Ir pastebėsite aš vis dar pirmoje eilėje yra, todėl aš kalbu apie vardą dabar. Ir paaiškėja, kad į duomenų bazę, skirtingai nuo paprasto tik skaičiuoklę, turi galingų funkcijų, vadinamų indeksai. Ir indeksas yra pasakoti būdas duomenų anksto, kad Aš, žmogaus esu protingesni nei jūs. Aš žinau, ką rūšių užklausas, pasirinkite arba įdėkite arba ištrinti arba atnaujinti, kad mano kodas ketina baigti gale padaryti šio duomenų. Noriu skaityti daug duomenų. Noriu įrašyti daug duomenų. Noriu nuolat ištrinti daug duomenų. Jei aš žinau, kad aš ruošiuosi būti susipažinimo lauką kaip vardas daug, Galiu Preemptively pasakys duomenų bazė, aš žinau daugiau nei tu, ir aš noriu, kad dekretu jums reikia indekso šioje srityje. Kur indeksavimo lauką ar stulpelį tai reiškia, kad iš anksto duomenų turėtų skolintis idėjų iš, pavyzdžiui, keturių savaičių ir penkių ir šešių iš CS50 ir iš tikrųjų sukurti kažkas panašaus į dvejetainį paieškos medis ar kažkas paprastai vadinamas B medis kad jums būtų sužinoti A klasei, kaip CS124 Harvarde, algoritmai klasė, arba bet kitose vietose, skaičius. Duomenų bazė ir protingas žmonės, kurie ją įgyvendino bus išsiaiškinti, kaip saugoti kad informacijos stalas atmintyje taip, kad paieškų ir Kitos operacijos yra super greitai. Jūs neturite daryti. Jūs neturite įgyvendinti linijinis paieška ar dvejetainis paieškos arba sujungti rūšiuoti arba pasirinkimą rūšiuoti, bet, kad. Duomenų bazė daro tai už jus, jei jūs pasakyti tai Preemptively indeksuoti šioje srityje. Ir jūs galite pamatyti irgi ten kai kurios kitos charakteristikos mes galime pasakyti, duomenų bazės įgyvendinti. Ką jis galėtų reikšti, jei aš pasirinksiu Unikalūs Iš šio meniu, tiesiog intuityviai? Taip? Auditorija: [nesigirdi] DAVID Malan: Taip, Nick turi būti unikalus. Ar tai geras dalykas ar blogas dalykas duomenų bazė, už svetainės su vartotojais? Jeigu vardai būti unikalus? Taip, tikriausiai. Jei tai, ką srityje mes naudojame prisijungti, jūs tikrai norite žmonės, turintys tas pats jausmas ar tą patį vartotojo vardą. Taigi, mes galime turėti duomenų įgyvendinti, kad tiek kad dabar mano PHP kodą arba bet kokia kalba, Aš neturiu, pavyzdžiui, patikrinti nebūtinai daro šį vardą egzistuoja, kol aš tegul kas nors registruotis? Duomenų bazė neleis du žmonės pavadino Davidas arba Malans užsiregistruoti šioje byloje. Ir kaip panaikinti, nors tai Meniu tik leidžia jums pasirinkti vieną, unikalus indeksas yra vienas, kad yra indeksuojami super greitai atlikti, tačiau ji taip pat įtvirtina unikalumą. Ir mes grįžti į ką kiti du reiškia tik akimirką. Tuo tarpu, jei aš einu į mano antroji eilutė, kuri yra vartotojo vardas, turėčiau nurodyti kad pavadinimas turi būti unikalus? Ne, nes jūs tikrai galėtų have-- nėra dviejų Davidas Malans šiame kambaryje, greičiausiai. Bet jei mes pasirinkti kitą vardą, mes tikrai gali turėti susidūrimų. Prisiminkite maišos lenteles ir pan. Taigi, mes tikrai nenorime kad pavadinimas laukas unikalus. Taigi, mes tik ketina palikti kad brūkšnys, brūkšnys, brūkšnys, nieko. Ir aš ruošiuosi palikti visa kita vieni. Iš tiesų, dauguma šiose srityse mes ne rūpintis. Ir kai aš pasiruošęs išgelbėti tai, jei internete bendradarbiauja, Aš spustelėkite Įrašyti ir labai, labai, labai lėtai veikia duomenų bazė gauti išsaugotas. Ir dabar aš vėl tai sąsaja, kuri tiesa, yra milžiniška iš pirmo žvilgsnio. Bet viskas, ką aš ruošiuosi padaryti, tai spauskite ant žodžio Vartotojai viršuje kairėje. Aš ruošiuosi eiti čia, spauskite Vartotojai, ir pagal nutylėjimą, jį įvykdė keletą SQL, bet daugiau apie tai per akimirką. Štai tik santrauka, ką aš padariau. Ir ne nerimauti, kad matote paminėti lotynų ir švedų čia. Tai yra tik numatytasis parametrus, nes MySQL pradžių, arba PHP MyAdmin, vienas iš dviejų atsitiko turi būti parašyta kai kuriose Švedijos gyventojų. Bet tai nesvarbu, mūsų atveju čia. Gerai, tai kodėl visa tai įdomu? Pasirodo, galiu įterpti duomenis į raštu kodą bazę. Ir aš eiti į priekį ir mano failą čia aš ketina eiti į priekį ir apsimesti, kaip tai yra sumontuota į tą duomenų bazėje, kuri ji yra ne tada,, tačiau ji bus būti, kai mes gauname problema nustatyti septyni. Ir aš ruošiuosi eiti į priekį ir vykdyti tam tikrą funkciją, vadinamą užklausos, kurį mes duos jums problemos septynis platinimo kodą, kad trunka bent vieną argumentą, kuri yra tik eilutė. A SQL kodą eilutė. Taigi, jūs ketinate mokytis, kaip rašyti Struktūrinių užklausų kalba. Jei aš noriu įterpti naują eilutę į mano duomenų, nes kažkas pateikė forma, kad mano kodas, aš norėčiau tiesiog rašyti INSERT INTO vartotojai taip sritys: vartotojo vardą, kablelis, vardas, vertybes, o dabar man reikia įterpti kažkas panašaus Malan ir citatos citatos pabaiga David Malan. Ir dabar net tiems, susipažinę su SQL, kodėl aš naudoju Viengubomis kabutėmis viduje Šios žaliosios eilutę? Kas gali būti priežastis čia? Atkreipkite dėmesį, aš susimaišymo dviem kalbomis. Užklausa yra PHP funkcijos, bet tai užima argumentas. Ir šis argumentas turi būti savaime parašyta kita kalba vadinamas SQL Struktūrinių užklausų kalba. Taigi, viskas, kad aš ką tik pabrėžė čia tai kalba vadinama "SQL. Taigi, kas su apostrofais, kaip greitai normalumas patikrinti? Pirmyn. Jie eilutes. Taigi, citata, citatos pabaiga Malan ir citata, citatos pabaiga Davidas Malan yra įsipareigojimų. Ir tiesiog galvoju intuityviai dabar žinant, ką žinote apie C ir PHP, kodėl aš ne tai, kurią aš paprastai Naudotų kabutes styginiams? Kodėl aš nenoriu to daryti? Taip? Auditorija: [nesigirdi] DAVID Malan: Būtent. Nes aš jau naudoju dvigubose kabutėse kelyje išorėje argumentas PHP funkcijos, Aš tiesiog painioja vertėją. Jis nežino, ar jie eiti kartu? Ar šie eiti kartu? Ar šie eiti kartu? Taigi, aš pakaitomis vietoj. Arba aš galėtų padaryti kažką panašaus į tai, Backslash citata ar Backslash citata. Atvirai kalbant, kad tik pradeda gauti labai neįskaitomas ir negraži. Bet, kad būtų pasiekti tas pats rezultatas, taip pat. Taigi, jei aš buvo atlikti tai Užklausa dabar pažiūrėkime, kas vyksta. Aš ruošiuosi eiti į priekį ir dabar, o nei vykdyti PHP kodą, kuris kur jums žaisti į problemą septynis, Aš ruošiuosi vietoj eiti į PHP MyAdmin. Ir aš rankiniu būdu vyksta eiti į SQL kortelėje ir leiskite man priartinkite sąsaja. Ir aš ruošiuosi įklijuokite dalykas aš tiesiog įvedėte. Ir spalvinis žymėjimas turi pasikeitė šiek tiek dabar tiesiog, nes programa formatai viskas šiek tiek kitaip. Tačiau pastebite, kad viskas, ką aš padariau yra Sakiau, įterpti į vartotojų. Aš nurodyta, tada kableliu atskirti skliausteliuose sąrašas du laukai, kad aš noriu įterpti, ir tada aš tiesiog pasakė vertės po kito skliaustelius, Ir tada dvi vertės Noriu plug-in, ir dabar gera priemonė, Aš įdėti kabliataškį pabaigoje. Taigi, tai ne C. Tai nėra PHP. Tai dabar SQL, ir aš įkelti jį į šią interneto sąsajoje ŠTAI tik ketina leisti man, kaip tik aš spustelėkite Eiti, vykdyti šią užklausą duomenų bazėje veikia viduje CS50 IDE. Taigi tai yra gerai. Atkreipkite dėmesį, kad sakė vienas eilėje įdėta, išėjo super greitai, 0,0054 sekundžių įrašyti, kad duomenis. Taigi, tai skamba gana sveikas. Jis pertvarkė savo užklausą man čia tik jį pamatyti SORT spalvos koduojamos versiją. Bet dabar, jei aš spustelėkite Žmonės, pastebėsite, kad net nors ten netvarką aikštelė ekranas, mano stalas dabar turi dvi eiles. Taigi, leiskite man eiti į priekį ir daryti kitą. Vietoj to, leiskite man vėl eiti į SQL kortelėje. Ir aš šį kartą bus įterpti kažką panašaus Robas ir jo vardas bus Robas Bowden. Bowden. Leiskite spustelėkite Įrašyti. Oi, o eiti. Dar kartą spustelėkite Naršyti ir dabar pastebėsite, turiu du eilučių. Taigi, tai tik būdas sudėtingesnis būdas atverti Google skaičiuoklės ir tiesiog įvedę eilutę į kolonėlę. Bet kas svarbiausia yra tai, kad dabar mes turime sintaksę su kuria rašyti kodą, kad Galų gale, mes galime iš tikrųjų padaryti ką nors ir tai. Prisiminkite, kad PHP palaiko Super globalių kintamųjų. Kas yra viduje dolerio pasirašyti pabraukimas GET PHP? Mes paėmė pažvelgti į vieną arba du paprasti pavyzdžiai. Ir PSet6, prisiminti turite Sveiki dot PHP, kuris naudoja šį kintamąjį. Kas vyksta ten? Arba kas tai yra? Šiek tiek garsiau. Auditorija: [nesigirdi] DAVID Malan: Tai sniego sėkla masyvas, kuris yra tik išgalvotas būdas pasakyti masyvas, kuris turi rakto reikšmė porų. Ir raktai nėra skaitinė. Jie žodžiai ar įsipareigojimų. Ir konkrečiau, ką tie rakto poros? Kur jie? Atsiprašome? Auditorija: [nesigirdi] DAVID Malan: Nėra? Kur tų pagrindinių Pigūs poros atsirado? Pakartok? Vėlgi? Ar aš vienintelis, klausos kažką? [Juokas] Tai tiesa, taip? Auditorija: [nesigirdi] DAVID Malan: Taip, jie iš užklausos eilutę. Taigi, jei jums atgal laiku kai mes grojo su "Google" ir mes nuėjo į Google.com velniop Paieška klaustukas Q yra lygus Katės, jei aš būčiau paspauskite Enter, ir jei "Google" buvo įgyvendinti PHP, PHP kodą, kad "Google rašė turėtų prieigą prie dolerio ženklas pabrėžti patekti į vidų, iš kurių yra pagrindinis vadinamas Q ir vertės vadinami katės, kad ji tada gali naudoti naudojamas daryti realią paiešką su. Taigi, iš tiesų, ką aš ruošiuosi padaryti dabar grįžti į savo PHP kodo kad jums dar kartą pamatyti daugiau į PSet7. Ir vietoj prijungti kietų koduotų vertybių, kurios neturi atrodyti labai dinamiška svetainė, Aš ruošiuosi duoti jums erzina koks jūsų tikrasis kodas daryti. Galima būtų įdėti į dvi Klausimas žymi kaip šis. Aš nežinau, ką username is. Aš nežinau, ką vardas bus, bet aš žinau, aš galiu gauti juos dinamiškai. Taigi, jei kodas mes rašote dabar kodas veikia "Google" serveriuose, arba, jei tai yra labas taškas PHP, kuris ateina su PSet6, Aš ruošiuosi pereiti į užklausa funkcija tiesiog kaip printf, kiti du argumentus. Gauti, citata, citatos vardą, ir GET, citata, citatos, pavadinimas. Ir dabar, pastebėsite, ką bendroji struktūra yra čia. Aš turiu kairėje pusėje pokalbio, Ši funkcija vadinama užklausą PHP. Aš vis dar turiu, nes pirmas argumentas, tik teksto eilutė. Bet, kad teksto eilutė yra parašyta kalba vadinama "SQL. Ir tiesą sakant, tai nėra didelis kalba. Mes tik ketiname kalbėti apie ji oficialiai šiandien, tikrai. Ir tada problema nustatyti septyni, ten gana Keletas funkcijų, kad mes ketina išnaudoti. Klaustukų, nors, reiškia prijungti vertės čia ir prijungti kitą vertę čia. Ir pranešimas, aš praleisti ką iš viso quote-- nusispjauti it-- aplink citatos žymi šį kartą. Aš praleisti citatos ženklai visame klaustuku, Atsiprašome, šiuo metu aplink. Taigi, kas malonu apie tai klaustukas funkcija, kuri PHP yra linkęs remti, Ruby ir Python ir kitomis kalbomis, Tai tiesiog reiškia, kištuką kai Vertiname čia ir žinote ką? Jūs išsiaiškinti, ar naudoti vieniši arba dvigubomis kabutėmis. Nesivarginkite mane su intelektualiai neįdomios detalės. Tačiau įsitikinkite, kad tai teisinga taip, kad mano kodas yra galiausiai veiklos ir saugus, o turės reikšmę iki ilgio. Dabar, kiek argumentai iš viso, tik būti aišku, yra užklausos funkcija paėmimas? Kiekvienas nori balsuoti daugiau nei du? Trys? Žinoma, kodėl? Kodėl trys? Auditorija: [nesigirdi] DAVID Malan: Būtent. Pirmoji dalis yra eilutė. Antrasis argumentas yra doleris ženklas pabrėžti GET laikiklis vardą. Ir trečiasis argumentas yra Tas pats, bet tik pavadinimas. Taigi, kitaip tariant, dabar jei aš turėjo internetinę formą kad turėjo teksto laukus, vienas naudotojo vardą, viena jo ar jos vardas, tiesiog kaip galėtumėte pamatyti svetainėje kai užsiregistruoti kai svetainė, tai gali Būk ant nugaros pabaigoje kodą iš tiesų įterpimo dabar į duomenų bazę. Dabar priešingai, tegul pirmyn. Tarkime, vartotojas dabar prisijungti ir jūs norite rašyti PHP kodą, kuris tikrina, ar asmuo, kuris tiesiog prisijungęs iš tikrųjų yra vartotojas, galite naudoti gana paprasta sintaksė. Galite pasakyti, SELECT, tarkim Star, kur žvaigždutė reiškia viską. Aš nežinau, ką man nori, kad tik man visi iš lentelės stulpeliai vadinamas vartotojams, kur, ir tai yra malonu. Pasirinkite palaiko kas vadinamas predikacinis, kuris yra kaip įgyti teisę ko norite būdas. Kur Nick lygus citata, citatos pabaiga Malan. Taigi čia taip pat, aš nematomas viduje argumentas į PHP funkcijai, iš SQL kodą linija. Ir SQL kodas ši laikas yra tiesiog vyksta ieškoti citata, citatos pabaiga Malan. Dabar tai dar ne viskas, kad naudinga, todėl aš ruošiuosi praleisti, kad ir aš ruošiuosi užslėpti Šis patarimas iš Brady, ir eiti ir plug-in, o ne klaustukas čia. Taigi, tiesiog, kad būtų aišku, kas turėtų mano antras argumentas būti, jei kas nors tiesiog prisijungti ir aš norite patikrinti, ar jis arba ji yra iš tikrųjų vartotojas? Auditorija: [nesigirdi] DAVID Malan: Taip. Girdžiu dolerio ženklas pabraukimo Gaukite pasiūlymą, citatos vardą. Ir tai turėtų grįžti į mane bet kurį iš eilučių savo duomenų bazės kad turime Malan vardą. Dabar tikiuosi, aš ruošiuosi grįžti nulis, jei Malan niekada nebuvo čia arba vienas, jei jis turi. Aš neturėtų grįžti du arba trys arba keturi. Kodėl? Auditorija: [nesigirdi] DAVID Malan: sakiau unikalus, tiesa? Paprastos priežasties. Kadangi aš pasakiau tai turiu būti unikalus, tiesiog logiškai, Jūs galite turėti tik nulį arba vieną Malans šiuo konkrečiu bazės lentelėje. Dabar, kaip panaikinti, tik tokiu būdu jūs mačiau jis, nors aš nuolat naudojant GET ir nors PSet6 naudojamas tik Gauti, galite tikrai turi skelbti pranešimams. Ir prisiminti, kad Post kitą technika pateikiant informaciją iš formos, tačiau ji nerodo URL. Tai šiek tiek saugesnis tikrai už dalykų, pavyzdžiui, vartotojų vardus ir slaptažodžius, kuri PSet7 bus iš tikrųjų įtraukti. Taigi, galime tai padaryti PHP MyAdmin ir pamatyti, kas atsitiks. Aš ruošiuosi eiti į MySQL kortelėje. Ir pastebėsite, kad numatytoji vertė PHP MyAdmin, tiesiog stengiuosi būti naudinga, yra pasirinkti žvaigždė iš vartotojų, kur vienas. Na, viena yra visada teisinga, todėl tai turi kvailas veiksminga tiesiog pasirinkti viską. Bet aš ruošiuosi būti šiek tiek daugiau pedantiškas ir rankiniu būdu tipo iš SELECT žvaigždė iš vartotojų. Dabar techniškai, galite pacituoti lenteles vardą. Tai retas, kad jūs turite, bet pastebėsite, jie nėra Jūsų normalūs Citatos apie JAV klaviatūrą. Tai yra taip vadinamas gravis, kuris paprastai yra ant viršutinio kairės rankos kampe klaviatūros. Bet tai reta, kad jums iš tikrųjų reikia nerimauti su tuo, todėl aš tiesiog praleiskite juos vistiek. Taigi dabar leiskite man eiti į priekį ir paspauskite eiti. Ir kiek eilučių turėčiau gauti atgal, kai aš pasirinkite žvaigždė iš vartotojų? Auditorija: [nesigirdi] DAVID Malan: eilučių skaičius, tikrai. Bet kaip daugelis tai betono istorija dabar? Du, nes ten buvo man ir ten buvo Robas. Taigi, jei aš spustelėkite Eiti, matau vizualiai, kad Aš Dotarłeś atgal, iš tiesų, dvi eilutes. Yra daug netvarkos daug dėl ekranas, bet aš tik pamatyti dvi eilutes. Priešingai, jei aš tai padaryti ir vėl padaryti PASIRINKITE žvaigždė iš vartotojų, kur Nick lygus pasiūlymą, citatos pabaiga Malan, dabar, jei aš spustelėkite Eiti, Aš tik ketina gauti atgal vieną eilutę. Ir galiausiai, jei aš kažkas panašaus į tai, tarkime, kad aš nerūpi gauti viską, kuris yra tipo prasmės dabar nes ten tik du stulpelius. Tai nėra, kaip aš pasirinkdami didžiulis duomenų kiekis. Tarkime, aš einu į priekį ir do Pasirinkti Pavadinimas IŠ vartotojams, kur Nick prilygsta Malan, kas malonu apie SQL sąžiningai, yra tai, kad tikrai tik daro ką galite pasakyti tai daryti. Tai gana glaustai, bet jūs tiesiog tiesiog pasakyti, ką norite daryti. Pasirinkti Pavadinimas iš vartotojų tam tikrais vartotojo vardas yra lygus Malan. Ir tai tikrai yra tai, kad aiškus. Taigi, dabar, jei aš paspauskite eiti, kaip daugelis eilučių aš ketina gauti atgal? Vienas iš jų, nes tai tik Malan, tikiuosi. Arba nulis, jei jis nėra ten, bet viena maksimaliai. Ir kiek stulpeliai aš grįšiu? Kiek stulpeliai? Šį kartą, aš tik ketina gauti vieną, nes aš ne pasirinkite žvaigždę, kuri yra viskas. Dabar aš pasirinkdami tik vardą, todėl aš tiesiog grįžti vieną stulpelį ir vieną eilutę. Ir atrodo tarsi tinkamai juokinga, tiesiog ieško super mažas kaip šis. Taigi, kas iš tikrųjų vyksta? Kai įvykdyti SQL Užklausa naudojant pasirinkite, ką jūs gaunate atgal iš duomenų bazės yra kaip laikiną lentelę su eilučių ir stulpelių, galbūt, bet praleisti nieko, kad faktiškai nebuvo pasirinktas jums. Taigi, tai, pavyzdžiui, jei kas nors yra didelis Skaičiuoklės visų mokinių įregistruotas kai studentas grupė, o jūs sakote, man visi pirmakursis, kurie jau įregistruota mūsų studentų grupę, ką Jūsų kolega studentas grupė gali daryti yra jie gali tiesiog ranka Jums visą skaičiuoklę. Štai tarsi sakydamas pasirinkite žvaigždė. Ir tai šiek tiek erzina, jei jūs tik norėjau pirmakursis. Ir taip, jei vietoj sakė, pasirinkite žvaigždė iš duomenų bazės lentelės kur m yra lygus citata, citatos pabaiga pirmakursis, tai kaip nors jūsų draugas Studentų grupės tiesiog pabrėžė ir kopijuoti tik pirmakursis eilutės, įklijuoti juos į naują "Google" Skaičiuoklės arba Excel failą, ir perdavė jus į Gautas tik failą. Tai viskas, kas vyksta nuo konceptualiai čia. Taigi, galų gale, mes galime padaryti keletas gana išgalvotas dalykų saugodami dalykų, pavyzdžiui, naudotojų vardus ir slaptažodžius ir pan. Tačiau, it turns out, mes turėtume daryti šiek tiek kitaip, nei tai. Tai nereiškia, kad protingas, kad tik saugoti vartotojo vardą ir slaptažodį. Kažkas anksčiau, manau, žemyn čia, pasiūlė ID. Dabar tapatybės gali būti kaip Harvardo ID arba Yale Grynasis ID bet jis gali būti dar paprastesnis Mūsų duomenų bazėje atveju. Ir iš tiesų, bendras atvejis yra turėti vieną stulpelį. Ir aš ruošiuosi eiti į priekį ir redaguoti lentelę. Ir jei jūs pažaisti su Ši sąsaja PSet7, pamatysite, kad galite patikrinti čia šį mygtuką ir pridėti ne iš lentelės pradžioje laukas. Ir dabar, jei aš spustelėkite Eiti, ji vyksta duoti man vieną iš šių formų iš anksčiau. Aš ruošiuosi įdėti lauką, vadinamą ID. Ir aš ruošiuosi padaryti tai skaitmeninis tipo. Turiu visa krūva Vertybių už skaitmeniniai simboliai. Aš tik ketina pasirinkti INT ir Nesijaudinkite apie skirtingų dydžių. Aš neturiu nurodyti ilgis ar vertės, nes jis bus 32 bitai, nesvarbu koks. Atributai, mes nemačiau anksčiau. Bet bet kuriuo iš šių palūkanų meniu parinktis šį kartą? Dėl INT? Ką galėtumėte pasiūlyti? Nėra? Ar kuris nors iš šių prasmės? Taip. Taip, nepasirašytas, tiesa? Apskritai, jei mes ketiname suteikti kiekvienas unikalus numeris, kuris kur ši istorija yra vyksta, aš tikrai tik nori asmuo turėti panašaus nulio skaičių ir vienas ir du ir trys ir keturi. Man nereikia elgtis neigiami skaičiai. Jis tiesiog atrodo pernelyg didelio sudėtingumo. Noriu keturių milijardų galimų reikšmių, ne keturis milijardus galimos reikšmės, todėl aš tiesiog dvigubinti talpa mano INT. Kaip panaikinti, jei norite susieti tai kažkas panašaus į "Facebook", atgal rūšiuoti mano dienos, kai "Facebook" pirmą kartą išėjo, Manau, tai, ką jie buvo naudojant savo MySQL duomenų bazės saugoti naudotojo identifikatorius, buvo tik INT. Bet, žinoma, yra daug Realiojo pasaulio žmonių. Yra daug padirbtų Facebook aikštelė sąskaitų pasaulyje. Ir taip galiausiai, "Facebook krantų iš int dydis A keturis milijardus vertę. Kuris yra, kodėl, jei peržvelgsite aplink ir ten svetaines kad gali pasakyti, ką Jūsų unikalus ID. Ir jei jūs niekada pasirinko vartotojo vardą "Facebook", pamatysite savo unikalų ID. Manau, kad tai profilis dot PHP klaustukas ID lygus kažką. Tai dabar kažkas panašaus didelis INT, arba ilgas ilgas jei norite, kuris yra 64-bitų vertė ar kažkas panašus. Taigi, net ir realiame pasaulyje ar jie klausimai galiausiai kartais reikšmės. Ir it turns out čia, jei aš suteikiant visas mano vartotojų unikalus ID, Aš noriu būti super aiškus ir minimaliai padaryti šioje srityje unikalus. Tačiau paaiškėja, yra vienas gabalas nomenklatūros šiandien per tai yra pirminis raktas. Jei projektuojant duomenų bazę stalas ir jūs žinote, iš anksto kad viena iš toje lentelėje stulpelius turėtų ir identifikuoti eilutes Lentelėje, norite tai nurodyti ir pasakykite duomenų bazę, tai yra mano pirminis raktas. Gali būti dublikatai kitose srityse, bet aš sakau, kad tai duomenų bazę yra mano pagrindinis, mano svarbiausias sritis, kad manimi garantuoja, kad bus unikalus. Dabar tai atrodo nereikalinga. Aš dabar siūlo, kad mes pridėti paspaudę Save čia lauko called-- ir aš ruošiuosi eiti į priekį ir spustelėkite AI, mes grįžti į kad akimirkai, Išsaugoti. Siūlau, kad dabar mano stalo atrodys taip. Turiu INT srityje vadinamas ID CHAR laukas vadinamas Nick, VARCHAR laukas vadinamas vardu, bet ID jei tai pirminis ir todėl unikalus, kodėl aš tiesiog gaišti laikas įvedant ką efektyviai yra antroji unikalus srityje vadinamas ID, kad yra int? Nick, prisiminti, buvo jau unikalus, mes pasakėme. Taigi tiesiog logiškai, jums nereikia bet duomenų bazės patirtis priežasties per tai, kodėl gali man įdiegė įvertinimas, mano unikalus identifikatorius INT, taip pat? Kas this-- dar kartą pasakyti? Auditorija: [nesigirdi] DAVID Malan: Random prieiga yra lengviau, kodėl? Auditorija: [nesigirdi] DAVID Malan: Taip, tai tiesiog gauti numerius. Taigi, jei jūs manote, kad tai tikrai yra lentelė, kaip masyvą, dabar turiu unikalius identifikatorius kad galiu šokti aplink. Ir geriau nei, kad dar yra tai, kad kaip didelis yra int bus dar kartą? 32 bitų arba keturių baitų. Kaip didelis yra my username bus? Maksimaliai? 16 baitų. Taigi, jei esate tikrai rūpinasi Jūsų kodas efektyvumą, prisiminkite PSet5, norėtumėte ieškoti keturių baitų vertė arba 16 baitų vertė, tiesa? Tai tikrai yra taip paprasta, kaip kad. Jūs turite padaryti keturis kartus daugiau darbo ieškoti vardų, nes šie yra 16 baitų. Taigi, jūs turite tiesiog palyginti visus 16 baitų būti tikrai taip, tai Nick noriu. Kadangi dėl INT, galite tai padaryti tik su keturių baitų. Ir kaip žemę tiems, domina kompiuterinės įrangos, it turns out galite pritaikyti kažką panašaus int arba 32 bitų vertė kažką vadinamas kompiuteryje registras CPU, tai reiškia, kad super, super greitai, net mažiausia lygis kompiuterio aparatūros. Taigi, tai tik pranašumai visi aplink. Taigi, ką tai reiškia? Iš tiesų, kai jūs Projektuojant duomenų bazės lentelę, beveik visą laiką jūs ketinate turėti ne tik duomenų jums rūpi, bet kažkas panašaus unikalus identifikatorius nes tai vyksta darykime kitus dalykus. Ir tegul kelionė per vieną problemą čia. Tarkime, kad vartotojai turi ne tik vardai ir pavardės, bet jie taip pat turi tokius dalykus kaip miestų ir teigiama, ir ZIP kodai, bent jau čia JAV. Taigi, aš ruošiuosi eiti į priekį ir tik greitai pasakyti, duok man daugiau tris stulpelius tuo lentelės pabaigoje. Ir tai bus miestas, tai bus valstybė, ir tai bus Pašto. Dabar Miestas, ką duomenų tipai tai turėtų būti, galbūt? VARCHAR? Aš nežinau, ką ilgiausias pavadinimas Miestas yra. Kažkur Amerikoje, ten tikriausiai kai juokingai ilgas žodis, tad tiesiog eiti su 255, šiek tiek istoriškai ar savavališkai. Valstybė, ką norite daryti? Sprendimas skambutis, tiesa? Kas gal labiausiai efektyvus? Kiek simbolių? Gal tik du, jei mes galime išsisukti su daro tik, kaip MA už Massachusetts ir kt. Taigi, aš ruošiuosi eiti char vertę dviejų. Pašto indeksas yra įdomi. Mes čia 02138, kad siūlo turėtume panaudoti tai, ką? Tai INT, tiesa? INT, INT, trumpas? Trumpas veiktų. Nėra? CHAR ar penki, bet aš noriu int. Kodėl stumti atgal ant INT? Įtikinti man tai. Kas kvailas apie int, mano idėja? Taip. Auditorija: Paimkite daugiau atminties. DAVID Malan: Paimkite daugiau atminties. Keturių baitų, bet jūs pasiūlyti pašto kodą kaip penkių baitų ar kas nors buvo kaip CHAR, kurie jaučiasi eh, kad tikrai ne tas atvejis. Na, įdomus pasakojimas. Prieš keletą metų, kai aš jį naudoti "Microsoft Outlook mano elektroninio pašto adresą, Aš galų gale norėjau pereiti į "Gmail". Ir taip, aš eksportuojama visi mano kontaktus iš Outlook CSV failą. Atskirtų kableliais vertybes, kuris tiesiog reiškė I turėjo visus savo draugus vardus ir paskutinis vardai ir telefonų numeriai ir ZIP kodai ir visi, kad. Ir tada aš padariau klaida atidarant jį Excel, kuris yra skaičiuoklės programa, kuri supranta, CSV failus kaip matėme. Bet tada, turiu nukentėjo, pavyzdžiui, Komandų arba kontrolinis S viename taške. Ir Excel, matyt, tuo metu turėjo, pagal kurį bet kada funkciją jis pamačiau skaičių, stengėsi būti naudinga. Ir jei šis skaičius pradėjo su nuliai, tai būtų tiesiog atsikratyti jų. Kodėl jums reikia pirmaujanti nuliai apie sveikieji? Jie prasmės, matematiškai. Jie nėra prasmės į US Postal sistema. Taigi, aš turėjau ilgus metus, iki šios dienos, aš vis dar turiu draugų, kad kai retas atvejis, kad man reikia ką nors yra spręsti šių dienų, Aš vis dar matau, kad aš turėti, Cambridge draugas, Masačusetsas, 2138. Ir tai erzina, jei esate bando rūšiuoti programiškai generuoti vokus arba tiesiog Užrašoma jį žemyn. Ir tai dėl šios priežasties, Aš pasirinkau neteisingą duomenų tipą. Taigi, aš myliu savo idėją. Leiskite naudoti char lauką. Penki simbolių, išskyrus yra kertinis atveju. Jei vis siųsti laiškus, kartais zip kodus šių dienų, jie, kaip, plius keturi. Taigi, mes turime brūkšnelis ir tada mes turime keturis numerius. Taigi turi būti sąžiningas, tai gali pereiti daug skirtingų būdų. Nes dabar, aš ruošiuosi laikyti tai paprasta ir aš tiesiog ketinate pasakyti, kad tai penkių CHAR vertė ir mes ketina praleisti visą brūkšnys plius keturi. Bet tokie yra kompromisų rūšių. Ir jūs galite galvoti iš Tos pačios problemos, kylančios su telefono numeriais arba kitose srityse. Ir dabar, tai yra faktiškai kvailas kelių eiti. Tarkime, tiek Rob o aš ir Oną ir Maria ir [? Davon?] Ir Andy ir kiti dėl darbuotojų visi gyvena , Cambridge, Massachusetts, 02138. Tai iš tiesų jaučiasi kvaili, kad aš pridedant prie mano vartotojai stalo, miestas, valstybė, ir ZIP. Kodėl? Auditorija: [nesigirdi] DAVID Malan: Pasakykite naujo? Auditorija: [nesigirdi] DAVID Malan: Jie visada ketina eiti kartu, tiesa? Kai it turns out, mes naudojamas manote tai buvo atvejis, kol mes išsamiai ieškojau visa mus ir Pasirodo, kad Yra keletas neatitikimų Jeigu keletas miestų turi tas pats užtrauktukas, kuris yra keistai. Tačiau, jei mes numatyti dabar, kad 02138 visada Kembridžas, Masačusetsas, kodėl pasaulyje norėtumėte laikyti Jūsų duomenų Kembridžo ir MA ir 02138 man ir Hannah ir Rob ir už [? Davon?] Ir kitiems, kurie gyvena čia Kembridže, tai puikiai nereikalingas. Turėtume išeiti tik su saugojimo ką? Tiesiog Pašto kodas. Bet tada, jei mes saugome tik Pašto kodas, aš noriu, tikriausiai, Mano svetainė žinoti, kur yra 02138. Taigi, man reikia kito stalo. Ir tai gerai. Ir iš tikrųjų, tai yra vienas iš projektavimo procesų projektavimo lentelės kad jums padaryti PSet7 taip pat, pagal kurią norite veiksnys bendrus duomenis. Kaip mes jau faktoringo iš bendra kodas ir faktoringo bendri stilių iš CSS, čia per duomenų bazėje, jei aš tik reikia 02138 unikaliai nustatyti kažkieno gimtajame mieste, Laikyti ne aukštesnėje Cambridge, Mass už kas darn vartotojas jūsų stalo. Vietoj to, turi atskirą lentelę, pavadintą Pašto indeksų, kurie turėtų turėti tai, ko stulpeliai? Tikriausiai ID laukas, tiesiog, nes, principai mes kalbame apie dabar. Tikriausiai Pašto laukas 02138. Ir tada tikriausiai ką kiti stulpeliai? Miestas ir valstybė, tačiau turi tik vieną eilutė 02138, viena eilutė 02139, viena eilutė 90210. Ir tai yra tiesiog visos Pašto kodai aš žinau. Taigi, dabar, ką jūs galite padaryti? Tai yra problemiškas, nes dabar turiu dvi lenteles. Taigi, mano vartotojai dažniausiai per čia tačiau jų Miesto Valstybė informacija yra čia. Taigi, it turns out su SQL, ten faktiškai būdas prisijungti informacijos, ir pamatysite tai į PSet. Tačiau paaiškėja, jūs galite padaryti kažką panašaus į tai. PASIRINKITE žvaigždė iš vartotojų, JOIN užtrauktukus APIE Vartotojų dot Pašto lygus užtrauktukai dot zip. Kuris yra šiek tiek ištęstas, Tiesa, bet tai tik reiškia pasirinkite viską iš procesas atsižvelgiant mano Vartotojų lentelę ir mano užtrauktukai stalo. Prisijunkite juos ant vieno srityje jie turi skiltyje. Taigi, tiesiog darai kažką kaip šis, ir suteikti man atgal naujas laikiną lentelę tai platesnis, tai didesni, kuris turi visas kolonos abu. Ir tai, paprasčiausiai, būtų sintaksė daro kažką panašaus į tai. Taigi, ten tai į priekį, bet ten vyksta būti kitų dizaino sprendimus jums turi padaryti, ne tik su indeksų bet taip pat veikia į iššūkius. Iš tiesų, iššūkis, bet bazių projektavimo kuriuo kartais du žmonės gali norėti prieigos prie to paties eiles duomenų bazėje stalo. Taigi, tai yra kažkas, kad mes susidurti PSet7 taip pat. Bet aš maniau aš pažvelgti į vieną ataka, kurios metu galima SQL. Kas yra kai kurie iš problemų, kad gali kilti? Taigi, jums susidurti tai PSet7. Ir mes jums pasakyti atvirai, ką kodavimo šios problemos sprendimas yra. Bet jei jūs imtis aukštesnio lygio klasę, ypač operacinių sistemų, jūs ketinate susidurti AN nedalomumo klausimas, iš bando daryti problema daug dalykų vienu metu be pertrūkių. Ir aš maniau aš pristatyti šį idėja PSet7 su metafora kad aš išmokau save Margo Seltzer anketa CS164 operacinės sistemos prieš klasę metų. Tarkime, kad turite vieną iš šių bendrabučio šaldytuvų Jūsų bendrabučio kambarį ar namą, ir turite realią polinkis pieno. Ir taip, ateini namo iš klasių Vieną dieną, kai atidarote šaldytuvą. Oi, damn ją. Nėra į šaldytuvą pieno. Taigi, jūs uždarote šaldytuvas, užrakinti duris, užrakinti savo bendrabučio, vaikščioti aplink kampe CVS, gauti linija, ir pradėti patikrinti dėl tam tikrų pieno. Ir jis ketina užtrukti, nes tie damn savęs kasos skaitikliai amžinai naudotis vistiek. Taigi tuo tarpu, savo kambarioku grįžta namo. Jis ar ji tikrai patinka pienas, taip pat. Jie ateina į bendrabučio kambarį, atidaryti šaldytuvą, OH, darn ją. Yra ne daugiau pieno. Taigi, jis ar ji taip pat eina už kampo. Bet dabar, nes ten kaip du ar trys ar keturi CVSes netoliese, jie įvyktų eiti į vieną iš skirtingi tie aikštėje. Ir todėl dabar, kelios minutės Vėliau jus abu grįžti namo ir ugh, blogiausia problema kada. Dabar jūs turite per daug pieno nes jis ketina eiti rūgštus. Ir jums patinka pieną, bet jūs nelabai patinka pieno. Taigi, dabar, tai buvo brangus klaida, nes jus abu padarė pagrįstą sprendimą dėl būklė tam tikru kintamuoju, kad buvo nuo proceso buvo pakeista jums, iš ketinate gauti pieno iniciatorius. Taigi, kas yra galbūt žmogus sprendimas šią problemą? Auditorija: [nesigirdi] DAVID Malan: Palikite dėmesį, tiesa? Visada palikite pastabą, jei esate susipažinę su šiuo šou. Taip, ten yra du iš mūsų. Taigi, visada palieka raštelį, arba tiesiog užrakinti šaldytuvą su tam tikra spyna ar natūra kažkas virš panašaus viršuje. Bet tai iš tikrųjų bus Pagrindinė problema su duomenų bazių projektavimo, ypač kai jums gali tekti kelios naršyklės, daug nešiojamieji kompiuteriai, keli vartotojai visi bando atnaujinti informaciją vienu metu. Ypač jautri informacija kaip finansinės informacijos, kuriuo su akcijų prekybos svetainė, kaip jūs statysite, Ką daryti, jei norite patikrinti, kiek pinigų turite ir tada, jei turite pakankamai, nusipirkti atsargų? Bet kas, jei kažkas, kas turi bendrą sąskaitą su jumis yra tuo pačiu metu bando nusipirkti atsargų? Taigi, jis arba ji yra pažymėdami sąskaitos balansas, jus abu grįžti tą patį Atsakymas, nėra pieno. Arba jus abu grįžti atsakymą Jūs turite 100 $ į sąskaitą. Abu bandote padaryti sprendimą pirkti vieną akciją kai kurių įmonių akcijų. Ir dabar, kas atsitiks? Jūs turite dvi akcijas? Jūs neturite akcijas? Gali kilti problemų, pavyzdžiui, kad. Taigi, mes susiduriame, kad. SQL injection atakas, laimei, yra kažkas, ką mes padėsime jums, bet tai yra atrociously bendro šių dienų vis dar. Taigi, tai yra tik pavyzdys. Aš padaryti jokių pretenzijų, kad Harvardo PIN sistema pažeidžiami šiuo konkrečiu ataka. Mes bandėme. Bet, žinote, kad mes turėti panašaus šioje srityje. Ir Yale Grynasis ID yra panašus ieško ekraną šių dienų. Ir it turns out, kad gal PIN sistema būtų įgyvendinta PHP. Ir jei ji were-- tai not-- jie gali turėti kodą, kuris atrodo taip. Jie turi du kintamuosius. Duok man savo vartotojo vardą ir slaptažodį iš po super pasaulinį kintamąjį kad mes kalbėjome apie anksčiau. Gal Harvardo turi užklausą kaip SELECT žvaigždė iš vartotojų kur Nick prilygsta ir slaptažodis prilygsta. Ir pastebėsite, kad aš tiesiog prijunkite jį naudojant garbanotieji petnešomis žymėjimas nuo kitų dieną, o tai reiškia tiesiog prijunkite vertė čia. Nesu naudojant klaustukas technika. Aš neturiu jokių antra ar trečiųjų argumentus. Aš tiesiog pažodžiui statant eilutę save. Problema, nors, yra tai, kad jei kas nors patinka scroob, kuris yra nuoroda į plėvelės, Įrašai su kažką panašaus į tai, ir aš pašalinta taškus kad paprastai pridengti slaptažodžius, ką daryti, jei jis yra ypač kenksminga ir jo slaptažodį gal yra 12345, už filmą, pavadintą "Spaceballs" bet jis kritiškai įveda vieno citata po penkių, tada tiesiog žodis arba erdvėje, o tada citata, citatos pabaiga vienas lygu quote vieną, bet pranešimas, jis praleidžiamas ką? Jis praleista citata dešinėje ir jis praleidžiamas kairėje citata. Nes jei tai užpuolikas scroob prezumpciją yra tai, kad žmonės, kurie rašė Tai PHP kodas buvo ne taip ryškiai, gal jie tiesiog kai vieno kabutes interpoliacijos iš į garbanotas petnešos kintamojo? Ir taip gal jis galėtų natūra visiško jų mintis už juos, bet taip, kad vyksta tegul įsilaužta į PIN sistema. Kitaip tariant, tarkime, , kad tai yra kodas ir dabar mes prijungti ką scroob įvedėte. Ir tai raudona, nes tai blogai. Ir pagrindinis tekstas yra tai, ką jis įvedėte, scroob gali apgauti Harvardo serveris į statant SQL užklausa eilutė, kuri atrodo kaip šis. Slaptažodis lygus 12345 arba vienas lygu vienas. Kurio rezultatas, logiškai, yra tai, kad tai bus prisijungti scroob į, jei jo slaptažodis yra 12345 arba jei viena lygu viena, kuri yra žinoma visada teisinga, o tai reiškia, scroob visada gauna. Ir taip, tai, kaip nustatyti Šiame, kaip ir daug atvejų, būtų parašyti daugiau gintis. Norėdami naudoti kažką panašaus į mūsų Tikrasis užklausos funkcija, kuri Jūs pamatysite PSet7, kur mes prijungti kažkas panašaus klaustukais čia. Ir grožis Užklausa funkcija, kad mes suteikti jums tai gina nuo jų vadinamieji SQL injection atakas, kur kas nors tracking kodą į švirkščiamųjų savo paties SQL kodą. Nes tai, kas užklausos funkcija mes suteikiame Jums bus iš tikrųjų, jei jūs naudojate klaustuko sintaksę ir antrą ir trečią argumentas čia kas jį įtrauksime į PIDB įėjimo, kad vartotojas, jeigu? Tie Backslash kabučių. Taigi, tai išbėga bet potencialiai pavojingų simbolių. Tai atrodo keistai dabar bet tai nėra pažeidžiami nes ji nėra keisti logikos nebėra nes visa slaptažodis dabar viena citata, kad ne, Tiesą sakant, scroob slaptažodis. Taigi, ten buvo keletas anekdotai apie tai per metus. Taigi, tai buvo nusifotografuoti Kai kurių automobilių stovėjimo aikštelėje Geek kuriuo žinote, kad kai kurie miestai ir narės bando nuskaityti jūsų licenciją plokštė Sąskaita ar bilieto jums jei jūs einate per be, pavyzdžiui, E-Z Pass dalykas. Taigi, šis asmuo prielaida, kad gal žmonės raštu E-Z Pass sistemą buvo ne taip ryškiai, o gal jie tiesiog sujungiamos kartu eilutę, taip, kad jis ar ji negalėtų piktybiškai ne tik užbaigti savo mintį, bet iš tikrųjų įvykdyti blogą komandą kuri mes nepaminėta dar, bet jūs greičiausiai gali atspėti. Kad be ištrinti ir įterpti ir atnaujinti ir pasirinkite, ten taip pat raktažodis vadinamas lašas, kuris pažodžiui ištrina viską į duomenų bazę, kuri ypač blogai. Mes galime priartinti tai, jei tai šiek tiek sunku pamatyti. Tai dabar yra žinomas animaciją tai nuostabiai protingas dabar ir suprantama. [Juokas] Taip, kietas. Rūšis geeking iš. Taigi, šie, tada, yra SQL injection atakas. Ir jie taip lengva išvengti naudojant teisė kodas arba teisę bibliotekose. Ir jūs pamatysite PSet7, tai kodėl mes suteikiame Jums užklausos funkciją. Taigi, iš erzinti pora kad mes maniau, mes norime duoti jums čia mūsų Likę minučių kartu. Taigi, kaip jūs žinote, nuo nulinio savaitę, mes pristatė šias dvi lemputes kurios yra gražus ne tik todėl, jie gana ir yra spalvinga, bet todėl, kad jie palaiko kažką vadinamas API Application Programavimas sąsaja ir į CS50 šiol, mes daugiausia dėmesio skiriama GET ir Kampo, bet it turns out ten kiti HTTP veiksmažodžiai kaip put. Ir iš tikrųjų, tai buvo Perėjimas nuo nulio savaitę Pristatymas kuriuo, jei jums reikia parašyti kodą, kuris siunčia a la PSet6 HTTP prašymas atrodo tai su šio teksto riekė apačioje, kuris yra vadinamas JSON, arba JavaScript objektas Žymėjimai kad mes kalbame apie kitą savaitę, galite įjungti arba išjungti arba pakeisti šviesų kaip tie spalvos. Taigi, jei CS50 taip pat turi be to, kai tų lempučių čia, New Haven jei norite skolintis juos galutinių projektų, taip pat kai "Microsoft" Juostos, kuri yra tarsi laikrodžiai, kad jums dėvėti aplink savo riešą kad panašiai turi taip, kad jums API galite rašyti savo programinę įrangą už juos. Mes turime su paskyrą "Apple" iOS "kodą, kad jei turite Apple Žiūrėti arba "iPhone" arba "iPad" arba iPod galite rašyti kodą, kad iš tikrųjų veikia tie. Turime visa krūva iš Arduinos, kurie yra Labai mažas kompiuteriai be atvejais, iš esmės, kad jūs galite prijungti per USB, paprastai į savo Mac arba PC, rašyti kodą, kuris veikia jų fizinį įtaisai, kurie dažnai turi jutiklius ant jų todėl jūs galite bendrauti su realiu pasauliu. Turime visa krūva Keliamaisiais Motion prietaisų, kurie yra USB prietaisai Mac ir Kompiuteriai, čia ir vėl, New Haven. Ir jei jūs prijunkite jį į savo "Mac", jūs iš tikrųjų galite kontroliuoti kompiuterį rašyti programinę įrangą kad infraraudonųjų spindulių sijų, skaičiai, kur yra jūsų žmogaus rankos, net neliesdami klaviatūros. Mes maniau, mes norime pasidalinti greitas žvilgsnis į tai, pavyzdžiui. [Muzikos grojimo] Taigi, mes turime visą krūva iš šių dalykų, taip pat vadinamas Myo rankos juostas kurį įdėti per savo dilbio ir tada jūs galite kontroliuoti nekilnojamojo pasaulyje ar virtualus pasaulis, kaip šis. [Muzikos grojimo] Arba mes taip pat turi tam tikrą "Google" Kartonas, kuris yra tiesiog, kaip, kartoninę dėžę galima įdėti į savo veido, bet skaidrių telefone į jį taip, kad jūs galėsite įdėti stiklo jūsų telefonas tikrai arti savo akimis. "Google" ir kartonas yra gana pigus $ 10 arba $ 20 d. Ir ji turi mažai lęšius kad šiek tiek ne pamainą ant jūsų ekrano vaizdą žmogui akys suteiks jums gylio pojūtį taip, kad jūs iš tikrųjų turi 3D aplinka priešais jus. Mes taip pat turime keletą Samsung pavara, kuri yra daugiau brangus versija tai, bet kurie gali panašiai slysti Android telefonas ir duoti jums iliuziją of-- ar duoti patirties virtualios realybės. Ir mūsų galutinis dvi minutes, mes manome, kad mes norime pabandyti tai padaryti. Jei aš galiu projektuoti, ką Colton turi čia tik pustyti apetitas, leiskite man eiti į priekį ir mesti iki dideliame ekrane čia. Leiskite nužudyti šviesas. Colton, jūs norite eiti į priekį ir įdėti į savo mobilųjį akimirkai ir ateiti į daugiau kaip į viduryje scenos? Ir jūs norite project-- Tai yra tai, ką Colton mato. Dabar, "Wi-Fi" čia yra ne toks stiprus, šiam prietaisui kad tai yra super įtikinama, bet Colton yra tiesiog Šioje stebuklinga futuristinis vietoje. Jis mato tik vieną vaizdą. Jūs matote savo kairę ir į dešinę akį kad jo smegenys yra susiuvimo kartu trimatis aplinka ant jo veido. Jis tiesiog pasirinktas meniu parinktį čia. Ir taip vėl, jis dėvi šį ausines su Samsung telefoną ant jo tai Belaidžiu projektavimas mūsų važtaraščius. Dabar jūs Marse, manau? COLTON: Manau, kad taip. Aš nesu įsitikinęs, [nesigirdi]. [Juokas] DAVID Malan: Pasirodo, Marsas turi šiuos meniu. COLTON: [nesigirdi] kai kietas vietos, jei mes norime eiti to-- DAVID Malan: Kur mes norime eiti? COLTON: [nesigirdi] DAVID Malan: Ir pažiūrėkime kur Colton imsis mumis dabar. COLTON: [nesigirdi] DAVID Malan: Taigi, ten tiek daug įvairių vietų, kur galite imtis patys. Yra FAPIs, per kurį galite rašyti žaidimus ar sąveikos, paleisti, galiausiai, telefonu. Taigi, jūs tikrai tik raštu mobiliojo telefono app. Tačiau dėl programinės įrangos ir grafikos galimybes, dabar Colton yra tai maža maža name. Ir tuo rizikos neužgožia save, Colton ir aš klijuoti aplink tuo klasės pabaigoje šiandien jei norite ateiti ir žaisti. Ir mes juos Atgal kitą savaitę taip pat. Be toliau, Ado tai jį šiandien. Mes jus pamatyti kitą savaitę. [Muzika - Ragga dvyniai "blogas žmogus"]