1 00:00:00,000 --> 00:00:02,405 >> [Glazbom] 2 00:00:02,405 --> 00:00:10,439 3 00:00:10,439 --> 00:00:11,980 DAVID Malan: U redu, ovo je CS50. 4 00:00:11,980 --> 00:00:13,740 To je kraj tjedna osam. 5 00:00:13,740 --> 00:00:15,887 I danas, počinjemo ispuniti u nekim dijelovima 6 00:00:15,887 --> 00:00:17,720 kada je riječ o izgradnji stvari na webu. 7 00:00:17,720 --> 00:00:20,020 Dakle, podsjetiti da je u ponedjeljak trošimo puno više vremena 8 00:00:20,020 --> 00:00:22,530 na PHP, što je to dinamički programski jezik koji 9 00:00:22,530 --> 00:00:26,872 nam omogućuje izlaz, među ostalim stvari, HTML i drugi takav sadržaj 10 00:00:26,872 --> 00:00:27,830 da ćete želite vidjeti. 11 00:00:27,830 --> 00:00:30,871 Ali mi stvarno nije gledao kako idemo za pohranu bilo kakve informacije. 12 00:00:30,871 --> 00:00:34,477 Doista, gotovo ništa od toga super zanimljive web stranice koje posjetite i danas 13 00:00:34,477 --> 00:00:36,560 imaju neku vrstu baze podataka na stražnjem kraju, zar ne? 14 00:00:36,560 --> 00:00:39,540 Facebook sigurno pohranjuje puno podataka o svima nama i Gmail pohranjuje sve 15 00:00:39,540 --> 00:00:40,210 Vaše e-pošte. 16 00:00:40,210 --> 00:00:44,150 >> I tako, mnoge druge web stranice su ne samo Statični Sadržaj to je informativan. 17 00:00:44,150 --> 00:00:45,640 To je zapravo dinamičan, na neki način. 18 00:00:45,640 --> 00:00:48,480 Možete dati ulaz, to ažurira stranice za druge ljude. 19 00:00:48,480 --> 00:00:50,620 Dobivate poruku, šaljete poruke, i tako dalje. 20 00:00:50,620 --> 00:00:54,250 Tako danas, mi gledamo na bliže u podlogu projekta 21 00:00:54,250 --> 00:00:57,330 da ćete zaroniti u sljedeća tjedan, CS50 financija, koji je 22 00:00:57,330 --> 00:01:00,509 zapravo će imati što graditi nešto nije u C, ali u PHP-u. 23 00:01:00,509 --> 00:01:02,550 Web stranicu koja izgleda Malo se nešto ovako 24 00:01:02,550 --> 00:01:05,810 koji omogućuje kupnju i prodaju dionice koje su zapravo 25 00:01:05,810 --> 00:01:09,044 će privući na stvarnom vremenu stock podaci iz Yahoo Finance. 26 00:01:09,044 --> 00:01:11,960 I tako u konačnici, da ćete imati iluzija za sebe i za korisnike 27 00:01:11,960 --> 00:01:14,550 da ste zapravo kupnju i prodaju dionice i uzimajući gotovo u stvarnom vremenu 28 00:01:14,550 --> 00:01:16,800 ažuriranja, upravljanje portfelj, od kojih svi 29 00:01:16,800 --> 00:01:20,310 će zahtijevati vlasništvo, u konačnici, baza podataka korisnika. 30 00:01:20,310 --> 00:01:23,330 >> Dakle, u svojim riječima, pogotovo ako niste 31 00:01:23,330 --> 00:01:25,670 super upoznati s računalom znanosti ili baze podataka, što 32 00:01:25,670 --> 00:01:30,790 znaš bazu podataka kako bi se upravo sada, u netehniËkih smislu? 33 00:01:30,790 --> 00:01:32,300 Što je? 34 00:01:32,300 --> 00:01:36,882 Kako biste ga opisali se cimerica ili prijatelja? 35 00:01:36,882 --> 00:01:40,100 >> PUBLIKA: [nečujan] Informacije [nečujan] 36 00:01:40,100 --> 00:01:44,430 >> DAVID Malan: Dakle, popis podataka, ili store-- listu informacija 37 00:01:44,430 --> 00:01:47,160 da možda želite pohraniti o nečemu, poput korisnika. 38 00:01:47,160 --> 00:01:50,190 I što učiniti korisnici povezane s njima? 39 00:01:50,190 --> 00:01:53,160 Ako ste korisnik na Facebooku ili Gmail, što su obilježja 40 00:01:53,160 --> 00:01:54,940 da svi mi korisnici imaju? 41 00:01:54,940 --> 00:01:58,530 Kao, što bi moglo biti neke od stupaca u tablici u kojoj smo 42 00:01:58,530 --> 00:01:59,390 aludirao zadnji put? 43 00:01:59,390 --> 00:02:01,140 Jer opet, možete mislim baze podataka 44 00:02:01,140 --> 00:02:05,810 stvarno kao fancy Excel datoteci ili Google Spreadsheet ili Apple Brojevi datoteke. 45 00:02:05,810 --> 00:02:08,280 >> Dakle, što mislite o kad mislite korisnik? 46 00:02:08,280 --> 00:02:11,290 Što su? 47 00:02:11,290 --> 00:02:11,790 Što je to? 48 00:02:11,790 --> 00:02:12,470 >> PUBLIKA: Ime. 49 00:02:12,470 --> 00:02:13,303 >> DAVID Malan: Ime. 50 00:02:13,303 --> 00:02:16,840 Dakle, ako ime, kao što su David Malan će biti ime nekog korisnika. 51 00:02:16,840 --> 00:02:17,980 Što još korisnik ima? 52 00:02:17,980 --> 00:02:18,770 >> PUBLIKA: predočenje osobne iskaznice. 53 00:02:18,770 --> 00:02:19,561 >> DAVID Malan: predočenje osobne iskaznice. 54 00:02:19,561 --> 00:02:23,320 Dakle, kao što su matični broj, kao što je vaš Harvard ID ili vaš Yale Neto ID ili slično. 55 00:02:23,320 --> 00:02:24,923 Što drugo bi moglo korisnik ima? 56 00:02:24,923 --> 00:02:25,890 >> PUBLIKA: Lozinka. 57 00:02:25,890 --> 00:02:29,240 >> DAVID Malan: Lozinka, možda jednom adresa, možda broj telefona, možda 58 00:02:29,240 --> 00:02:30,050 adresa e-pošte. 59 00:02:30,050 --> 00:02:32,640 Dakle, postoji grozdove polja i to mogao vrsta spiralni izvan kontrole 60 00:02:32,640 --> 00:02:34,760 brzo, čim počnete realizirati, oh, neka je spremiti ova 61 00:02:34,760 --> 00:02:36,190 i neka je pohraniti ovo i ono. 62 00:02:36,190 --> 00:02:37,657 >> No, kako ćemo zapravo učiniti? 63 00:02:37,657 --> 00:02:39,740 Pa opet, mentalni model da su za danas kao što smo 64 00:02:39,740 --> 00:02:42,320 zaroniti u stvarni SQL, Structured Query Language, 65 00:02:42,320 --> 00:02:44,186 je baza podataka koja izgleda ovako. 66 00:02:44,186 --> 00:02:45,310 To je samo retke i stupce. 67 00:02:45,310 --> 00:02:48,309 A možete zamisliti Google tablice ili bilo koji broj drugih programa. 68 00:02:48,309 --> 00:02:52,130 No, ono što je ključno o MySQL, koji je baze podataka softver ćemo koristiti, 69 00:02:52,130 --> 00:02:54,920 slobodno otvoreno available-- Facebook koristi 70 00:02:54,920 --> 00:02:59,200 to i bilo koji broj ostalih websites-- Baza podataka pohranjuje stvari relacijski. 71 00:02:59,200 --> 00:03:01,770 I relacijske baze podataka samo znači onaj koji doslovno 72 00:03:01,770 --> 00:03:03,672 pohranjuje svoje podatke u retke i stupce. 73 00:03:03,672 --> 00:03:04,630 To je kao jednostavan kao taj. 74 00:03:04,630 --> 00:03:07,230 >> Dakle, čak i nešto poput Oracle koji možda su uglavnom čuli 75 00:03:07,230 --> 00:03:08,271 je relacijska baza podataka. 76 00:03:08,271 --> 00:03:10,929 A ispod haube ga, pohranjuje podatke u retke i stupce. 77 00:03:10,929 --> 00:03:12,970 I Oracle vam naplaćuje mnogo novca za to, 78 00:03:12,970 --> 00:03:15,550 dok MySQL optužbi ti ništa za iste. 79 00:03:15,550 --> 00:03:18,790 Dakle, SQL će nam dati najmanje četiri operacije. 80 00:03:18,790 --> 00:03:23,190 Sposobnost za odabir podataka, kao što su čitanje podataka, umetanje, brisanje i ažuriranje podataka. 81 00:03:23,190 --> 00:03:25,525 Drugim riječima, to su Stvarno četiri ključna poslovanje 82 00:03:25,525 --> 00:03:28,950 koji će nam omogućiti da promijenite stvari u tim redaka i stupaca. 83 00:03:28,950 --> 00:03:33,250 >> Alat koji ćemo koristiti danas posebno kako bi naučili SQL i igrati s njim 84 00:03:33,250 --> 00:03:34,627 opet zove PHP MyAdmin. 85 00:03:34,627 --> 00:03:35,460 To je tkanje temeljen alat. 86 00:03:35,460 --> 00:03:38,200 Ukupno slučajnost da to je napisano u PHP. 87 00:03:38,200 --> 00:03:42,400 Ali to će nam dati grafički korisničko sučelje, tako da možemo zapravo 88 00:03:42,400 --> 00:03:46,054 stvaranje tih redaka i stupaca a onda razgovarati s njima putem koda. 89 00:03:46,054 --> 00:03:47,970 Dakle, neka je sada početi ono što mislim da je iskreno 90 00:03:47,970 --> 00:03:51,000 vrsta procesa zabavu izgradnju stražnji kraj internetskim stranicama, 91 00:03:51,000 --> 00:03:54,580 dijelovi koji korisnici ne vidi, ali sigurno stalo, 92 00:03:54,580 --> 00:03:56,170 jer to je već data događa. 93 00:03:56,170 --> 00:03:59,570 Dakle, slično C i dodaje se malo manje kao PHP, 94 00:03:59,570 --> 00:04:04,954 SQL ili baza podataka koja podržava SQL, ima tipova najmanje ove podatke 95 00:04:04,954 --> 00:04:05,870 i grozdovima drugih. 96 00:04:05,870 --> 00:04:08,107 CHAR, VARCHAR, INT, BIGINT, Decimalni, i DATETIME. 97 00:04:08,107 --> 00:04:09,940 A tu je cijela hrpa druge značajke, 98 00:04:09,940 --> 00:04:11,940 ali neka je to učiniti način stvarnog primjera. 99 00:04:11,940 --> 00:04:16,450 >> Ja ću ići u CS50 IDE gdje je, unaprijed sam logiran 100 00:04:16,450 --> 00:04:19,372 i ja također sam posjetio URL Ovaj alat se zove PHP MyAdmin. 101 00:04:19,372 --> 00:04:22,580 A problema postaviti sedam, mi ćemo reći točno kako doći do tog sučelja 102 00:04:22,580 --> 00:04:23,200 kao. 103 00:04:23,200 --> 00:04:25,640 Na gornjem lijevom kutu, primijetiti da kaže predavanje. 104 00:04:25,640 --> 00:04:27,610 A to samo znači da unaprijed, sam stvorio 105 00:04:27,610 --> 00:04:31,360 prazna baza zove predavanje da nema tablice u njemu još. 106 00:04:31,360 --> 00:04:32,600 Nema redaka i stupaca. 107 00:04:32,600 --> 00:04:34,308 Jer prvi što ćemo učiniti 108 00:04:34,308 --> 00:04:37,100 se početi stvoriti tablicu koje će pohraniti svoje korisnike. 109 00:04:37,100 --> 00:04:39,100 >> Dakle, doslovno preko Ovdje na desno, ja sam 110 00:04:39,100 --> 00:04:42,070 će reći baze podataka Želim stol pod nazivom korisnicima. 111 00:04:42,070 --> 00:04:44,845 Dakle, to je kao da ja datoteke Želite pohraniti sve moje podatke u. 112 00:04:44,845 --> 00:04:45,720 A koliko stupaca? 113 00:04:45,720 --> 00:04:47,740 Pa, neka je i dalje ostane jednostavan za sada. 114 00:04:47,740 --> 00:04:51,855 Samo želim pohraniti poput ime i naziv za korisnika. 115 00:04:51,855 --> 00:04:53,020 Počet ćemo mala. 116 00:04:53,020 --> 00:04:55,370 Dakle, želim dva stupca ukupno. 117 00:04:55,370 --> 00:04:57,360 I ja ću ići naprijed i kliknite Idi. 118 00:04:57,360 --> 00:04:59,210 A onda, za njih stupaca, što ću 119 00:04:59,210 --> 00:05:04,576 da do-- ako ovim internet cooperates-- sve u redu, 120 00:05:04,576 --> 00:05:05,950 pa ćemo opet pokušati. 121 00:05:05,950 --> 00:05:09,180 Idem stvoriti tablicu pod nazivom Korisnici s dva stupca, kliknite Idi, OK. 122 00:05:09,180 --> 00:05:10,520 Sada imamo to jako brzo. 123 00:05:10,520 --> 00:05:12,065 Hvala vam, vrlo dobro učinio. 124 00:05:12,065 --> 00:05:14,440 U redu, tako da ono što želimo Ovi stupci se zove? 125 00:05:14,440 --> 00:05:16,080 >> Dakle, on će se zvati ime. 126 00:05:16,080 --> 00:05:19,480 Dakle, sve što vidim here-- i sučelje iskreno dobiva malo ružno na kraju, 127 00:05:19,480 --> 00:05:21,270 Jednom kada počnete upisivati ​​u svim tim podacima. 128 00:05:21,270 --> 00:05:27,450 No, ono što je lijepo je da vrsta paradoksalno, sam stvara kolone, 129 00:05:27,450 --> 00:05:29,977 ali alat ima glupo postavio ih u redove 130 00:05:29,977 --> 00:05:31,560 tako da mogu konfigurirati te stupce. 131 00:05:31,560 --> 00:05:33,550 Dakle, postoje dva praznine tamo pod Name. 132 00:05:33,550 --> 00:05:36,180 A jedan od tih područja I želim se zove imenom, 133 00:05:36,180 --> 00:05:38,000 a druga polje Želim nazvati ime. 134 00:05:38,000 --> 00:05:40,340 >> A sada moram odabrati vrste podataka za te stvari. 135 00:05:40,340 --> 00:05:42,330 Dakle, dok je u programu Excel i Google Proračunske tablice, 136 00:05:42,330 --> 00:05:45,531 Ako želite stupac, doslovno samo upišite ime ili korisničko ime, pritisnite Enter. 137 00:05:45,531 --> 00:05:48,030 Možda je podebljana napraviti samo za jasnoću, ali to je to. 138 00:05:48,030 --> 00:05:50,140 Ne odrediti vrste stupovima. 139 00:05:50,140 --> 00:05:53,790 Sada u Google ili Excel, možda odrediti kako se podaci donesena. 140 00:05:53,790 --> 00:05:58,120 Ti bi mogao ići na izborniku Format, a vi Možete odrediti pokazati kao znak za dolar, 141 00:05:58,120 --> 00:05:59,900 pokazati kao Krajnja vrijednost. 142 00:05:59,900 --> 00:06:01,990 >> Dakle, to je sličan u duhu da je ono što smo o tome da radimo, 143 00:06:01,990 --> 00:06:04,740 ali to se zapravo događa na snagu podaci biti određena vrsta. 144 00:06:04,740 --> 00:06:07,750 Sada, iako je trenutak prije sam rekao da postoji samo nekoliko vrsta podataka, 145 00:06:07,750 --> 00:06:11,120 tu je zapravo puno, a oni su 146 00:06:11,120 --> 00:06:12,910 u različitim stupnjevima specifičnosti. 147 00:06:12,910 --> 00:06:14,970 I usput, ti Možete čak napraviti ukrasni stvari 148 00:06:14,970 --> 00:06:17,520 kao i skladišnih geometrija unutar baze podataka. 149 00:06:17,520 --> 00:06:19,250 Možete pohraniti stvari poput GPS koordinate 150 00:06:19,250 --> 00:06:22,420 i zapravo naći, matematički, Točke koje su u neposrednoj blizini drugih. 151 00:06:22,420 --> 00:06:24,128 Ali ćemo zadržati ovu super jednostavno 152 00:06:24,128 --> 00:06:26,800 i idite do ovdje, sve takozvani tipa string. 153 00:06:26,800 --> 00:06:29,240 >> Dakle, ovdje je popis od a cijela hrpa opcija. 154 00:06:29,240 --> 00:06:32,740 CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. 155 00:06:32,740 --> 00:06:34,110 I to je vrsta neodoljiv. 156 00:06:34,110 --> 00:06:37,610 I na žalost, nešto paradoksalno u C, 157 00:06:37,610 --> 00:06:40,120 char nije stvarno CHAR. 158 00:06:40,120 --> 00:06:44,170 Ako ste naveli u bazi podataka da je vaš tip podataka CHAR, 159 00:06:44,170 --> 00:06:47,390 to znači da da, to je CHAR, ali to je jedan ili više znakova. 160 00:06:47,390 --> 00:06:49,630 I morate navesti koliko znakova želite. 161 00:06:49,630 --> 00:06:51,636 Dakle, ono što je tipično Duljina za korisničko ime? 162 00:06:51,636 --> 00:06:52,760 Postoji li ograničenje obično? 163 00:06:52,760 --> 00:06:53,920 >> PUBLIKA: [nečujan] 164 00:06:53,920 --> 00:06:55,050 >> DAVID Malan: 16 možda? 165 00:06:55,050 --> 00:06:55,990 Nešto kao to. 166 00:06:55,990 --> 00:06:57,948 Znaš, vratiti u dana, što je nekad bilo osam. 167 00:06:57,948 --> 00:07:00,289 Ponekad je 16, ponekad to je čak i više od toga. 168 00:07:00,289 --> 00:07:02,080 I tako, to ne znači daj mi jedan znak. 169 00:07:02,080 --> 00:07:04,730 To znači da moram navesti duljina polju, 170 00:07:04,730 --> 00:07:07,402 i sad bih mogla reći nešto poput 16. 171 00:07:07,402 --> 00:07:08,610 I tu je trgovina off ovdje. 172 00:07:08,610 --> 00:07:11,360 Dakle, vidjet ćemo za koji trenutak to znači da je jedan, 173 00:07:11,360 --> 00:07:14,620 svaki korisničko ime mora biti 16 znakova. 174 00:07:14,620 --> 00:07:18,720 Ali čekaj malo, M-a-L-A-N. Ako je to moje ime i ja sam samo pomoću pet, 175 00:07:18,720 --> 00:07:23,070 što bi predložiti da se baza podataka učiniti za ostale 11 znakova koji 176 00:07:23,070 --> 00:07:24,471 Ja sam rezerviran prostor za? 177 00:07:24,471 --> 00:07:25,220 Što bi ti napravio? 178 00:07:25,220 --> 00:07:26,480 >> PUBLIKA: [nečujan] 179 00:07:26,480 --> 00:07:27,160 >> DAVID Malan: Da, samo bi ih sve null. 180 00:07:27,160 --> 00:07:28,290 Napravite im mjesta. 181 00:07:28,290 --> 00:07:30,816 No, vjerojatno null, tako Mnogo kose crtice nula. 182 00:07:30,816 --> 00:07:33,190 Dakle, s jedne strane, mi smo Sada su sigurni da moje korisničko ime 183 00:07:33,190 --> 00:07:34,780 može biti više od 16 znakova. 184 00:07:34,780 --> 00:07:37,590 A druga strana koja je da, ako sam imao jako dugo ime 185 00:07:37,590 --> 00:07:39,940 ili htjeli stvarno dugo korisničko ime kao što neki od vas 186 00:07:39,940 --> 00:07:44,840 dečki možda u tom faksu ili na Yale.edu, ne možete imati jedan. 187 00:07:44,840 --> 00:07:47,177 I tako, u stvari, ako ste nikad registrirana za web stranicu 188 00:07:47,177 --> 00:07:49,385 a vi dobiti vikao na rekavši vaša lozinka je predugačak 189 00:07:49,385 --> 00:07:52,710 ili vaše korisničko ime je predugo, to je jednostavno zato programer, kada 190 00:07:52,710 --> 00:07:55,500 konfiguriranje svoje baze podataka, odlučili da će ovo polje 191 00:07:55,500 --> 00:07:57,150 biti duži od ove duljine. 192 00:07:57,150 --> 00:08:00,580 >> U redu, što ako ćemo nastaviti na ime? 193 00:08:00,580 --> 00:08:05,240 Koliko Ukoliko Ime tipičan ljudski je se? 194 00:08:05,240 --> 00:08:07,492 Koliko znakova, 16? 195 00:08:07,492 --> 00:08:09,450 Ja sam guessing smo mogli naći nekoga u ovoj sobi 196 00:08:09,450 --> 00:08:13,210 gdje njegov ili njezin prvi plus zadnjem Naziv je duži od 16 znakova. 197 00:08:13,210 --> 00:08:14,850 Dakle, što je bolje od toga, 17? 198 00:08:14,850 --> 00:08:17,040 18? 199 00:08:17,040 --> 00:08:18,830 25? 200 00:08:18,830 --> 00:08:20,350 Veći? 201 00:08:20,350 --> 00:08:20,980 30? 202 00:08:20,980 --> 00:08:21,855 >> PUBLIKA: [nečujan] 203 00:08:21,855 --> 00:08:23,700 DAVID Malan: 5000, Bože moj. 204 00:08:23,700 --> 00:08:26,309 Dakle, to je vjerojatno pristojan gornju granicu, reći ćemo. 205 00:08:26,309 --> 00:08:28,350 I ovdje smo vrsta ima da sud poziva. 206 00:08:28,350 --> 00:08:30,400 Kao, nema pravi odgovor ovdje. 207 00:08:30,400 --> 00:08:32,740 Beskrajno nije baš moguće, jer smo na kraju 208 00:08:32,740 --> 00:08:34,781 će have-- smo će ostati bez memorije. 209 00:08:34,781 --> 00:08:36,909 Dakle, moramo napraviti sud poziva u nekom trenutku. 210 00:08:36,909 --> 00:08:41,010 >> Vrlo često će biti, na primjer, da use-- i neka mi navesti CHAR ovdje 211 00:08:41,010 --> 00:08:46,050 kao before-- 255 je doslovno gornja granica ovog softvera baze podataka 212 00:08:46,050 --> 00:08:46,700 godinama prije. 213 00:08:46,700 --> 00:08:48,575 I tako, puno ljudi Samo će reći, u redu. 214 00:08:48,575 --> 00:08:49,420 255 je granica. 215 00:08:49,420 --> 00:08:50,620 Ajmo koristiti maksimum. 216 00:08:50,620 --> 00:08:51,870 I to je prilično smiješno. 217 00:08:51,870 --> 00:08:55,060 Kao, ako pišete netko naziv za 200 plus znakova, 218 00:08:55,060 --> 00:08:56,140 da malo smiješno. 219 00:08:56,140 --> 00:08:59,624 >> No, ne zaboravite da ASCII nije jedini sustav za likove. 220 00:08:59,624 --> 00:09:01,540 I tako, pogotovo u Puno azijskih jezika 221 00:09:01,540 --> 00:09:04,248 gdje ima likova ne možemo izraziti na klavijaturama poput moje SAD 222 00:09:04,248 --> 00:09:08,209 tipkovnica, neki likovi zapravo uzmi 16 bita umjesto osam bitova. 223 00:09:08,209 --> 00:09:10,250 I tako, to je zapravo nije sve što je nerazumna 224 00:09:10,250 --> 00:09:12,250 da trebamo više Prostor ako želimo stati 225 00:09:12,250 --> 00:09:16,252 veći likovi nego samom SAD centric one koje smo skloni da raspravljati. 226 00:09:16,252 --> 00:09:17,460 Dakle, trebamo neke gornja granica. 227 00:09:17,460 --> 00:09:21,470 Ne znam što je najbolje on je, ali 255 je općenito čest jedan. 228 00:09:21,470 --> 00:09:22,700 25 osjeća nisko. 229 00:09:22,700 --> 00:09:23,857 16, 32 osjećate niska. 230 00:09:23,857 --> 00:09:25,690 Ja bih griješiti na strani nešto više. 231 00:09:25,690 --> 00:09:27,330 No, tu je trgovina off, kao i uvijek. 232 00:09:27,330 --> 00:09:31,902 Što je, možda, očito trgovina off rezerviranje 255 znakova 233 00:09:31,902 --> 00:09:33,360 za svačiji ime u mojoj bazi? 234 00:09:33,360 --> 00:09:34,230 >> PUBLIKA: [nečujan] 235 00:09:34,230 --> 00:09:34,510 >> DAVID Malan: Što je to? 236 00:09:34,510 --> 00:09:35,430 >> PUBLIKA: [nečujan] 237 00:09:35,430 --> 00:09:37,138 >> DAVID Malan: To je puno memorije, zar ne? 238 00:09:37,138 --> 00:09:42,280 M-A-L-A-N. Upravo sam gubio 250 likovi jednostavno pohraniti svoje ime 239 00:09:42,280 --> 00:09:46,000 obrambeno, samo u slučaju da netko u razredu ima jako dugu ime. 240 00:09:46,000 --> 00:09:47,940 To izgleda kao nepotrebnog tradeoff. 241 00:09:47,940 --> 00:09:52,040 >> Dakle, ispada da SQL, taj jezik baze podataka, 242 00:09:52,040 --> 00:09:55,480 zapravo podržava nešto zove VARCHAR ili Promjenjiva CHAR. 243 00:09:55,480 --> 00:09:59,390 A to je vrsta lijepo u da je ovaj omogućuje vam da odredite nije fiksna 244 00:09:59,390 --> 00:10:01,900 širina, nego varijabla širina. 245 00:10:01,900 --> 00:10:05,060 I još točnije, Maksimalna širina područja. 246 00:10:05,060 --> 00:10:08,901 Dakle, to znači da ime može biti više od 250 znakova, 247 00:10:08,901 --> 00:10:10,150 ali svakako može biti manje. 248 00:10:10,150 --> 00:10:11,733 A baza podataka će biti pametni. 249 00:10:11,733 --> 00:10:14,860 Ako ne stavite u M-a-L-A-N, to će samo koristiti pet, 250 00:10:14,860 --> 00:10:18,120 možda šest bajtova za slično prateći null karakter, 251 00:10:18,120 --> 00:10:23,330 a ne provesti dodatna 249 ili 250 bajtova potrebe. 252 00:10:23,330 --> 00:10:27,380 >> Dakle, ovo izgleda kao da sam trebao su počeli s ovom pričom. 253 00:10:27,380 --> 00:10:29,140 No, tu je uvijek tradeoff. 254 00:10:29,140 --> 00:10:33,024 Dakle, s jedne strane, korisničko ime Ive navedeno da se teško kodirani na 16, 255 00:10:33,024 --> 00:10:34,940 a možda to nije pravo poziv, možda ga 256 00:10:34,940 --> 00:10:40,040 je, ali zašto ne koristiti VARCHARs za sve? 257 00:10:40,040 --> 00:10:42,020 >> Ona postoji s razlogom. 258 00:10:42,020 --> 00:10:46,200 Zašto ne koristiti VARCHARs i za svaku čija je duljina ne znate unaprijed 259 00:10:46,200 --> 00:10:48,180 Ako se čini da je velika stvar, zar ne? 260 00:10:48,180 --> 00:10:50,482 Koristite samo što više prostora morate do ove granice? 261 00:10:50,482 --> 00:10:51,271 >> PUBLIKA: Sporiji. 262 00:10:51,271 --> 00:10:52,146 DAVID Malan: Speller? 263 00:10:52,146 --> 00:10:53,120 PUBLIKA: to čini sporije? 264 00:10:53,120 --> 00:10:53,970 DAVID Malan: Oh, to je sporije. 265 00:10:53,970 --> 00:10:55,720 Dobro, to je gotovo uvijek odgovor, iskreno. 266 00:10:55,720 --> 00:10:56,520 Kao što je tradeoff? 267 00:10:56,520 --> 00:10:58,570 To bilo košta više prostora ili to košta više vremena. 268 00:10:58,570 --> 00:11:00,111 Dakle, u ovom slučaju, to može biti sporije. 269 00:11:00,111 --> 00:11:00,920 Zašto? 270 00:11:00,920 --> 00:11:05,830 >> PUBLIKA: [nečujan] utvrđivanje [nečujan]. 271 00:11:05,830 --> 00:11:06,640 >> DAVID Malan: Dobro. 272 00:11:06,640 --> 00:11:09,670 Dakle, možda ćete se sjetiti s čak PSED5, igranje s pristupom 273 00:11:09,670 --> 00:11:12,750 u rječnik, ako imate alocirati memoriju dinamički ili zadržati 274 00:11:12,750 --> 00:11:14,630 uzgoju pufer, koji zapravo može biti spor. 275 00:11:14,630 --> 00:11:16,963 Ako imate nazvati malloc ispod haube, a možda 276 00:11:16,963 --> 00:11:19,610 to je ono što MySQL radi, tako da sigurno da bi mogao biti slučaj. 277 00:11:19,610 --> 00:11:22,430 A ako mislite način natrag na PSet-- ili čak 278 00:11:22,430 --> 00:11:26,340 tjedna dva, kad smo radili stvari kao binarno traženje ili čak linearno pretraživanje, 279 00:11:26,340 --> 00:11:30,690 jedna od lijepih stvari o svakoj riječi u bazi podataka ili svaku riječ u stupcu 280 00:11:30,690 --> 00:11:33,690 što točno iste duljine, čak Ako cijela hrpa onih znakova 281 00:11:33,690 --> 00:11:37,390 prazno, je da možete koristiti izravnim pristupom na vašim podacima, zar ne? 282 00:11:37,390 --> 00:11:40,310 >> Ako znate da je svaki Riječ je 16 znakova daleko, 283 00:11:40,310 --> 00:11:46,460 možete koristiti pokazivač aritmetiku, tako da govoriti, i ići s nama 16, 32, 48, 64, 284 00:11:46,460 --> 00:11:49,589 a vi jednostavno možete skočiti odmah pomoću aritmetičke 285 00:11:49,589 --> 00:11:51,130 bilo riječi u vašoj bazi podataka. 286 00:11:51,130 --> 00:11:54,280 Dok ako je VARCHAR, što ti umjesto morate učiniti? 287 00:11:54,280 --> 00:11:55,960 >> [Zvonjava telefona] 288 00:11:55,960 --> 00:11:58,680 >> Ako je VARCHAR, što Ne mogu koristiti slučajni pristup. 289 00:11:58,680 --> 00:12:01,341 Što morate tražiti ili učiniti? 290 00:12:01,341 --> 00:12:01,840 Da? 291 00:12:01,840 --> 00:12:03,240 >> PUBLIKA: [nečujan] 292 00:12:03,240 --> 00:12:04,310 >> DAVID Malan: Pogledajte kroz whole-- traga 293 00:12:04,310 --> 00:12:06,518 kroz cijeli popis u potrazi za što, najvjerojatnije? 294 00:12:06,518 --> 00:12:08,356 Kakve posebne vrijednosti? 295 00:12:08,356 --> 00:12:09,230 PUBLIKA: [nečujan] 296 00:12:09,230 --> 00:12:11,105 DAVID Malan: Tražim za nultu terminatora 297 00:12:11,105 --> 00:12:13,637 da razgraničenje razdvajanje riječi. 298 00:12:13,637 --> 00:12:15,720 Pa opet, tradeoff i nema pravi odgovor. 299 00:12:15,720 --> 00:12:18,380 No, ovo je mjesto gdje, pogotovo kada korisnici doći do biti mnogo 300 00:12:18,380 --> 00:12:21,700 i tvoj teret na svojim serverima je broj ljudi koristi se dobiva visoka, 301 00:12:21,700 --> 00:12:23,650 To su zapravo Netrivijalno odluke. 302 00:12:23,650 --> 00:12:26,640 Dakle, možemo ostaviti ih kao ovaj, ali neka je spustite na to pravo 303 00:12:26,640 --> 00:12:27,332 ovdje. 304 00:12:27,332 --> 00:12:30,290 Sada postoji nekoliko stupaca gdje moramo napraviti sud poziva. 305 00:12:30,290 --> 00:12:35,170 Ima li smisla dopustiti korisnik je ime, korisnički korisničko ime ili korisnički a 306 00:12:35,170 --> 00:12:36,370 ime, da bude nula? 307 00:12:36,370 --> 00:12:37,610 To je, jednostavno prazan. 308 00:12:37,610 --> 00:12:40,360 Osjeća malo besmisleno, pa sam Ne ide to provjeriti one kutije. 309 00:12:40,360 --> 00:12:42,670 Ali ispada u baze podataka, možete reći, 310 00:12:42,670 --> 00:12:44,620 netko može po izboru imati tu vrijednost. 311 00:12:44,620 --> 00:12:47,180 Ovaj stupac nema zapravo biti tamo. 312 00:12:47,180 --> 00:12:48,570 >> Zatim, tu je ovaj padajući izbornik. 313 00:12:48,570 --> 00:12:50,810 I primijetiti još sam u prvom redu tu, 314 00:12:50,810 --> 00:12:52,520 pa ja govorim o korisničkim imenom sada. 315 00:12:52,520 --> 00:12:56,290 I ispada da je baza podataka, za razliku od jednostavnog puke tablice, 316 00:12:56,290 --> 00:12:58,520 ima snažne značajke zove indeksa. 317 00:12:58,520 --> 00:13:02,600 I indeks je način da govore Baza unaprijed da ja, ljudski 318 00:13:02,600 --> 00:13:03,900 sam pametniji od tebe. 319 00:13:03,900 --> 00:13:10,430 >> Znam što vrste upita, odaberite ili umetnuti ili izbrisati ili ažurirati, 320 00:13:10,430 --> 00:13:13,182 da moj broj ide do kraja se radi na ovoj bazi podataka. 321 00:13:13,182 --> 00:13:14,390 Želim pročitati puno podataka. 322 00:13:14,390 --> 00:13:15,681 Želim umetnuti puno podataka. 323 00:13:15,681 --> 00:13:17,530 Želim da stalno Brisanje puno podataka. 324 00:13:17,530 --> 00:13:21,520 Ako znam da ću biti Pristupom polje kao Username puno, 325 00:13:21,520 --> 00:13:24,770 Ja preventivno može reći baze podataka, znam više od tebe, 326 00:13:24,770 --> 00:13:29,220 a ja želim da se dekretom trebali Indeks ovo područje. 327 00:13:29,220 --> 00:13:33,200 Gdje indeksiranje polje ili stupac znači da je baza podataka u unaprijed 328 00:13:33,200 --> 00:13:37,040 trebali posuditi neke ideje iz, kao što su, Tjedan četiri i pet i šest od CS50 329 00:13:37,040 --> 00:13:39,240 i zapravo izgraditi nešto kao binarnog pretraživanja 330 00:13:39,240 --> 00:13:41,560 stablo ili nešto obično naziva B stablo 331 00:13:41,560 --> 00:13:43,410 da bi saznali u klasi kao CS124 332 00:13:43,410 --> 00:13:46,710 na Harvardu, An algoritmi klase, ili bilo koji drugi broj mjesta. 333 00:13:46,710 --> 00:13:49,570 >> Baza podataka i pametna ljudi koji ga provode 334 00:13:49,570 --> 00:13:53,880 će shvatiti kako za pohranu da tablica podataka 335 00:13:53,880 --> 00:13:57,061 u memoriji tako da pretraga i ostali poslovi su super brzo. 336 00:13:57,061 --> 00:13:58,060 Ne moraš to učiniti. 337 00:13:58,060 --> 00:14:00,640 Ne morate provoditi linearni traži ili binarno traženje 338 00:14:00,640 --> 00:14:03,300 ili spojiti vrsta ili odabir vrsta, ništa od toga. 339 00:14:03,300 --> 00:14:06,590 Baza to radi za vas, ako kažem to preventivno indeks ovo polje. 340 00:14:06,590 --> 00:14:09,100 >> A možete vidjeti, postoji neke druge osobine 341 00:14:09,100 --> 00:14:11,010 možemo reći baza podataka za provedbu. 342 00:14:11,010 --> 00:14:16,431 Što bi to značilo da sam odabrati jedinstvene iz ovog izbornika, jednostavno intuitivno? 343 00:14:16,431 --> 00:14:16,930 Da? 344 00:14:16,930 --> 00:14:17,889 >> PUBLIKA: [nečujan] 345 00:14:17,889 --> 00:14:19,930 DAVID Malan: Da, korisničko ime mora biti jedinstveno. 346 00:14:19,930 --> 00:14:23,330 Je li to dobra stvar ili loša stvar za baza podataka, za web stranice s korisnicima? 347 00:14:23,330 --> 00:14:24,965 Ukoliko korisnička imena biti jedinstveni? 348 00:14:24,965 --> 00:14:25,880 Da, vjerojatno. 349 00:14:25,880 --> 00:14:27,800 Ako je to ono što je Polje se koristiti za prijavu, 350 00:14:27,800 --> 00:14:31,867 ti stvarno ne želim da ljudi imaju isti osjećaj ili isto korisničko ime. 351 00:14:31,867 --> 00:14:33,700 Dakle, možemo imati Baza provoditi tako da 352 00:14:33,700 --> 00:14:37,880 da je sada u mom PHP koda ili bilo kojem jeziku, Nemam se, na primjer, provjerite 353 00:14:37,880 --> 00:14:41,490 nužno radi ovaj korisničko ime postojati prije nego što sam neka netko registrirati? 354 00:14:41,490 --> 00:14:46,690 Baza podataka neće dopustiti dvije osobe po imenu David ili Malans registrirati u ovom slučaju. 355 00:14:46,690 --> 00:14:50,030 >> I usput, iako je to Izbornik samo vam omogućuje da odaberete jedan, 356 00:14:50,030 --> 00:14:54,550 jedinstveni indeks je onaj koji je indeksirane za super brzi nastup, 357 00:14:54,550 --> 00:14:56,100 ali ona također provodi jedinstvenost. 358 00:14:56,100 --> 00:14:58,850 A mi ćemo se vratiti na ono što je Druga dva znače u samo trenutak. 359 00:14:58,850 --> 00:15:00,930 U međuvremenu, ako ja ići na moj drugi red, koji 360 00:15:00,930 --> 00:15:06,230 korisniku je ime, trebam navesti da ime treba biti jedinstven? 361 00:15:06,230 --> 00:15:09,550 Ne, zato što bi svakako have-- nema dva Davida 362 00:15:09,550 --> 00:15:11,050 Malans u ovoj sobi, najvjerojatnije. 363 00:15:11,050 --> 00:15:14,290 Ali ako ćemo odabrati drugo ime, mi sigurno može imati sudara. 364 00:15:14,290 --> 00:15:16,130 >> Razmislite hash tablice i slično. 365 00:15:16,130 --> 00:15:18,604 Dakle, mi sigurno ne želite da je polje ime jedinstven. 366 00:15:18,604 --> 00:15:21,270 Dakle, samo ćemo ostaviti da kao crtica, crtica, crtica, ništa. 367 00:15:21,270 --> 00:15:22,660 I ja ću otići sve ostalo sam. 368 00:15:22,660 --> 00:15:25,035 Doista, većina tih područja nećemo morati brinuti o tome. 369 00:15:25,035 --> 00:15:27,830 A kada sam spremna za spremanje ovaj, ako je internet surađuje, 370 00:15:27,830 --> 00:15:35,032 Ja kliknite Spremi, a vrlo, vrlo, vrlo Polako se baza podataka biti spašen. 371 00:15:35,032 --> 00:15:37,240 I sada sam natrag na ovaj sučelje, koje doduše, 372 00:15:37,240 --> 00:15:38,680 je neodoljiv na prvi pogled. 373 00:15:38,680 --> 00:15:42,450 Ali sve ću učiniti je kliknuti na riječi korisnike u gornjem lijevom kutu. 374 00:15:42,450 --> 00:15:47,630 Ja ću ići ovdje, kliknite Korisnici i po defaultu, to 375 00:15:47,630 --> 00:15:50,180 je izvršiti neku SQL, ali više o tome u ovom trenutku. 376 00:15:50,180 --> 00:15:52,654 Evo samo sažetak onoga što sam učinio. 377 00:15:52,654 --> 00:15:55,320 I ne brinite da vidite spomenuti latinski i švedski ovdje. 378 00:15:55,320 --> 00:16:00,490 Oni su samo zadana Postavke jer MySQL izvorno, 379 00:16:00,490 --> 00:16:04,000 ili PHP MyAdmin, jedan od dvojice dogodilo treba napisati neki švedskih ljudi. 380 00:16:04,000 --> 00:16:06,100 Ali to je nebitno u našem slučaju ovdje. 381 00:16:06,100 --> 00:16:08,280 >> U redu, pa zašto je sve ovo zanimljivo? 382 00:16:08,280 --> 00:16:13,050 Ispada, mogu umetnuti podatke u bazu podataka od strane pisanja koda. 383 00:16:13,050 --> 00:16:15,940 A ja ići naprijed i u mom datoteku ovdje, ja sam 384 00:16:15,940 --> 00:16:19,000 ići naprijed i praviti se kao to je priključena na toj bazi podataka, koja 385 00:16:19,000 --> 00:16:23,040 to nije u ovom trenutku, ali to će se biti kad dođemo do problema postaviti sedam. 386 00:16:23,040 --> 00:16:25,640 I ja ću ići naprijed i izvršiti funkciju pod nazivom upita, 387 00:16:25,640 --> 00:16:28,730 koje ćemo vam dati problema postaviti sedam distribucija koda, koji 388 00:16:28,730 --> 00:16:31,490 traje najmanje jedan argument, što je samo niz. 389 00:16:31,490 --> 00:16:33,460 Niz SQL koda. 390 00:16:33,460 --> 00:16:36,700 Dakle, vi ste o kako bi naučili kako Napiši Structured Query Language. 391 00:16:36,700 --> 00:16:41,270 >> Ako želim umetnuti novi redak u mom Baza zato što je netko podnio 392 00:16:41,270 --> 00:16:47,600 oblik mom kodu, ja bih doslovno Napiši INSERT INTO korisnike sljedeće 393 00:16:47,600 --> 00:16:52,800 polja: Korisničko ime, zarez, naziv, vrijednosti, 394 00:16:52,800 --> 00:16:57,480 i sad mi treba umetnuti nešto poput Malan i citat, 395 00:16:57,480 --> 00:17:01,490 citat 'David Malan. A sada čak i za one koji nisu upoznati s SQL, 396 00:17:01,490 --> 00:17:07,830 zašto sam koristeći jednostruke navodnike unutar ovog zelenog string? 397 00:17:07,830 --> 00:17:10,790 398 00:17:10,790 --> 00:17:13,040 Ono što bi moglo biti razlog ovdje? 399 00:17:13,040 --> 00:17:14,609 >> Obavijest sam ko-druženje dva jezika. 400 00:17:14,609 --> 00:17:18,099 Upita je PHP funkcija, ali to traje argument. 401 00:17:18,099 --> 00:17:21,740 I to je argument mora biti sama napisan u drugi jezik zove 402 00:17:21,740 --> 00:17:23,500 SQL, Structured Query Language. 403 00:17:23,500 --> 00:17:27,940 Dakle, sve što sam Upravo ovdje istaknute 404 00:17:27,940 --> 00:17:30,380 je taj jezik zove SQL. 405 00:17:30,380 --> 00:17:36,290 Dakle, što je s jednostrukim navodnicima, jednako brzo provjeriti razum? 406 00:17:36,290 --> 00:17:37,324 Samo naprijed. 407 00:17:37,324 --> 00:17:37,990 Oni su žice. 408 00:17:37,990 --> 00:17:41,590 Dakle, citat, citat Malan i citat, citat David Malan su žice. 409 00:17:41,590 --> 00:17:45,210 I baš razmišljam intuitivno sada, znajući što znate o C i PHP, 410 00:17:45,210 --> 00:17:50,220 zašto ne to, što ja obično Korištene dvostruki navodnici za žice? 411 00:17:50,220 --> 00:17:52,310 Zašto ja ne želim to učiniti? 412 00:17:52,310 --> 00:17:52,810 Da? 413 00:17:52,810 --> 00:17:53,685 >> PUBLIKA: [nečujan] 414 00:17:53,685 --> 00:17:56,695 415 00:17:56,695 --> 00:17:57,570 DAVID Malan: Točno. 416 00:17:57,570 --> 00:17:59,653 Zato sam već pomoću dvostruki navodnici na putu 417 00:17:59,653 --> 00:18:01,929 izvan argument na PHP funkcije, 418 00:18:01,929 --> 00:18:03,470 Ja bi samo zbuniti tumača. 419 00:18:03,470 --> 00:18:04,860 Ona neće znati, zar ovi idu zajedno? 420 00:18:04,860 --> 00:18:05,735 Nemojte to idu zajedno? 421 00:18:05,735 --> 00:18:06,810 Nemojte to idu zajedno? 422 00:18:06,810 --> 00:18:08,070 Dakle, ja izmjenjivati ​​umjesto. 423 00:18:08,070 --> 00:18:11,784 >> Ili sam mogao učiniti nešto ovako, backslash citat ili backslash citat. 424 00:18:11,784 --> 00:18:14,200 Iskreno, da je samo počne dobiti vrlo nečitak i ružno. 425 00:18:14,200 --> 00:18:16,790 Ali to bi se postigla isti rezultat kao dobro. 426 00:18:16,790 --> 00:18:19,760 >> Dakle, ako su za izvršenje ovog upita sada, da vidimo što se događa. 427 00:18:19,760 --> 00:18:22,740 Idem ići naprijed i sada radije nego izvršavanje PHP kod, koji 428 00:18:22,740 --> 00:18:24,610 je mjesto gdje ćete igrati u problemu postaviti sedam, 429 00:18:24,610 --> 00:18:27,200 Idem umjesto otići u PHP MyAdmin. 430 00:18:27,200 --> 00:18:29,770 A ja ću ručno ići na SQL kartici, 431 00:18:29,770 --> 00:18:31,580 i neka mi uvećanje na sučelju. 432 00:18:31,580 --> 00:18:34,007 I ja ću zalijepiti u stvar sam upisali. 433 00:18:34,007 --> 00:18:36,090 A kodiranje boja ima promijenio malo sada, 434 00:18:36,090 --> 00:18:38,750 Samo zato što su formati programa stvari malo drugačije. 435 00:18:38,750 --> 00:18:41,960 Ali primijetite da je sve što sam učinio je sam rekao, umetnite korisnike. 436 00:18:41,960 --> 00:18:45,790 Ja sam navedeno, a zatim, u zarez odvojeni zagradi popis dvoje 437 00:18:45,790 --> 00:18:48,850 polja koje želim umetnuti, i onda sam doslovno sam rekao vrijednosti 438 00:18:48,850 --> 00:18:51,510 slijedi još jedan navodnik, a zatim su te dvije vrijednosti 439 00:18:51,510 --> 00:18:53,520 Želim plug-in, i Sada za dobru mjeru, 440 00:18:53,520 --> 00:18:55,010 Ja ću staviti zarez na kraju. 441 00:18:55,010 --> 00:18:56,570 Dakle, ovo nije C. Ovo nije PHP. 442 00:18:56,570 --> 00:18:59,970 To je sada SQL, i ja sam ga zalijepiti u ovom web-temeljen sučelje koje je 443 00:18:59,970 --> 00:19:02,710 Samo će me pustiti, čim sam kliknite Idi, 444 00:19:02,710 --> 00:19:08,060 izvršiti ovaj upit na bazu podataka trčanje unutar CS50 IDE. 445 00:19:08,060 --> 00:19:09,470 >> Dakle, to je dobro. 446 00:19:09,470 --> 00:19:12,520 Obavijest da je rekao jedan red umetnuta, otišao super brzo, 447 00:19:12,520 --> 00:19:15,190 0.0054 sekundi umetnuti te podatke. 448 00:19:15,190 --> 00:19:16,610 Dakle, to zvuči prilično zdrava. 449 00:19:16,610 --> 00:19:19,350 To preoblikovati svoj upit mi ovdje samo da ga vidim 450 00:19:19,350 --> 00:19:21,730 u kakve boje kodirane verziji. 451 00:19:21,730 --> 00:19:24,540 Ali sada, ako ja kliknite Pregledavanje, primijetiti da, čak i 452 00:19:24,540 --> 00:19:29,070 iako ima puno nereda na zaslon, moj stol sada ima dva reda. 453 00:19:29,070 --> 00:19:30,700 >> Dakle, neka mi ići naprijed i učiniti drugi. 454 00:19:30,700 --> 00:19:33,760 Umjesto toga, neka me ići na SQL kartici opet. 455 00:19:33,760 --> 00:19:40,723 I ovaj put ću ubaciti nešto poput Rob i ime će mu biti Rob Bowden. 456 00:19:40,723 --> 00:19:42,330 Bowden. 457 00:19:42,330 --> 00:19:44,040 Idemo kliknite Spremi. 458 00:19:44,040 --> 00:19:46,140 Ups, a Go. 459 00:19:46,140 --> 00:19:48,890 >> Ponovno kliknite Pregledaj, a Sada primijetite Imam dva reda. 460 00:19:48,890 --> 00:19:52,390 Dakle, ovo je samo način složeniji način otvaranja Google tablice 461 00:19:52,390 --> 00:19:54,010 i samo upisivanjem red u koloni. 462 00:19:54,010 --> 00:19:57,070 No, ono što je ključno je da sada imamo sintaksu 463 00:19:57,070 --> 00:20:00,220 s kojima pisati kod, tako da u konačnici, mogli bismo zapravo 464 00:20:00,220 --> 00:20:01,790 učiniti nešto i to. 465 00:20:01,790 --> 00:20:05,380 Sjetite se da PHP podržava super globalne varijable. 466 00:20:05,380 --> 00:20:08,415 >> Što je unutar dolara prijaviti podcrtavanja doći u PHP-u? 467 00:20:08,415 --> 00:20:10,290 Uzeli smo pogled na jedan ili dva jednostavna primjera. 468 00:20:10,290 --> 00:20:15,640 A u PSet6, podsjetiti imate pozdrav dot PHP koji koristi ovu varijablu. 469 00:20:15,640 --> 00:20:17,870 Što se tamo? 470 00:20:17,870 --> 00:20:21,015 Ili što je to? 471 00:20:21,015 --> 00:20:22,522 Malo glasnije. 472 00:20:22,522 --> 00:20:23,790 >> PUBLIKA: [nečujan] 473 00:20:23,790 --> 00:20:25,030 >> DAVID Malan: To je snijeg Sjeme polje, koje 474 00:20:25,030 --> 00:20:27,714 je samo fancy način govoreći niz koji ima ključ parove vrijednosti. 475 00:20:27,714 --> 00:20:28,880 A ključevi nisu numerički. 476 00:20:28,880 --> 00:20:30,420 Oni su riječi ili žice. 477 00:20:30,420 --> 00:20:32,750 A Naime, ono što su oni ključni parova vrijednosti? 478 00:20:32,750 --> 00:20:35,110 Odakle su došli? 479 00:20:35,110 --> 00:20:35,620 Žao nam je? 480 00:20:35,620 --> 00:20:36,994 >> PUBLIKA: [nečujan] 481 00:20:36,994 --> 00:20:37,660 DAVID Malan: Ne? 482 00:20:37,660 --> 00:20:40,700 Gdje one ključ vrijednost parova dolaze iz? 483 00:20:40,700 --> 00:20:42,490 Reci opet? 484 00:20:42,490 --> 00:20:44,610 Opet? 485 00:20:44,610 --> 00:20:46,472 Jesam li ja jedina rasprava nešto? 486 00:20:46,472 --> 00:20:47,810 >> [Smijeh] 487 00:20:47,810 --> 00:20:49,042 >> To je točno, zar ne? 488 00:20:49,042 --> 00:20:50,435 >> PUBLIKA: [nečujan] 489 00:20:50,435 --> 00:20:52,560 DAVID Malan: Da, dolaze iz upitom. 490 00:20:52,560 --> 00:20:55,380 Dakle, ako ste natrag u vrijeme da kad smo igrali sa Google 491 00:20:55,380 --> 00:20:59,600 a mi smo otišli na google.com slash Traženje upitnik q jednak mačke, 492 00:20:59,600 --> 00:21:03,550 ako bih pritisnite Enter, a ako Google je implementiran u PHP, 493 00:21:03,550 --> 00:21:07,017 PHP kod koje Google pisao će imati pristup znak za dolar 494 00:21:07,017 --> 00:21:11,600 naglašavaju dobiti unutar kojih ključni je nazvao Q i vrijednost 495 00:21:11,600 --> 00:21:17,680 nazivaju mačke koje onda može koristiti koristiti za napraviti stvarnu pretraživanje s. 496 00:21:17,680 --> 00:21:20,860 >> Dakle, u stvari, što ću sada je vratiti se mojoj PHP koda 497 00:21:20,860 --> 00:21:23,140 da opet ćete vidjeti više u PSet7. 498 00:21:23,140 --> 00:21:25,440 I umjesto plugging u tvrdim kodiranih vrijednosti koje 499 00:21:25,440 --> 00:21:27,630 ne izgleda poput Vrlo dinamična web stranice, 500 00:21:27,630 --> 00:21:30,680 Ja ću vam dati teaser za što vaš stvarni broj će učiniti. 501 00:21:30,680 --> 00:21:32,854 Ti bi stavio u dva Pitanje obilježava ovako. 502 00:21:32,854 --> 00:21:34,270 Ne znam što je korisničko ime je. 503 00:21:34,270 --> 00:21:37,390 Ne znam što je Naziv će biti, 504 00:21:37,390 --> 00:21:39,470 ali ja znam da mogu dobili ih dinamički. 505 00:21:39,470 --> 00:21:43,420 >> Dakle, ako kod pišemo sada kod trčanje na Googleovim poslužiteljima, 506 00:21:43,420 --> 00:21:46,940 ili ako je to zdravo dot PHP, koji dolazi s PSet6, 507 00:21:46,940 --> 00:21:48,650 Idem proći u funkcija upit 508 00:21:48,650 --> 00:21:51,450 baš kao printf, druge dvije tvrdnje. 509 00:21:51,450 --> 00:21:57,120 GET, citat, citat korisničko ime, i dobiti, citat, citat ime. 510 00:21:57,120 --> 00:22:00,720 A sada, primijetiti što se Opća struktura je ovdje. 511 00:22:00,720 --> 00:22:03,320 Imam na lijevoj ruka strana poziva, 512 00:22:03,320 --> 00:22:05,480 ova funkcija zove upit u PHP. 513 00:22:05,480 --> 00:22:08,160 Još uvijek imam kao prvi argument, samo niz teksta. 514 00:22:08,160 --> 00:22:11,000 >> Ali taj komad teksta pisani jezikom zove SQL. 515 00:22:11,000 --> 00:22:12,616 I iskreno, to nije veliki jezik. 516 00:22:12,616 --> 00:22:14,990 Mi samo će govoriti o je službeno danas, stvarno. 517 00:22:14,990 --> 00:22:17,031 A onda je u problemu postaviti sedam, postoji relativno 518 00:22:17,031 --> 00:22:18,800 nekoliko značajki koje smo će utjecati. 519 00:22:18,800 --> 00:22:22,530 Pitanje maraka, međutim, znači priključiti vrijednost i ovdje priključak u drugoj vrijednosti 520 00:22:22,530 --> 00:22:23,130 ovdje. 521 00:22:23,130 --> 00:22:26,010 I napomena, ja sam izostaviti ono iz cijelog quote-- Damn 522 00:22:26,010 --> 00:22:30,470 it-- oko kotaciju obilježava ovaj put. 523 00:22:30,470 --> 00:22:34,930 Ja sam izostavljen citat Oznake oko upitnikom, 524 00:22:34,930 --> 00:22:36,410 Žao nam je, ovaj put okolo. 525 00:22:36,410 --> 00:22:38,870 >> Dakle, ono što je lijepo o tome upitnik značajka koja 526 00:22:38,870 --> 00:22:42,830 PHP sklon podržati, Ruby i Python i drugih jezika, 527 00:22:42,830 --> 00:22:45,730 to samo znači utikač u nekim Cijenimo ovdje i znate što? 528 00:22:45,730 --> 00:22:48,300 Vi shvatiti da li koristiti jednostruke navodnike ili dvostruki navodnici. 529 00:22:48,300 --> 00:22:50,966 Nemojte me gnjaviti s onima intelektualno nezanimljiv pojedinosti. 530 00:22:50,966 --> 00:22:53,780 Ali, uvjerite se da je točna tako da je moj broj je u konačnici 531 00:22:53,780 --> 00:22:57,010 operativni i sigurno, što će imati značenje prije dugo. 532 00:22:57,010 --> 00:23:00,460 >> Sada, koliko argumente iznositi, samo da biti jasan, je upita funkcija uzimanje? 533 00:23:00,460 --> 00:23:05,240 534 00:23:05,240 --> 00:23:07,581 Svatko želi glasati za više od dva? 535 00:23:07,581 --> 00:23:08,080 Tri? 536 00:23:08,080 --> 00:23:10,001 Naravno, zašto? 537 00:23:10,001 --> 00:23:10,920 Zašto tri? 538 00:23:10,920 --> 00:23:12,305 >> PUBLIKA: [nečujan] 539 00:23:12,305 --> 00:23:13,180 DAVID Malan: Točno. 540 00:23:13,180 --> 00:23:14,610 Prvi dio je niza. 541 00:23:14,610 --> 00:23:18,640 Drugi argument je dolar znak naglašavaju GET nosača korisničko ime. 542 00:23:18,640 --> 00:23:21,950 I treći argument je Ista stvar, ali samo ime. 543 00:23:21,950 --> 00:23:24,590 Tako je u drugim riječima, sada ako sam imao web obrasca 544 00:23:24,590 --> 00:23:27,149 koji je morao tekstualnih polja, jedan za korisnika korisničkim imenom, 545 00:23:27,149 --> 00:23:29,690 jedan za njegovo ili njezino ime, samo kao što će vidjeti u web stranicu 546 00:23:29,690 --> 00:23:32,120 kada se registrirate za neke web stranice, to može 547 00:23:32,120 --> 00:23:35,450 biti kod na stražnjem kraju da zapravo radi umetanja sada 548 00:23:35,450 --> 00:23:37,220 u bazu podataka. 549 00:23:37,220 --> 00:23:40,870 >> Sada za razliku od, idemo brzo naprijed. 550 00:23:40,870 --> 00:23:43,840 Pretpostavimo korisnik je sad prijavite i želite 551 00:23:43,840 --> 00:23:48,860 napisati PHP kod koji provjerava je li osoba koja je samo prijavljeni 552 00:23:48,860 --> 00:23:52,250 je zapravo korisnik, možete koristiti prilično jednostavne sintakse. 553 00:23:52,250 --> 00:23:55,832 Možete reći SELECT, recimo star, gdje zvijezda znači sve. 554 00:23:55,832 --> 00:23:57,540 Ne znam što bih žele, pa samo mi daj 555 00:23:57,540 --> 00:24:01,585 svi stupci iz tablice zove Korisnici gdje je, i to je lijepo. 556 00:24:01,585 --> 00:24:03,710 Odaberite podržava ono što je zove predikat, što je 557 00:24:03,710 --> 00:24:06,630 kao način kvalificiranja ono što želite. 558 00:24:06,630 --> 00:24:10,590 Gdje korisničko ime jednako citat, citat Malan. 559 00:24:10,590 --> 00:24:13,680 Tako i ovdje, ja sam ugrađeni unutar argument 560 00:24:13,680 --> 00:24:16,110 na PHP funkcije, liniju SQL koda. 561 00:24:16,110 --> 00:24:18,680 I to SQL kod ova Vrijeme je doslovno ide 562 00:24:18,680 --> 00:24:21,790 tražiti citat, citat Malan. 563 00:24:21,790 --> 00:24:24,420 >> Sada to nije sve što je korisno, pa ću preskočiti da 564 00:24:24,420 --> 00:24:28,650 i ja ću staviti daleko Ovaj savjet iz Brady, i otići 565 00:24:28,650 --> 00:24:30,990 i plug-in umjesto pitanje oznaka ovdje. 566 00:24:30,990 --> 00:24:33,290 Dakle, samo da bude jasno, ono trebalo mi je drugi argument 567 00:24:33,290 --> 00:24:37,480 se ako je netko upravo prijavljeni i ja provjeriti da li je on ili ona je zapravo 568 00:24:37,480 --> 00:24:39,265 korisnik? 569 00:24:39,265 --> 00:24:40,140 PUBLIKA: [nečujan] 570 00:24:40,140 --> 00:24:40,890 DAVID Malan: Da. 571 00:24:40,890 --> 00:24:44,120 Čujem znak za dolar podvlačenje Pošalji citat, korisničko ime. 572 00:24:44,120 --> 00:24:50,040 I to bi trebalo vratiti na mene bilo koji od redova u mojoj bazi 573 00:24:50,040 --> 00:24:51,986 koji imaju korisničko ime Malan. 574 00:24:51,986 --> 00:24:54,860 Sada, nadamo se, da ću se vratiti nula ako Malan je ovdje nikad nije bilo, 575 00:24:54,860 --> 00:24:56,290 ili jedan ako ima. 576 00:24:56,290 --> 00:24:59,026 Ne bi trebao dobiti natrag dva ili tri ili četiri. 577 00:24:59,026 --> 00:24:59,526 Zašto? 578 00:24:59,526 --> 00:25:00,220 >> PUBLIKA: [nečujan] 579 00:25:00,220 --> 00:25:01,120 >> DAVID Malan: Rekao sam jedinstven, zar ne? 580 00:25:01,120 --> 00:25:01,750 Jednostavan razlog. 581 00:25:01,750 --> 00:25:04,030 Zato sam rekao da je dobio biti jedinstven, baš logično, 582 00:25:04,030 --> 00:25:07,940 možete imati samo nula ili jedan Malans u ovom konkretnom baze podataka tablice. 583 00:25:07,940 --> 00:25:10,965 Sada kao stranu, samo da ste vidjeli da, iako sam i dalje koristiti GET 584 00:25:10,965 --> 00:25:14,350 i iako PSet6 samo koristi GET, sigurno možete imati POST. 585 00:25:14,350 --> 00:25:17,212 I podsjetiti da je još jedan post tehnika za podnošenje podataka 586 00:25:17,212 --> 00:25:19,170 od oblika, ali ne prikazuju se u URL. 587 00:25:19,170 --> 00:25:22,690 To je malo više siguran sigurno za stvari kao što su korisnička imena i lozinke, 588 00:25:22,690 --> 00:25:25,210 koji PSet7 će, u stvari, uključiti. 589 00:25:25,210 --> 00:25:28,130 >> Dakle, neka je to u PHP MyAdmin i vidjeti što se događa. 590 00:25:28,130 --> 00:25:30,020 Ja ću ići na karticu MySQL. 591 00:25:30,020 --> 00:25:34,450 I obavijest da je zadanu vrijednost za PHP MyAdmin, samo pokušati biti od pomoći, 592 00:25:34,450 --> 00:25:37,050 je odabrati zvijezdu od korisnika gdje je jedan. 593 00:25:37,050 --> 00:25:39,430 Pa, on je uvijek istina, pa ovo je glup snazi 594 00:25:39,430 --> 00:25:40,400 samo odaberite sve. 595 00:25:40,400 --> 00:25:42,691 Ali ću biti malo više pedantan i ručno 596 00:25:42,691 --> 00:25:45,920 upišite se SELECT zvijezdu od korisnika. 597 00:25:45,920 --> 00:25:48,294 >> Sada tehnički, možete citirati naziv tablice. 598 00:25:48,294 --> 00:25:50,460 To je rijetko da morate, ali primijetiti to nisu 599 00:25:50,460 --> 00:25:52,240 normalne citati o američkoj tipkovnici. 600 00:25:52,240 --> 00:25:54,760 To je tzv backtick, koji uglavnom na gornjem lijevom rukom 601 00:25:54,760 --> 00:25:56,000 kutak tipkovnici. 602 00:25:56,000 --> 00:25:58,500 Ali to je rijetko da ćete zapravo treba gnjaviti s tim, 603 00:25:58,500 --> 00:25:59,950 tako da sam samo ću ih izostaviti svejedno. 604 00:25:59,950 --> 00:26:02,280 Tako sada, neka mi ići naprijed i udario ići. 605 00:26:02,280 --> 00:26:06,616 A koliko redova trebam dobiti kad sam odabrati zvijezdu s korisnicima? 606 00:26:06,616 --> 00:26:08,407 >> PUBLIKA: [nečujan] 607 00:26:08,407 --> 00:26:09,990 DAVID Malan: Broj redaka, sigurno. 608 00:26:09,990 --> 00:26:12,390 No, koliko je u ovom beton priča upravo sada? 609 00:26:12,390 --> 00:26:14,640 Drugo, zato što je ja i bilo je Rob. 610 00:26:14,640 --> 00:26:19,370 Dakle, ako ja kliknite Idi, vidim da je vizualno Ja sam dobio natrag, dapače, dva reda. 611 00:26:19,370 --> 00:26:22,060 Postoji mnogo nereda na zaslon, ali ja vidim samo dva reda. 612 00:26:22,060 --> 00:26:28,580 Nasuprot tome, ako ja to učiniti opet i raditi SELECT zvijezda od korisnika, gdje korisničko ime 613 00:26:28,580 --> 00:26:31,840 jednak citat, citat Malan, sad ako ja kliknite Idi, 614 00:26:31,840 --> 00:26:33,970 Ja sam samo ide da biste dobili leđa jedan red. 615 00:26:33,970 --> 00:26:36,499 I na kraju, ako to učinim nešto kao što je ovaj, pretpostavljam 616 00:26:36,499 --> 00:26:38,290 da ne brinu o uzimajući sve, 617 00:26:38,290 --> 00:26:41,020 koja je vrsta besmisleno sada, jer ima samo dvije kolone. 618 00:26:41,020 --> 00:26:43,103 To nije kao ja odabirom ogromna količina podataka. 619 00:26:43,103 --> 00:26:46,720 Pretpostavimo da ići naprijed i Ne SELECT ime FROM 620 00:26:46,720 --> 00:26:51,990 Korisnici, gdje korisničko ime jednako je Malan, što je lijepo o SQL iskreno, 621 00:26:51,990 --> 00:26:54,290 je da zapravo samo radi što to kažem. 622 00:26:54,290 --> 00:26:57,550 To je prilično kratak, ali doslovno samo ga reći ono što želite učiniti. 623 00:26:57,550 --> 00:27:01,130 Odaberite naziv od korisnika gdje korisničko ime jednak Malan. 624 00:27:01,130 --> 00:27:03,440 I to je uistinu tako eksplicitno. 625 00:27:03,440 --> 00:27:08,410 Dakle, sada, ako sam pogodio Idi, koliko Redovi ću dobiti natrag? 626 00:27:08,410 --> 00:27:10,770 Jedan, jer to je samo Malan, nadam se. 627 00:27:10,770 --> 00:27:13,100 Ili nula ako nije postoji, ali maksimalno. 628 00:27:13,100 --> 00:27:17,610 >> A koliko stupaca ću dobiti natrag? 629 00:27:17,610 --> 00:27:18,450 Koliko stupaca? 630 00:27:18,450 --> 00:27:20,658 Ovaj put, samo sam ću dobiti jedan jer nisam 631 00:27:20,658 --> 00:27:22,380 odaberite zvijezdu, koja je sve. 632 00:27:22,380 --> 00:27:27,900 Sada sam odabirom samo ime, pa sam samo dobiti natrag jedan stupac i jedan redak. 633 00:27:27,900 --> 00:27:31,730 I to izgleda nekako prikladno smiješno, samo gleda super 634 00:27:31,730 --> 00:27:33,060 Mali ovako. 635 00:27:33,060 --> 00:27:34,290 Dakle, ono što se zapravo događa? 636 00:27:34,290 --> 00:27:36,890 Kada izvršiti SQL upita pomoću odabir, 637 00:27:36,890 --> 00:27:38,700 što ste uzimajući natrag iz baze podataka 638 00:27:38,700 --> 00:27:42,970 je kao privremena tablica s redaka i stupaca, možda, 639 00:27:42,970 --> 00:27:46,260 ali to izostaviti ništa što nije zapravo izabran od strane vas. 640 00:27:46,260 --> 00:27:49,010 Dakle, to je kao da je netko imao veliki Proračunska tablica svih studenata 641 00:27:49,010 --> 00:27:51,610 registrirana za neke Student grupa, a ti kažeš, 642 00:27:51,610 --> 00:27:55,097 daj mi sve brucoš koji ste registrirana za naše studentske grupe, što 643 00:27:55,097 --> 00:27:56,930 Vaš kolega u Student grupa može učiniti 644 00:27:56,930 --> 00:27:58,430 se oni samo mogli predati što je cijela proračunska tablica. 645 00:27:58,430 --> 00:27:59,742 To je kao da kažete odaberite zvijezdu. 646 00:27:59,742 --> 00:28:02,200 I to je malo neugodno ako samo htjela brucoš. 647 00:28:02,200 --> 00:28:05,640 I tako, ako umjesto toga, rekao je, odaberite zvijezda iz tablica baze podataka 648 00:28:05,640 --> 00:28:08,470 gdje godišnje jednak citat, citat brucoš, 649 00:28:08,470 --> 00:28:10,810 to je kao da je tvoj prijatelj u studentskoj grupi 650 00:28:10,810 --> 00:28:13,770 doslovno je istaknuo i kopirati samo prve redove, 651 00:28:13,770 --> 00:28:16,780 ih zalijepiti u novi Google Spreadsheet ili Excel datoteke, 652 00:28:16,780 --> 00:28:18,860 i ti predao natrag Nastala je samo datoteku. 653 00:28:18,860 --> 00:28:21,710 To je sve što se događa na konceptualno ovdje. 654 00:28:21,710 --> 00:28:23,920 >> Tako je na kraju, možemo učiniti neke prilično ukrasni stvari 655 00:28:23,920 --> 00:28:26,560 spremanjem stvari poput korisničkih imena i lozinke i slično. 656 00:28:26,560 --> 00:28:30,310 No, ispostavilo se, da radimo malo drugačije od toga. 657 00:28:30,310 --> 00:28:34,750 To nije toliko pametan da je samo pohraniti korisničko ime i lozinku. 658 00:28:34,750 --> 00:28:37,790 Netko je ranije, mislim ovdje, predložio ID. 659 00:28:37,790 --> 00:28:40,787 Sada osobna mogao biti poput Harvard ili Yale ID neto ID, 660 00:28:40,787 --> 00:28:42,870 ali to bi mogao biti još jednostavnije u našem slučaju baze podataka. 661 00:28:42,870 --> 00:28:45,120 I doista, čest slučaj je još jedan stupac. 662 00:28:45,120 --> 00:28:46,953 I ja ću otići naprijed i urediti tablicu. 663 00:28:46,953 --> 00:28:49,521 A ako se poigrati s Ovo sučelje za PSet7, 664 00:28:49,521 --> 00:28:51,770 vidjet ćete da možete provjeriti Ovaj gumb je ovdje i dodajte 665 00:28:51,770 --> 00:28:53,750 polje na početku tablice. 666 00:28:53,750 --> 00:28:56,720 I sad ako ja kliknite ići, to se događa da mi daju jednu od tih oblika 667 00:28:56,720 --> 00:28:57,600 od ranije. 668 00:28:57,600 --> 00:29:00,170 Idem dodati polje nazivom ID. 669 00:29:00,170 --> 00:29:03,070 I ja ću ga numerički tip napraviti. 670 00:29:03,070 --> 00:29:05,362 >> Imam hrpu vrijednosti za Brojevi. 671 00:29:05,362 --> 00:29:08,677 Samo ću odabrati INT i Ne brinite o različitih veličina. 672 00:29:08,677 --> 00:29:10,510 Nemam odrediti duljina ili vrijednost, 673 00:29:10,510 --> 00:29:13,710 jer će biti 32 bita bez obzira. 674 00:29:13,710 --> 00:29:16,070 Značajke, nismo vidjeli prije. 675 00:29:16,070 --> 00:29:18,410 Svako zanimanje bilo koji od ovih opcije izbornika ovo vrijeme? 676 00:29:18,410 --> 00:29:21,890 677 00:29:21,890 --> 00:29:23,745 Za INT? 678 00:29:23,745 --> 00:29:24,620 Što predlažete? 679 00:29:24,620 --> 00:29:27,350 680 00:29:27,350 --> 00:29:28,445 Ne? 681 00:29:28,445 --> 00:29:29,570 Da li bilo koji od ovih smisla? 682 00:29:29,570 --> 00:29:30,536 Da. 683 00:29:30,536 --> 00:29:31,900 Da, nepotpisana, zar ne? 684 00:29:31,900 --> 00:29:35,930 >> Općenito, ako ćemo dati svi jedinstveni broj koji 685 00:29:35,930 --> 00:29:38,200 gdje je ova priča ide, ja stvarno samo želim 686 00:29:38,200 --> 00:29:41,919 osoba ima broj kao nulu i jedan i dva i tri i četiri. 687 00:29:41,919 --> 00:29:43,710 Ne trebam nositi s negativnim brojevima. 688 00:29:43,710 --> 00:29:45,210 To samo izgleda kao nepotrebnog složenosti. 689 00:29:45,210 --> 00:29:48,470 Želim četiri milijarde mogućih vrijednosti, ne četiri milijarde mogućih vrijednosti, 690 00:29:48,470 --> 00:29:50,699 tako da sam samo udvostručen Kapacitet moje INT. 691 00:29:50,699 --> 00:29:53,490 Kao na stranu, ako želite da se odnose to nešto poput Facebooka, 692 00:29:53,490 --> 00:29:56,190 povratak u vrsti mom dana kada Facebook prvi iziđe, 693 00:29:56,190 --> 00:29:59,510 Vjerujem ono što su bili korištenjem u MySQL bazu podataka 694 00:29:59,510 --> 00:30:02,856 trgovinu korisnik je identifikator, bio samo INT. 695 00:30:02,856 --> 00:30:05,230 Ali, naravno, tu je mnogo od stvarnih ljudi na svijetu. 696 00:30:05,230 --> 00:30:07,438 Ima puno lažnih Facebook račune na svijetu. 697 00:30:07,438 --> 00:30:11,701 I tako na kraju, Facebook potopilo veličina int, A četiri milijarde 698 00:30:11,701 --> 00:30:12,200 vrijednost. 699 00:30:12,200 --> 00:30:15,032 Koji je razlog zašto, ako pogledate oko sebe i tu je web stranica 700 00:30:15,032 --> 00:30:16,740 koji vam mogu reći što vaš jedinstveni ID. 701 00:30:16,740 --> 00:30:19,781 A ako nikada izabrao ime u Facebook, vidjet ćete svoj jedinstveni ID. 702 00:30:19,781 --> 00:30:23,080 Mislim da je to profil dot PHP Upitnik ID jednak nešto. 703 00:30:23,080 --> 00:30:27,210 To je sada nešto kao velika INT, ili dugo dugo, ako hoćete, 704 00:30:27,210 --> 00:30:29,700 što je 64-bitni vrijednost ili nešto usporedivo. 705 00:30:29,700 --> 00:30:33,620 >> Dakle, čak iu stvarnom svijetu učiniti te Problemi u konačnici ponekad smeta. 706 00:30:33,620 --> 00:30:37,600 I ispada ovdje, ako sam dajući sve moje korisnika jedinstveni ID, 707 00:30:37,600 --> 00:30:41,750 Želim biti super eksplicitno i minimalno bi ovo polje jedinstven. 708 00:30:41,750 --> 00:30:44,750 Ali ispada da postoji jedna komad nomenklatura i danas 709 00:30:44,750 --> 00:30:46,470 to je primarni ključ. 710 00:30:46,470 --> 00:30:49,800 Ako ste projektiranje baze podataka stol i unaprijed znate 711 00:30:49,800 --> 00:30:55,580 da je jedan od stupova na tom stolu treba i da će jedinstveno identificiraju redaka 712 00:30:55,580 --> 00:30:58,500 u tablici, želite navedite ga i reći baze podataka, 713 00:30:58,500 --> 00:31:00,250 ovo je moj primarni ključ. 714 00:31:00,250 --> 00:31:02,110 Tu bi moglo biti duplikati u drugim područjima, 715 00:31:02,110 --> 00:31:06,330 ali ja govorim da je to baza podataka je moj primarni, moje najvažnije područje, 716 00:31:06,330 --> 00:31:08,420 koji je zajamčeno da budu jedinstveni. 717 00:31:08,420 --> 00:31:09,660 >> Sada, to se čini suvišan. 718 00:31:09,660 --> 00:31:13,830 Ja sam sada predlaže da smo dodati, klikom na Spremi ovdje 719 00:31:13,830 --> 00:31:17,210 polje called-- i idem ići naprijed i kliknite AI, 720 00:31:17,210 --> 00:31:19,720 mi ćemo se vratiti da je u trenutku, Spremi. 721 00:31:19,720 --> 00:31:22,540 Predlažem da sada moj stol izgleda ovako. 722 00:31:22,540 --> 00:31:26,305 Imam polje INT nazivom ID, polje CHAR zove ime, 723 00:31:26,305 --> 00:31:31,100 polje VARCHAR zove ime, ali ID, ako je primarni i stoga jedinstvena, 724 00:31:31,100 --> 00:31:33,760 zašto sam baš otpada Vrijeme uvođenja što 725 00:31:33,760 --> 00:31:39,140 učinkovito je drugi jedinstven Polje naziva ID koji je int? 726 00:31:39,140 --> 00:31:41,980 >> Korisničko ime, podsjetimo, bio Već jedinstven, rekli smo. 727 00:31:41,980 --> 00:31:45,350 Tako je samo logično, ne trebate bilo koju bazu podataka iskustvo razloga 728 00:31:45,350 --> 00:31:47,570 kroz to, zašto Možda sam uveo 729 00:31:47,570 --> 00:31:50,065 int kao moj jedinstveni identifikator kao i? 730 00:31:50,065 --> 00:31:52,740 731 00:31:52,740 --> 00:31:53,930 Što this-- kažem opet? 732 00:31:53,930 --> 00:31:55,580 >> PUBLIKA: [nečujan] 733 00:31:55,580 --> 00:31:59,534 >> DAVID Malan: Slučajna Pristup je lakše, zašto? 734 00:31:59,534 --> 00:32:00,410 >> PUBLIKA: [nečujan] 735 00:32:00,410 --> 00:32:02,367 DAVID Malan: Da, to je Samo pristupanje brojeve. 736 00:32:02,367 --> 00:32:04,750 Dakle, ako mislite da je to doista je stol, kao što je niz, 737 00:32:04,750 --> 00:32:07,690 sada imam jedinstvene identifikatore da mogu skakati. 738 00:32:07,690 --> 00:32:11,520 I bolje od toga i dalje je da je Koliko je velik int će biti opet? 739 00:32:11,520 --> 00:32:14,450 740 00:32:14,450 --> 00:32:15,800 32 bita ili četiri bajta. 741 00:32:15,800 --> 00:32:17,750 >> Koliko velika je moje korisničko ime će biti? 742 00:32:17,750 --> 00:32:20,310 743 00:32:20,310 --> 00:32:21,990 Maksimalno? 744 00:32:21,990 --> 00:32:22,880 16 bajtova. 745 00:32:22,880 --> 00:32:26,080 >> Dakle, ako ste stvarno briga o performanse vašeg koda, 746 00:32:26,080 --> 00:32:31,390 mislim natrag PSet5, biste li radije za traženje vrijednosti četiri bajta ili 16 747 00:32:31,390 --> 00:32:32,240 byte vrijednost, zar ne? 748 00:32:32,240 --> 00:32:33,810 To je uistinu tako jednostavno. 749 00:32:33,810 --> 00:32:38,060 Vi morate učiniti četiri puta više posla tražiti korisničkih imena jer su oni 750 00:32:38,060 --> 00:32:38,830 16 bajtova. 751 00:32:38,830 --> 00:32:41,320 Dakle, morate doslovno usporediti sve 16 bajtova se 752 00:32:41,320 --> 00:32:43,140 jeste da, ovo je korisničko ime želim. 753 00:32:43,140 --> 00:32:46,610 Dok za INT, možete to učiniti sa samo četiri bajta. 754 00:32:46,610 --> 00:32:49,212 >> I usput za one zanima računalni hardver, 755 00:32:49,212 --> 00:32:52,420 ispada da može stati nešto poput int ili 32-bitne vrijednosti u nečemu 756 00:32:52,420 --> 00:32:55,330 zove registar u računalu CPU, što znači da je super, 757 00:32:55,330 --> 00:32:58,400 super brzo, čak i na najmanji Razina hardveru računala. 758 00:32:58,400 --> 00:33:00,530 Dakle, postoji samo prednosti sve oko sebe. 759 00:33:00,530 --> 00:33:01,530 Dakle, što to znači? 760 00:33:01,530 --> 00:33:04,850 U stvari, kada projektiranja tablica baze podataka, gotovo sve vrijeme 761 00:33:04,850 --> 00:33:07,170 ćete imati ne samo podatke koje je stalo, 762 00:33:07,170 --> 00:33:09,280 ali i nešto poput jedinstveni identifikator 763 00:33:09,280 --> 00:33:11,280 jer ovo ide neka nam raditi druge stvari. 764 00:33:11,280 --> 00:33:13,160 I neka je spotaknuti jedan problem ovdje. 765 00:33:13,160 --> 00:33:15,990 >> Pretpostavimo da korisnici nisu Samo korisnička imena i nazivi, 766 00:33:15,990 --> 00:33:19,540 ali oni također imaju stvari poput gradova i država i poštanski brojevi, barem 767 00:33:19,540 --> 00:33:20,432 ovdje u SAD-u. 768 00:33:20,432 --> 00:33:22,390 Dakle, ja ću ići naprijed i samo se brzo reći, 769 00:33:22,390 --> 00:33:26,180 daj mi još tri stupca na kraju stola. 770 00:33:26,180 --> 00:33:28,900 A to će biti grad, to će biti državni, 771 00:33:28,900 --> 00:33:30,400 i to će biti Zip. 772 00:33:30,400 --> 00:33:32,710 >> Sada tipa Grad, koje podatke treba to biti, možda? 773 00:33:32,710 --> 00:33:35,460 774 00:33:35,460 --> 00:33:35,989 VARCHAR? 775 00:33:35,989 --> 00:33:37,780 Ne znam što je Najduži naziv grad. 776 00:33:37,780 --> 00:33:40,571 Negdje u Americi, tamo je vjerojatno neki smiješno duge riječi, 777 00:33:40,571 --> 00:33:43,605 pa neka je samo ići s 255, nešto povijesno ili samovoljno. 778 00:33:43,605 --> 00:33:44,730 Država, ono što želite učiniti? 779 00:33:44,730 --> 00:33:48,380 780 00:33:48,380 --> 00:33:50,367 Presuda poziv, zar ne? 781 00:33:50,367 --> 00:33:51,700 Što je možda najučinkovitiji? 782 00:33:51,700 --> 00:33:53,500 Koliko likovi? 783 00:33:53,500 --> 00:33:55,950 Možda samo dva, ako mi može dobiti daleko s radi samo, 784 00:33:55,950 --> 00:33:58,250 slično, MA za Massachusetts i slično. 785 00:33:58,250 --> 00:34:00,520 Dakle, ja ću ići char vrijednost dva. 786 00:34:00,520 --> 00:34:03,080 >> Poštanski broj je zanimljiva. 787 00:34:03,080 --> 00:34:06,679 Mi smo ovdje u 02138, tako da je sugerira da bismo trebali iskoristiti ono? 788 00:34:06,679 --> 00:34:07,470 To je INT, zar ne? 789 00:34:07,470 --> 00:34:10,030 790 00:34:10,030 --> 00:34:12,800 INT, INT, kratko? 791 00:34:12,800 --> 00:34:14,521 Kratko će raditi. 792 00:34:14,521 --> 00:34:15,020 Ne? 793 00:34:15,020 --> 00:34:18,920 794 00:34:18,920 --> 00:34:20,870 CHAR ili pet, ali želim int. 795 00:34:20,870 --> 00:34:23,710 Zašto gurnuti natrag na INT? 796 00:34:23,710 --> 00:34:26,820 Uvjeriti me od toga. 797 00:34:26,820 --> 00:34:29,210 Što je glupo o INT, mojoj ideji? 798 00:34:29,210 --> 00:34:29,871 Da. 799 00:34:29,871 --> 00:34:31,199 >> PUBLIKA: Pokupiti više memorije. 800 00:34:31,199 --> 00:34:32,909 >> DAVID Malan: Pokupiti više memorije. 801 00:34:32,909 --> 00:34:35,310 Četiri bajtova, ali si predlaže poštanski broj 802 00:34:35,310 --> 00:34:39,000 kao pet bajtova ili netko kao CHAR, koja se osjeća kao eh, to nije stvarno 803 00:34:39,000 --> 00:34:39,620 slučaj. 804 00:34:39,620 --> 00:34:40,489 >> Pa, zabavna priča. 805 00:34:40,489 --> 00:34:43,179 Prije mnogo godina, kada sam se koristiti Microsoft Outlook za moj e-mail, 806 00:34:43,179 --> 00:34:45,150 I na kraju želio prebaciti na Gmail. 807 00:34:45,150 --> 00:34:48,949 I tako, izvoze sam sve moje kontakata iz programa Outlook kao CSV datoteku. 808 00:34:48,949 --> 00:34:50,699 Vrijednosti odvojenih zarezom, koji je upravo sam mislio 809 00:34:50,699 --> 00:34:54,060 imali svi moji prijatelji imena i prezime imena i telefonske brojeve i poštanski brojevi 810 00:34:54,060 --> 00:34:54,747 i sve to. 811 00:34:54,747 --> 00:34:56,580 I onda sam napravio pogreška se otvaraju 812 00:34:56,580 --> 00:34:58,640 u Excelu, koji je Program tablicu koja 813 00:34:58,640 --> 00:35:00,289 razumije CSV datoteka kao što smo vidjeli. 814 00:35:00,289 --> 00:35:03,080 Ali onda, mora da sam pogodila, kao što su, Naredba ili Kontrola S u jednom trenutku. 815 00:35:03,080 --> 00:35:06,250 I Excel očito u vrijeme imao značajku kojom bilo kojem trenutku 816 00:35:06,250 --> 00:35:08,100 Vidio broj, pokušala je biti od pomoći. 817 00:35:08,100 --> 00:35:11,610 A ako taj broj je započeo s nule, to bi samo dobili osloboditi od njih. 818 00:35:11,610 --> 00:35:13,420 Zašto trebate vodeći nula na cijelih brojeva? 819 00:35:13,420 --> 00:35:15,140 Oni su besmislene, matematički. 820 00:35:15,140 --> 00:35:17,530 Oni nisu beznačajne u US Postal sustava. 821 00:35:17,530 --> 00:35:19,954 Dakle, ja sam imao godinama, do danas, još uvijek 822 00:35:19,954 --> 00:35:22,370 imati prijatelje da kada rijedak slučaj da trebam netko 823 00:35:22,370 --> 00:35:24,078 rješavanje ovih dana, I dalje ćemo vidjeti da sam 824 00:35:24,078 --> 00:35:26,767 imati prijatelja u Cambridgeu, Massachusetts, 2138. 825 00:35:26,767 --> 00:35:29,350 I to je neugodno ako ste pokušavajući vrsta programski 826 00:35:29,350 --> 00:35:30,975 generiranje omotnice ili samo pribilježiti. 827 00:35:30,975 --> 00:35:33,599 A to je zbog toga, Izabrao sam pogrešan tip podataka. 828 00:35:33,599 --> 00:35:34,490 Dakle, ja volim svoju ideju. 829 00:35:34,490 --> 00:35:35,650 Idemo koristiti polje char. 830 00:35:35,650 --> 00:35:38,340 Pet znakova, osim tu je kutak slučaj. 831 00:35:38,340 --> 00:35:42,220 Ako još uvijek poslati mail, Ponekad zip kodove ovih dana, 832 00:35:42,220 --> 00:35:45,360 oni su, kao, plus četiri. 833 00:35:45,360 --> 00:35:48,200 Dakle, trebamo crticu, a zatim trebamo još četiri brojeva. 834 00:35:48,200 --> 00:35:50,330 Dakle, da budem iskren, to bi ići mnogo različitih načina. 835 00:35:50,330 --> 00:35:52,371 >> Za sada, ja ću zadržati je jednostavan i ja sam samo 836 00:35:52,371 --> 00:35:54,780 će reći da je to pet CHAR vrijednost, a mi smo 837 00:35:54,780 --> 00:35:56,739 će preskočiti cijelu crtica plus četiri. 838 00:35:56,739 --> 00:35:58,280 No, to su vrste tradeoffs. 839 00:35:58,280 --> 00:36:00,196 A možete misliti na Isti problemi koji proizlaze 840 00:36:00,196 --> 00:36:01,860 s telefonskim brojevima i drugim područjima. 841 00:36:01,860 --> 00:36:04,350 >> A sada, to je zapravo lud ceste ići prema dolje. 842 00:36:04,350 --> 00:36:08,000 Pretpostavimo kako Rob i ja i Hannah i Maria i [? Davon?] I Andy 843 00:36:08,000 --> 00:36:12,820 i drugi na osoblje sve žive u Cambridgeu, Massachusetts, 02138. 844 00:36:12,820 --> 00:36:17,970 To zapravo osjećam glupo da sam dodajući da moj korisnike stol, grad, država, 845 00:36:17,970 --> 00:36:18,630 i zip. 846 00:36:18,630 --> 00:36:20,980 Zašto? 847 00:36:20,980 --> 00:36:21,960 >> PUBLIKA: [nečujan] 848 00:36:21,960 --> 00:36:22,918 >> DAVID Malan: Reci opet? 849 00:36:22,918 --> 00:36:24,310 PUBLIKA: [nečujan] 850 00:36:24,310 --> 00:36:25,850 >> DAVID Malan: Oni su uvijek ići zajedno, zar ne? 851 00:36:25,850 --> 00:36:28,660 Kada se ispostavilo, koristili smo razmišljati to bio slučaj dok ne iscrpno 852 00:36:28,660 --> 00:36:30,570 Tražili cijeli SAD, i ispada da postoji 853 00:36:30,570 --> 00:36:32,653 neke nedosljednosti gdje je više mjesta imaju 854 00:36:32,653 --> 00:36:35,060 isti zip, što je čudno. 855 00:36:35,060 --> 00:36:40,580 Ali, ako mi propisuje za sada to 02138 Uvijek je Cambridge, Massachusetts, 856 00:36:40,580 --> 00:36:44,910 Zašto u svijetu bi li pohraniti u baza podataka Cambridge i MA i 02138 857 00:36:44,910 --> 00:36:49,357 za mene i za Hannah i Rob i za [? Davon?] I drugima koji žive 858 00:36:49,357 --> 00:36:51,190 ovdje u Cambridgeu, to je savršeno suvišan. 859 00:36:51,190 --> 00:36:54,480 >> Trebamo izvući sa samo skladištenje što? 860 00:36:54,480 --> 00:36:55,610 Samo poštanski broj. 861 00:36:55,610 --> 00:36:58,660 Ali onda, ako smo pohraniti samo poštanski broj, ja želim, vjerojatno, 862 00:36:58,660 --> 00:37:02,160 za moje web stranice znati na kojem je 02138. 863 00:37:02,160 --> 00:37:03,910 Dakle, treba mi još jedan stol. 864 00:37:03,910 --> 00:37:04,697 I to je u redu. 865 00:37:04,697 --> 00:37:07,530 A u stvari, to je jedan od dizajn procesi projektiranje stolova 866 00:37:07,530 --> 00:37:11,472 da ćete učiniti u PSet7 kao i pri čemu Želite li faktor zajedničke podatke. 867 00:37:11,472 --> 00:37:14,430 Baš kao što smo faktoring iz čest kod i faktoring iz zajedničkog 868 00:37:14,430 --> 00:37:17,380 stilova iz CSS, ovdje također u bazi podataka, 869 00:37:17,380 --> 00:37:21,180 ako mi treba samo 02138 jedinstveno prepoznati nečiju rodni grad, 870 00:37:21,180 --> 00:37:25,020 nemojte pohranjivati ​​Cambridge, MA za svaki prokleto korisnik u tablici. 871 00:37:25,020 --> 00:37:29,770 >> Umjesto toga, imaju poseban stol pod nazivom Poštanskih brojeva da bi trebali imati što kolumne? 872 00:37:29,770 --> 00:37:33,490 Vjerojatno ID polje, samo zato, jer načela govorimo o sada. 873 00:37:33,490 --> 00:37:35,720 Vjerojatno polje zip za 02138. 874 00:37:35,720 --> 00:37:38,400 A onda vjerojatno ono što drugi stupovi? 875 00:37:38,400 --> 00:37:42,950 Grad i država, ali samo imati jedan red za 02138, jedan red za 02139, 876 00:37:42,950 --> 00:37:44,772 jedan red za 90210. 877 00:37:44,772 --> 00:37:46,730 I to je doslovno svi su poštanski brojevi znam. 878 00:37:46,730 --> 00:37:49,012 >> Tako sada, što možete učiniti? 879 00:37:49,012 --> 00:37:51,220 Ovo je problematično, jer Sada imam dvije tablice. 880 00:37:51,220 --> 00:37:54,660 Dakle, moji korisnici su uglavnom ovdje, ali njihov grad državne informacije je 881 00:37:54,660 --> 00:37:55,390 ovdje. 882 00:37:55,390 --> 00:37:58,635 Dakle, ispada SQL, postoji zapravo način da se pridruže informacije, 883 00:37:58,635 --> 00:38:00,470 i to ćete vidjeti u PSet. 884 00:38:00,470 --> 00:38:03,000 >> Ali ispada možete učiniti nešto ovako. 885 00:38:03,000 --> 00:38:10,501 SELECT zvijezda od korisnika, JOIN zips NA Korisnici dot zip jednak poštanskih brojeva dot zip. 886 00:38:10,501 --> 00:38:13,360 Koji je malo razvučen, doduše, ali to jednostavno 887 00:38:13,360 --> 00:38:17,590 znači odaberite sve od Proces uzimanja moj korisnicima stol 888 00:38:17,590 --> 00:38:19,580 moj poštanskih brojeva tablica. 889 00:38:19,580 --> 00:38:22,120 Pridružite im se na jednom području imaju u koloni. 890 00:38:22,120 --> 00:38:24,780 Dakle, doslovno radi nešto kao što je ovaj, i dati me natrag 891 00:38:24,780 --> 00:38:27,360 nova privremena tablica to je širi, to je veća, 892 00:38:27,360 --> 00:38:29,450 koji ima sve stupovi od njih oboje. 893 00:38:29,450 --> 00:38:33,510 I to je, jednostavno, bio bi Sintaksa za nešto ovakvo. 894 00:38:33,510 --> 00:38:35,540 >> Dakle, tu je to naprijed, ali se događa 895 00:38:35,540 --> 00:38:38,950 biti druge dizajnerske odluke da ćete napraviti, ne samo s indeksima 896 00:38:38,950 --> 00:38:40,550 ali i trčanje u izazove. 897 00:38:40,550 --> 00:38:43,360 U stvari, tu je izazov u svakom dizajn baze podataka 898 00:38:43,360 --> 00:38:47,930 pri čemu ponekad dvoje ljudi možda želite pristupiti iste redove baze podataka 899 00:38:47,930 --> 00:38:48,530 stol. 900 00:38:48,530 --> 00:38:51,450 Dakle, to je nešto što ćemo susresti u PSet7 kao dobro. 901 00:38:51,450 --> 00:38:54,686 >> Ali sam mislio da ću gledati na jedan napad koji je moguće u SQL. 902 00:38:54,686 --> 00:38:56,560 Koje su neke od problemi koji mogu nastati? 903 00:38:56,560 --> 00:38:58,170 Dakle, vi ćete naići na to u PSet7. 904 00:38:58,170 --> 00:39:01,874 A mi vam reći iskreno što kodiranje rješenje za ovaj problem. 905 00:39:01,874 --> 00:39:04,790 Ali ako se uzme višu razinu klase, osobito u operativnim sustavima, 906 00:39:04,790 --> 00:39:06,950 idete u susret pitanje valentnost, 907 00:39:06,950 --> 00:39:10,080 problem pokušava učiniti više stvari odjednom 908 00:39:10,080 --> 00:39:11,000 bez prekida. 909 00:39:11,000 --> 00:39:14,560 >> I ja sam mislio da ću uvesti taj Ideja za PSet7 s metaforom 910 00:39:14,560 --> 00:39:18,160 da sam naučio u Margo Seltzer je CS164 operativni sustavi 911 00:39:18,160 --> 00:39:18,990 Prije klase godina. 912 00:39:18,990 --> 00:39:22,230 Pretpostavimo da imate jednu od ovih domu hladnjaci u vašoj sobi u studentskom domu ili domu, 913 00:39:22,230 --> 00:39:24,474 i imate pravi sklonost za mlijeko. 914 00:39:24,474 --> 00:39:27,140 I tako, dođete kući iz razreda jednog dana, otvorite hladnjak. 915 00:39:27,140 --> 00:39:27,620 Oh, dovraga. 916 00:39:27,620 --> 00:39:28,870 Nema mlijeka u hladnjaku. 917 00:39:28,870 --> 00:39:32,470 Dakle, zatvorite frižider, zaključavanje vrata, zaključavanje vašem domu, 918 00:39:32,470 --> 00:39:34,770 hoda iza ugla na CVS, stati u red, 919 00:39:34,770 --> 00:39:36,312 i početi checking out za malo mlijeka. 920 00:39:36,312 --> 00:39:38,978 I to će potrajati, jer one proklete samo naplata 921 00:39:38,978 --> 00:39:40,570 brojači se zauvijek ionako koristiti. 922 00:39:40,570 --> 00:39:41,950 Tako je u međuvremenu, vaš cimer dolazi kući. 923 00:39:41,950 --> 00:39:43,470 On ili ona stvarno voli mlijeko, kao dobro. 924 00:39:43,470 --> 00:39:45,520 Oni dolaze u sobi u studentskom domu, otvorite hladnjak, oh, prokleto je. 925 00:39:45,520 --> 00:39:46,490 Nema više mlijeka. 926 00:39:46,490 --> 00:39:49,040 >> Dakle, on ili ona također ide iza ugla. 927 00:39:49,040 --> 00:39:51,670 Ali sada, s obzirom da je kao dva ili tri ili četiri CVSes blizini, 928 00:39:51,670 --> 00:39:53,800 oni se dogoditi da ide u jedan od različitih one na trgu. 929 00:39:53,800 --> 00:39:55,830 I tako sada, nekoliko minuta kasnije, oboje 930 00:39:55,830 --> 00:39:58,060 doći kući i uh, najgori problem ikad. 931 00:39:58,060 --> 00:40:00,967 Sada imate previše mlijeka jer će ići kiselo. 932 00:40:00,967 --> 00:40:03,050 A ti se sviđa mlijeko, ali stvarno ne sviđa mlijeko. 933 00:40:03,050 --> 00:40:06,730 >> Tako sada, to je skupo pogreška zbog vas oboje 934 00:40:06,730 --> 00:40:09,870 napravio odluku na temelju stanje neke varijable koje 935 00:40:09,870 --> 00:40:12,660 je u procesu se mijenja od vas, 936 00:40:12,660 --> 00:40:14,560 inicijator će dobiti mlijeko. 937 00:40:14,560 --> 00:40:17,785 Dakle, ono što je možda i ljudsko Rješenje za taj problem? 938 00:40:17,785 --> 00:40:18,660 PUBLIKA: [nečujan] 939 00:40:18,660 --> 00:40:19,430 DAVID Malan: Ostavite poruku, zar ne? 940 00:40:19,430 --> 00:40:21,850 Uvijek ostavite napomenu, ako ste upoznati s tom showu. 941 00:40:21,850 --> 00:40:23,100 Da, tu su nas dvije. 942 00:40:23,100 --> 00:40:25,940 Dakle, uvijek ostaviti poruku, ili doslovno zaključali hladnjak 943 00:40:25,940 --> 00:40:28,602 s nekom vrstom lokot ili nešto preko vrha kao što je to. 944 00:40:28,602 --> 00:40:31,310 Ali to je zapravo će biti Ključni problem s dizajnom baze podataka, 945 00:40:31,310 --> 00:40:34,710 pogotovo kad bi mogli imati više preglednicima, više laptopa, 946 00:40:34,710 --> 00:40:37,450 više korisnika sve pokušava ažurirati podatke odjednom. 947 00:40:37,450 --> 00:40:40,590 Posebno osjetljive informacije kao i financijske informacije, 948 00:40:40,590 --> 00:40:43,350 pri čemu uz trgovanje dionicama web stranice kao i ti ćeš biti zgrada, 949 00:40:43,350 --> 00:40:47,270 što ako želite provjeriti koliko novca imate i onda ako imate dovoljno, 950 00:40:47,270 --> 00:40:48,490 kupiti nešto dionica? 951 00:40:48,490 --> 00:40:50,899 >> Ali što ako netko drugi tko ima zajednički račun s vama 952 00:40:50,899 --> 00:40:52,690 istodobno pokušavajući kupiti neke dionice? 953 00:40:52,690 --> 00:40:55,190 Dakle, on ili ona provjere račun platne bilance, oboje 954 00:40:55,190 --> 00:40:57,540 vratiti isto Odgovor, nema mlijeka. 955 00:40:57,540 --> 00:41:00,580 Ili oboje vratiti odgovor, imate 100 $ na računu. 956 00:41:00,580 --> 00:41:04,680 Oboje vas pokušati donijeti odluku kupiti jednu dionicu neke tvrtke zaliha. 957 00:41:04,680 --> 00:41:06,130 >> A sada, što se događa? 958 00:41:06,130 --> 00:41:07,140 Imate dvije dionice? 959 00:41:07,140 --> 00:41:08,420 Nemate dionice? 960 00:41:08,420 --> 00:41:10,320 Problemi kao što to može pojaviti. 961 00:41:10,320 --> 00:41:11,755 Dakle, mi ćemo naići na to. 962 00:41:11,755 --> 00:41:14,630 SQL injection napada, srećom, su nešto što će vam pomoći s, 963 00:41:14,630 --> 00:41:17,430 ali to su atrociously uobičajene ovih dana još. 964 00:41:17,430 --> 00:41:18,680 Dakle, ovo je samo jedan primjer. 965 00:41:18,680 --> 00:41:21,290 Ja ne tražim da Harvard PIN sustava je 966 00:41:21,290 --> 00:41:23,130 ranjiva na ovaj napad. 967 00:41:23,130 --> 00:41:24,160 Pokušali smo. 968 00:41:24,160 --> 00:41:26,120 Ali, vi znate da mi teren ovako. 969 00:41:26,120 --> 00:41:29,620 I Yale neto ID ima sličan u potrazi zaslon ovih dana. 970 00:41:29,620 --> 00:41:33,190 I to ispada, da je možda PIN sustav je implementiran u PHP-u. 971 00:41:33,190 --> 00:41:37,050 >> A ako je were-- je not-- oni možda kôd koji izgleda ovako. 972 00:41:37,050 --> 00:41:38,210 Imaju dvije varijable. 973 00:41:38,210 --> 00:41:42,495 Daj mi ime i lozinku iz Post super globalne varijable 974 00:41:42,495 --> 00:41:43,970 da smo razgovarali o ranije. 975 00:41:43,970 --> 00:41:47,310 Možda Harvard ima upit poput SELECT zvijezda od korisnika 976 00:41:47,310 --> 00:41:50,005 gdje korisničko ime jednak i lozinku jednak. 977 00:41:50,005 --> 00:41:51,880 I obavijest da sam samo plugging u korištenju 978 00:41:51,880 --> 00:41:55,050 Kovrčava braće zapis od drugih dan, što znači samo uključiti u vrijednosti 979 00:41:55,050 --> 00:41:55,550 ovdje. 980 00:41:55,550 --> 00:41:57,449 Neću pomoću upitnik tehnika. 981 00:41:57,449 --> 00:41:59,240 Ja nemam drugi ili treće tvrdnje. 982 00:41:59,240 --> 00:42:02,350 Ja sam samo doslovno izgradnje string sebi. 983 00:42:02,350 --> 00:42:04,930 >> Problem je, međutim, da je ako netko sviđa scroob, 984 00:42:04,930 --> 00:42:09,020 što je referenca na filmu, prijavljuje se u ovako nešto, 985 00:42:09,020 --> 00:42:11,250 i ja sam ukloniti točkice koji obično prikriti 986 00:42:11,250 --> 00:42:14,370 lozinke, što ako je on posebno zlonamjerni 987 00:42:14,370 --> 00:42:18,860 i njegova lozinka možda je 12345, po filmu pod nazivom "Spaceballs" 988 00:42:18,860 --> 00:42:21,970 ali on kritički tipa A Jedan citat nakon pet, 989 00:42:21,970 --> 00:42:24,790 onda doslovno riječ ili u prostoru, a zatim citat, 990 00:42:24,790 --> 00:42:29,160 citat jedan jednako jedan citat, ali primijetiti da je izostavljeno što? 991 00:42:29,160 --> 00:42:32,700 On je izostavljen citat na desnoj a on je propustio citat na lijevoj strani. 992 00:42:32,700 --> 00:42:35,170 >> Jer ako je to napadač scroob je pretpostavka 993 00:42:35,170 --> 00:42:38,160 je da su ljudi koji su pisali ovo PHP kod nisu tako svijetle, 994 00:42:38,160 --> 00:42:42,990 možda su samo neki pojedinačni citira oko interpolacije 995 00:42:42,990 --> 00:42:45,210 varijable u vitičastim zagradama? 996 00:42:45,210 --> 00:42:48,620 I tako, možda, mogao vrsta od završe misao 997 00:42:48,620 --> 00:42:53,290 za njih, ali na način koji će da ga provalio u PIN sustava. 998 00:42:53,290 --> 00:42:55,310 Drugim riječima, pretpostavimo da je to kod 999 00:42:55,310 --> 00:42:57,140 i sada priključiti ono scroob upisali. 1000 00:42:57,140 --> 00:42:58,770 I to je crvena, jer je to loše. 1001 00:42:58,770 --> 00:43:01,310 >> A temeljni teksta je ono što je upisali u, 1002 00:43:01,310 --> 00:43:05,510 scroob mogla izigrati Harvard poslužitelja u izgradnju SQL upit 1003 00:43:05,510 --> 00:43:07,440 niz koji izgleda ovako. 1004 00:43:07,440 --> 00:43:11,760 Lozinka jednak 12345 ili jedan jednako jedan. 1005 00:43:11,760 --> 00:43:14,820 Rezultat koji je, logično, je da će to prijaviti scroob 1006 00:43:14,820 --> 00:43:18,360 u ako mu je lozinka 12345 ili ako jedan jednako 1007 00:43:18,360 --> 00:43:22,660 jedan, što je, naravno, uvijek istinito, što znači scroob uvijek dobiva. 1008 00:43:22,660 --> 00:43:26,060 >> I tako, put popraviti ovaj, kao iu mnogo slučajeva, 1009 00:43:26,060 --> 00:43:28,140 bi se napisati više defenzivno. 1010 00:43:28,140 --> 00:43:30,390 Za korištenje nešto poput naših stvarna funkcija upita, što 1011 00:43:30,390 --> 00:43:33,980 što ćete vidjeti u PSet7, gdje smo ukopčali nešto slično pitanje obilježava se ovdje. 1012 00:43:33,980 --> 00:43:35,980 A ljepota Funkcija upit koji smo 1013 00:43:35,980 --> 00:43:40,010 dati je da brani od ovih Takozvani SQL injekcije napada, u kojima 1014 00:43:40,010 --> 00:43:44,260 netko prevariti svoj kod u ubrizgavanje svoj vlastiti SQL koda. 1015 00:43:44,260 --> 00:43:47,380 Jer ono što funkciji upit dajemo ćete zapravo učiniti, 1016 00:43:47,380 --> 00:43:51,270 ako koristite upitnika sintaksu i drugi i treći argument, 1017 00:43:51,270 --> 00:43:54,590 je ono što se to dodati na ulaz da korisnik pod uvjetom? 1018 00:43:54,590 --> 00:43:56,060 Oni backslash citati. 1019 00:43:56,060 --> 00:43:58,590 >> Dakle, to bježi bilo potencijalno opasni likovi. 1020 00:43:58,590 --> 00:44:01,000 Ovo izgleda čudno sada, ali to nije ranjiv 1021 00:44:01,000 --> 00:44:03,260 jer ne promijeniti logiku više 1022 00:44:03,260 --> 00:44:06,470 jer cijeli zaporka sada jedan citat koji nije, 1023 00:44:06,470 --> 00:44:07,596 Zapravo, lozinkom scroob a. 1024 00:44:07,596 --> 00:44:09,845 Dakle, došlo je do neke šale o tome tijekom godina. 1025 00:44:09,845 --> 00:44:12,570 Dakle, ovo je fotografija uzeta neke monstrum na parkiralištu 1026 00:44:12,570 --> 00:44:16,620 pri čemu ti znaš da neki gradovi i država pokušati skenirati vaše licence 1027 00:44:16,620 --> 00:44:19,460 Ploča vama ili ulaznicu naplatiti vam ako idete kroz bez, kao što su, 1028 00:44:19,460 --> 00:44:20,660 E-Z pass stvar. 1029 00:44:20,660 --> 00:44:24,490 Dakle, ta osoba smatra da je možda ljudi pišu na e-Z Pass sustav 1030 00:44:24,490 --> 00:44:28,240 nisu bile tako svijetle, a možda su Samo spojeni zajedno niz, 1031 00:44:28,240 --> 00:44:32,190 tako da on ili ona ne može zlonamjerno ne samo završe misao, 1032 00:44:32,190 --> 00:44:35,150 ali zapravo izvršiti loše naredbu, što nismo još spomenuli, 1033 00:44:35,150 --> 00:44:36,380 ali vjerojatno možete pogoditi. 1034 00:44:36,380 --> 00:44:39,820 To osim za brisanje i umetnuti i ažuriranje i odaberite, 1035 00:44:39,820 --> 00:44:43,370 tu je ključna riječ se zove pad, što doslovno briše sve 1036 00:44:43,370 --> 00:44:45,300 u bazi podataka, koja Osobito je loše. 1037 00:44:45,300 --> 00:44:48,760 >> Možemo uvećanje na ovo ako to je malo teško vidjeti. 1038 00:44:48,760 --> 00:44:52,300 Ovaj, sada je poznato crtić to je predivno pametan sada 1039 00:44:52,300 --> 00:44:53,145 i razumljivo. 1040 00:44:53,145 --> 00:45:00,880 1041 00:45:00,880 --> 00:45:04,750 >> [Smijeh] 1042 00:45:04,750 --> 00:45:05,910 >> Da, super. 1043 00:45:05,910 --> 00:45:06,800 Vrsta geeking van. 1044 00:45:06,800 --> 00:45:08,800 Dakle, to su, dakle, SQL injection napada. 1045 00:45:08,800 --> 00:45:13,050 I oni su tako lako izbjeći pomoću pravo kod ili prave knjižnice. 1046 00:45:13,050 --> 00:45:15,947 I vidjet ćete u PSet7, to je Zato ćemo vam dati funkciju upita. 1047 00:45:15,947 --> 00:45:17,780 Dakle, nekoliko zadirkivači koje smo mislili da bih 1048 00:45:17,780 --> 00:45:19,930 vam dati ovdje u našem Preostalo minuta zajedno. 1049 00:45:19,930 --> 00:45:24,030 Dakle, kao što se sjećate iz tjedna nula, mi uvedena ove dvije žarulje koje 1050 00:45:24,030 --> 00:45:26,610 su lijepe, a ne samo zato oni su prilično i šarene, 1051 00:45:26,610 --> 00:45:29,450 nego zato što podržavaju nešto pozvao API, aplikacija 1052 00:45:29,450 --> 00:45:31,980 Sučelje za programiranje i u CS50 do sada, mi smo 1053 00:45:31,980 --> 00:45:34,440 uglavnom usmjerena na GET i POST, ali ispada 1054 00:45:34,440 --> 00:45:37,390 postoji drugi HTTP glagoli poput PUT. 1055 00:45:37,390 --> 00:45:39,430 >> A u stvari, to je bio slide iz tjedna nula 1056 00:45:39,430 --> 00:45:44,930 gdje ako pišete kod koji šalje la PSet6 HTTP zahtjev koji 1057 00:45:44,930 --> 00:45:49,647 izgleda ovako s ovim komad teksta na dnu, koji se zove JSON, 1058 00:45:49,647 --> 00:45:52,230 ili JavaScript Objekt oznake da ćemo razgovarati o sljedećem tjednu, 1059 00:45:52,230 --> 00:45:57,030 možete uključiti ili isključiti ili promjene boja svjetla poput onih. 1060 00:45:57,030 --> 00:46:00,480 Dakle, ako CS50 ima osim nekih tih žarulja ovdje u New Havenu 1061 00:46:00,480 --> 00:46:02,480 ako želite posuditi ih za konačne projekte, 1062 00:46:02,480 --> 00:46:04,370 Također neke Microsoft Bendovi, koji su poput 1063 00:46:04,370 --> 00:46:07,619 Satovi koje nose oko ručnog zgloba da na sličan način imaju API tako da 1064 00:46:07,619 --> 00:46:10,040 Možete napisati svoj softver za njih. 1065 00:46:10,040 --> 00:46:12,490 >> Imamo račun s Appleov iOS broj tako 1066 00:46:12,490 --> 00:46:15,510 da, ako imate Apple Satovi ili iPhone ili iPad ili iPod, 1067 00:46:15,510 --> 00:46:17,707 možete napisati kod koji zapravo radi o onima. 1068 00:46:17,707 --> 00:46:19,540 Imamo hrpu od Arduinos, koji su 1069 00:46:19,540 --> 00:46:22,010 maleni malo računala bez slučajeva, u biti, 1070 00:46:22,010 --> 00:46:25,240 da se možete povezati putem USB, obično na svoj Mac ili PC, 1071 00:46:25,240 --> 00:46:28,810 napisati kod koji radi na tim fizičko uređaji koji često imaju senzore na njima 1072 00:46:28,810 --> 00:46:30,790 tako da možete komunicirati sa stvarnim svijetom. 1073 00:46:30,790 --> 00:46:32,860 Imamo hrpu od Leap Motion uređaja, 1074 00:46:32,860 --> 00:46:36,500 koji su USB uređaji za Mac i Računala, i ovdje opet, u New Havenu. 1075 00:46:36,500 --> 00:46:40,080 A ako ga spojite na svoj Mac, zapravo možete kontrolirati vaše računalo 1076 00:46:40,080 --> 00:46:42,550 pisanjem softvera da putem infracrvenih zraka, 1077 00:46:42,550 --> 00:46:46,360 otkrije gdje se vaše ljudske ruke, čak i bez dodirivanja tipkovnice. 1078 00:46:46,360 --> 00:46:49,135 Mislili smo da ćemo podijeliti brz uvid u to, na primjer. 1079 00:46:49,135 --> 00:46:51,428 >> [Glazbom] 1080 00:46:51,428 --> 00:47:55,840 1081 00:47:55,840 --> 00:47:57,590 Dakle, imamo cjelinu hrpa tih stvari, 1082 00:47:57,590 --> 00:48:01,040 također, pozvao MYO ruku bendova koje ste stavili u odnosu na podlakticu 1083 00:48:01,040 --> 00:48:04,595 a onda možete kontrolirati pravi svijet ili virtualni svijet kao što je ovaj. 1084 00:48:04,595 --> 00:48:06,471 >> [Glazbom] 1085 00:48:06,471 --> 00:49:17,580 1086 00:49:17,580 --> 00:49:20,920 Ili, mi također imaju neke Google Karton, što je doslovno, kao što je, 1087 00:49:20,920 --> 00:49:24,841 kartonska kutija ste mogli staviti na svoje lice, ali tobogan na telefonu u nju 1088 00:49:24,841 --> 00:49:27,590 tako da stavite čašu svoje Telefon jako blizu svojim očima. 1089 00:49:27,590 --> 00:49:30,190 I Google Karton je prilično jeftini na $ 10 ili $ 20. 1090 00:49:30,190 --> 00:49:32,230 I to je malo leće da malo off smjene 1091 00:49:32,230 --> 00:49:35,900 slika na zaslonu Vašeg čovjeka Oči vam dati osjećaj dubine 1092 00:49:35,900 --> 00:49:39,550 tako da zapravo imaju 3D okruženje u ispred vas. 1093 00:49:39,550 --> 00:49:42,927 Također imamo neke Samsung Gear, koji je skuplji verzija ovog, 1094 00:49:42,927 --> 00:49:46,010 ali da isto tako mogu slajd u Android telefon i dati vam iluziju 1095 00:49:46,010 --> 00:49:48,309 of-- ili dati iskustvo virtualne stvarnosti. 1096 00:49:48,309 --> 00:49:50,850 I u naše posljednje dvije minute, mislili smo da ćemo pokušati učiniti. 1097 00:49:50,850 --> 00:49:55,250 Ako mogu projicirati ono Colton ima Ovdje samo oštriti apetit, 1098 00:49:55,250 --> 00:49:58,442 neka mi ići naprijed i baciti se na velikom ekranu ovdje. 1099 00:49:58,442 --> 00:49:59,400 Dopustite mi ubiti svjetla. 1100 00:49:59,400 --> 00:50:02,290 Colton, želiš ići naprijed i staviti na mobitel trenutak 1101 00:50:02,290 --> 00:50:05,171 i dođite do sredina pozornici? 1102 00:50:05,171 --> 00:50:07,420 I želiš project-- to je ono što Colton vidi. 1103 00:50:07,420 --> 00:50:10,560 >> Sada, Wi-Fi u ovdje Ne toliko jaka za ovaj uređaj 1104 00:50:10,560 --> 00:50:13,870 da je to super uvjerljiv, ali Colton je doslovno 1105 00:50:13,870 --> 00:50:15,710 u ovom čarobnom futuristički mjestu. 1106 00:50:15,710 --> 00:50:16,796 On vidi samo jednu sliku. 1107 00:50:16,796 --> 00:50:19,920 Vi vide svoju lijevu i desno oko da je njegov mozak se povezivanjem 1108 00:50:19,920 --> 00:50:22,260 u trodimenzionalni okoliš na njegovom licu. 1109 00:50:22,260 --> 00:50:24,319 Upravo je izabrao izbornika ovdje. 1110 00:50:24,319 --> 00:50:27,360 I tako opet, on je nosio ovaj slušalice sa Samsung telefona na to da je 1111 00:50:27,360 --> 00:50:29,080 bežično projiciranje našem pretek. 1112 00:50:29,080 --> 00:50:30,349 Sada ste na Marsu, mislim? 1113 00:50:30,349 --> 00:50:31,140 COLTON: Mislim da je. 1114 00:50:31,140 --> 00:50:32,181 Nisam siguran [nečujan]. 1115 00:50:32,181 --> 00:50:34,250 [Smijeh] 1116 00:50:34,250 --> 00:50:36,374 >> DAVID Malan: Ispada Mars ima tih izbornika. 1117 00:50:36,374 --> 00:50:41,590 >> COLTON: [nečujan] neke cool mjesta ako želimo ići to-- 1118 00:50:41,590 --> 00:50:43,330 >> DAVID Malan: Gdje želimo ići? 1119 00:50:43,330 --> 00:50:45,837 >> COLTON: [nečujan] 1120 00:50:45,837 --> 00:50:48,170 DAVID Malan: I da vidimo gdje Colton nas je da se sada. 1121 00:50:48,170 --> 00:50:48,961 COLTON: [nečujan] 1122 00:50:48,961 --> 00:50:52,830 1123 00:50:52,830 --> 00:50:56,380 >> DAVID Malan: Dakle, postoji toliko mnogo različitih mjesta koje možete poduzeti sami. 1124 00:50:56,380 --> 00:51:00,590 Postoji FAPIs preko kojih možete pisanje igre ili interakcije koje 1125 00:51:00,590 --> 00:51:01,950 izvoditi, u konačnici, na telefon. 1126 00:51:01,950 --> 00:51:03,908 Dakle, ti zapravo samo pisanje mobilni telefon app. 1127 00:51:03,908 --> 00:51:06,380 No, zahvaljujući softveru i grafičke mogućnosti, 1128 00:51:06,380 --> 00:51:08,765 Sada Colton je to maleni malo vikend. 1129 00:51:08,765 --> 00:51:10,515 I na rizik sebe neodoljiv, 1130 00:51:10,515 --> 00:51:13,330 Colton, a ja ću se držati za oko dok je na kraju klase danas ovdje 1131 00:51:13,330 --> 00:51:14,300 Ako želite da se i igrati. 1132 00:51:14,300 --> 00:51:16,350 A mi ćemo ih sljedeći tjedan, kao dobro. 1133 00:51:16,350 --> 00:51:18,420 Bez daljnjeg, Ado to je to za danas. 1134 00:51:18,420 --> 00:51:21,990 Vidimo se sljedeći tjedan. 1135 00:51:21,990 --> 00:51:24,140 >> [MUSIC - ragga TWINS "loš čovjek"] 1136 00:51:24,140 --> 00:55:23,146