1 00:00:00,000 --> 00:00:02,405 >> [Musikwiedergabe] 2 00:00:02,405 --> 00:00:10,439 3 00:00:10,439 --> 00:00:11,980 DAVID MALAN: Okay, das ist CS50. 4 00:00:11,980 --> 00:00:13,740 Dies ist das Ende der achten Woche. 5 00:00:13,740 --> 00:00:15,887 Und heute, beginnen wir in einigen Stücken zu füllen 6 00:00:15,887 --> 00:00:17,720 wenn es um Gebäude geht Sachen auf dem Netz. 7 00:00:17,720 --> 00:00:20,020 Also, daran erinnern, dass wir am Montag, Wir verbringen viel mehr Zeit 8 00:00:20,020 --> 00:00:22,530 auf PHP, die diese Dynamik ist Programmiersprache, 9 00:00:22,530 --> 00:00:26,872 lässt uns ausgegeben, unter anderem Dinge, HTML und andere derartige Inhalte 10 00:00:26,872 --> 00:00:27,830 dass wir sehen wollen. 11 00:00:27,830 --> 00:00:30,871 Aber wir haben nicht wirklich an, wie sah wir werden keine Informationen zu speichern. 12 00:00:30,871 --> 00:00:34,477 In der Tat, fast jeder, dass die Super- interessante Webseiten, die Sie heute besuchen 13 00:00:34,477 --> 00:00:36,560 eine Art von Datenbank am hinteren Ende, nicht wahr? 14 00:00:36,560 --> 00:00:39,540 Facebook speichert sicherlich viele Daten über uns alle und Google Mail speichert alle 15 00:00:39,540 --> 00:00:40,210 Ihre E-Mails. 16 00:00:40,210 --> 00:00:44,150 >> Und so sind viele andere Websites nicht nur statische Inhalte, die information ist. 17 00:00:44,150 --> 00:00:45,640 Es ist in gewisser Weise tatsächlich dynamisch. 18 00:00:45,640 --> 00:00:48,480 Sie Input, aktualisiert es die Seiten für andere Menschen. 19 00:00:48,480 --> 00:00:50,620 Sie erhalten Nachrichten, die Sie senden Nachrichten und so weiter. 20 00:00:50,620 --> 00:00:54,250 Also heute, schauen wir näher an die Grundlagen eines Projektes 21 00:00:54,250 --> 00:00:57,330 dass Sie in die nächsten Tauchgang Woche CS50 Finanzen, das 22 00:00:57,330 --> 00:01:00,509 tatsächlich zu haben, die Sie bauen, etwas, das nicht in C, aber in PHP. 23 00:01:00,509 --> 00:01:02,550 Eine Website, die eine sieht wenig so etwas wie dieses 24 00:01:02,550 --> 00:01:05,810 dass ermöglicht den Kauf und Verkauf Aktien, die eigentlich 25 00:01:05,810 --> 00:01:09,044 gehen, um auf Echtzeit zu zeichnen Bestandsdaten aus Yahoo Finance. 26 00:01:09,044 --> 00:01:11,960 Und so letztendlich, hast du das haben Illusion, für sich selbst und für die Nutzer 27 00:01:11,960 --> 00:01:14,550 dass Sie tatsächlich den Kauf und Verkauf Aktien und immer nahezu in Echtzeit 28 00:01:14,550 --> 00:01:16,800 Updates, die Verwaltung ein Mappe, die sämtlich 29 00:01:16,800 --> 00:01:20,310 wird zu verlangen, mit, letztlich eine Datenbank der Benutzer. 30 00:01:20,310 --> 00:01:23,330 >> Also, in Ihren eigenen Worten, vor allem, wenn Sie nicht sind 31 00:01:23,330 --> 00:01:25,670 Super vertraut mit Computer Wissenschaft oder Datenbanken, was 32 00:01:25,670 --> 00:01:30,790 wissen Sie, eine Datenbank zu sein gerade jetzt, in nicht-technischen Begriffe? 33 00:01:30,790 --> 00:01:32,300 Was ist es? 34 00:01:32,300 --> 00:01:36,882 Wie würden Sie es beschreiben, an einen Mitbewohner oder einen Freund? 35 00:01:36,882 --> 00:01:40,100 >> ZIELGRUPPE: [unverständlich] Informationen [unverständlich] 36 00:01:40,100 --> 00:01:44,430 >> DAVID MALAN: Also, eine Liste der Informationen, oder ein store-- eine Liste von Informationen 37 00:01:44,430 --> 00:01:47,160 dass Sie möchten, zu speichern könnte über etwas, wie ein Benutzer. 38 00:01:47,160 --> 00:01:50,190 Und was machen Benutzer mit ihnen verbunden? 39 00:01:50,190 --> 00:01:53,160 Wenn Sie einen Benutzer auf Facebook oder sind Gmail, was sind die Merkmale 40 00:01:53,160 --> 00:01:54,940 dass wir alle Benutzer? 41 00:01:54,940 --> 00:01:58,530 Wie, was vielleicht einige der sein Spalten in der Tabelle, auf die wir 42 00:01:58,530 --> 00:01:59,390 zuletzt angespielt? 43 00:01:59,390 --> 00:02:01,140 Denn hier können Sie denken Sie an eine Datenbank 44 00:02:01,140 --> 00:02:05,810 wirklich so ein schickes Excel-Datei oder Google Tabellenkalkulation oder Apple Numbers Datei. 45 00:02:05,810 --> 00:02:08,280 >> Also, was denken Sie, wenn Sie eines Benutzer? 46 00:02:08,280 --> 00:02:11,290 Was haben sie? 47 00:02:11,290 --> 00:02:11,790 Was ist das? 48 00:02:11,790 --> 00:02:12,470 >> Publikum: Ein Name. 49 00:02:12,470 --> 00:02:13,303 >> DAVID MALAN: Ein Name. 50 00:02:13,303 --> 00:02:16,840 Also, wenn Namen wie, David Malan würde der Name eines Benutzers sein. 51 00:02:16,840 --> 00:02:17,980 Was braucht ein Benutzer? 52 00:02:17,980 --> 00:02:18,770 >> Publikum: Eine ID. 53 00:02:18,770 --> 00:02:19,561 >> DAVID MALAN: Eine ID. 54 00:02:19,561 --> 00:02:23,320 So, wie eine ID-Nummer, wie Ihr Harvard ID oder Ihr Yale Net-ID oder dergleichen. 55 00:02:23,320 --> 00:02:24,923 Was sonst könnte ein Benutzer? 56 00:02:24,923 --> 00:02:25,890 >> ZIELGRUPPE: Passwort. 57 00:02:25,890 --> 00:02:29,240 >> DAVID MALAN: Ein Passwort, vielleicht ein Adresse, vielleicht eine Telefonnummer, vielleicht 58 00:02:29,240 --> 00:02:30,050 eine E-Mail-Adresse ein. 59 00:02:30,050 --> 00:02:32,640 Also, es gibt Trauben von Feldern und diese könnte Art von außer Kontrolle geraten 60 00:02:32,640 --> 00:02:34,760 schnell, sobald Sie beginnen Realisierung, oh, wir speichern diese 61 00:02:34,760 --> 00:02:36,190 und lassen Sie speichern dieses und jenes. 62 00:02:36,190 --> 00:02:37,657 >> Aber wie können wir wirklich tun? 63 00:02:37,657 --> 00:02:39,740 Also noch einmal, das mentale Modell für heute haben wir 64 00:02:39,740 --> 00:02:42,320 tauchen Sie ein in tatsächlichen SQL, Strukturierte Abfragesprache, 65 00:02:42,320 --> 00:02:44,186 ist eine Datenbank, die so aussieht. 66 00:02:44,186 --> 00:02:45,310 Es ist nur, Zeilen und Spalten. 67 00:02:45,310 --> 00:02:48,309 Und Sie können sich vorstellen, Google Spreadsheets oder eine beliebige Anzahl anderer Programme. 68 00:02:48,309 --> 00:02:52,130 Aber was ist Schlüssel zu MySQL, die das ist, Datenbank-Software werden wir verwenden, 69 00:02:52,130 --> 00:02:54,920 der frei offen available-- Face Verwendungen 70 00:02:54,920 --> 00:02:59,200 es und jede Anzahl von anderen websites-- Datenbank speichert Dinge relational. 71 00:02:59,200 --> 00:03:01,770 Und eine relationale Datenbank, bedeutet nur eine, die buchstäblich 72 00:03:01,770 --> 00:03:03,672 speichert die Daten in Zeilen und Spalten. 73 00:03:03,672 --> 00:03:04,630 So einfach ist das. 74 00:03:04,630 --> 00:03:07,230 >> Also, auch so etwas wie Oracle, dass Sie könnten in der Regel gehört haben 75 00:03:07,230 --> 00:03:08,271 eine relationale Datenbank ist. 76 00:03:08,271 --> 00:03:10,929 Und unter der Haube ist es, speichert die Daten in Zeilen und Spalten. 77 00:03:10,929 --> 00:03:12,970 Und Oracle lädt Sie ein viel Geld, das zu tun, 78 00:03:12,970 --> 00:03:15,550 der Erwägung, dass MySQL Gebühren Sie haben nichts für die gleiche. 79 00:03:15,550 --> 00:03:18,790 Also, SQL wird uns geben, mindestens vier Operationen. 80 00:03:18,790 --> 00:03:23,190 Die Möglichkeit, Daten auszuwählen, wie Lese Daten, Einfügen, Löschen und Aktualisieren von Daten. 81 00:03:23,190 --> 00:03:25,525 Mit anderen Worten, das sind wirklich die vier Tastenbetätigungen 82 00:03:25,525 --> 00:03:28,950 die gehen, um es uns ermöglichen, zu ändern Sachen in diesen Zeilen und Spalten. 83 00:03:28,950 --> 00:03:33,250 >> Das Werkzeug, das wir heute vor allem verwendet werden um SQL zu lernen und mit ihm zu spielen 84 00:03:33,250 --> 00:03:34,627 erneut aufgerufen PHP MyAdmin. 85 00:03:34,627 --> 00:03:35,460 Es ist web-basiertes Tool. 86 00:03:35,460 --> 00:03:38,200 Insgesamt Zufall, dass es ist in PHP geschrieben. 87 00:03:38,200 --> 00:03:42,400 Aber es wird uns eine grafische geben Benutzerschnittstelle, so dass wir tatsächlich 88 00:03:42,400 --> 00:03:46,054 erstellen Sie diese Zeilen und Spalten und dann mit ihnen zu sprechen über Code. 89 00:03:46,054 --> 00:03:47,970 Also, lasst uns jetzt zu starten was ich denke, ist ehrlich gesagt 90 00:03:47,970 --> 00:03:51,000 Art des Spaßes Prozess Aufbau des Back-End von Websites, 91 00:03:51,000 --> 00:03:54,580 die Teile, die Benutzer nicht zu sehen, aber mit Sicherheit zu tun kümmern uns um, 92 00:03:54,580 --> 00:03:56,170 denn das ist eher die Daten gehen. 93 00:03:56,170 --> 00:03:59,570 So ähnlich wie C und etwas weniger wie PHP, 94 00:03:59,570 --> 00:04:04,954 SQL oder einer Datenbank, die unterstützt SQL, wenigstens diese Datentypen 95 00:04:04,954 --> 00:04:05,870 und Trauben von anderen. 96 00:04:05,870 --> 00:04:08,107 CHAR, VARCHAR, INT, BIGINT, DECIMAL und DATETIME. 97 00:04:08,107 --> 00:04:09,940 Und es gibt eine ganze Reihe von anderen Funktionen, 98 00:04:09,940 --> 00:04:11,940 aber wir tun dies, indem Art des tatsächlichen Beispiels. 99 00:04:11,940 --> 00:04:16,450 >> Ich werde in CS50 IDE gehen wo, im Voraus, ich habe eingeloggt 100 00:04:16,450 --> 00:04:19,372 und ich habe auch besucht eine URL für Dieses Tool namens PHP MyAdmin. 101 00:04:19,372 --> 00:04:22,580 Und in Problem stellte sieben, wir sagen, Sie genau, wie man mit dieser Schnittstelle erhalten 102 00:04:22,580 --> 00:04:23,200 auch. 103 00:04:23,200 --> 00:04:25,640 Auf der linken oberen Ecke, Bekanntmachung heißt es Vorträge zu halten. 104 00:04:25,640 --> 00:04:27,610 Und das bedeutet nur, dass im Voraus, habe ich 105 00:04:27,610 --> 00:04:31,360 eine leere Datenbank mit dem Namen Vortrag dass keine Tabellen in es noch nicht. 106 00:04:31,360 --> 00:04:32,600 Es gibt keine Zeilen und Spalten. 107 00:04:32,600 --> 00:04:34,308 Da die erste Sache, die wir tun werden 108 00:04:34,308 --> 00:04:37,100 wird beginnen, um eine Tabelle zu erstellen das wird unsere Nutzer zu speichern. 109 00:04:37,100 --> 00:04:39,100 >> Also, buchstäblich über hier nach rechts, ich bin 110 00:04:39,100 --> 00:04:42,070 gehen, um die Datenbank zu sagen, Ich möchte eine Tabelle namens Users. 111 00:04:42,070 --> 00:04:44,845 Also, das ist, wie die Datei, die ich will alle meine Daten gespeichert werden. 112 00:04:44,845 --> 00:04:45,720 Und wie viele Spalten? 113 00:04:45,720 --> 00:04:47,740 Nun, lassen Sie es einfach halten für den Moment. 114 00:04:47,740 --> 00:04:51,855 Ich will einfach nur wie ein Geschäft Benutzernamen und ein Name für einen Benutzer. 115 00:04:51,855 --> 00:04:53,020 Wir fangen klein. 116 00:04:53,020 --> 00:04:55,370 So möchte ich zwei Spalten insgesamt. 117 00:04:55,370 --> 00:04:57,360 Und ich werde weitermachen und klicken Sie auf Go. 118 00:04:57,360 --> 00:04:59,210 Und dann für diese Säulen, was ich 119 00:04:59,210 --> 00:05:04,576 wenn dieser Internetseite zu do-- cooperates-- alle Rechte, 120 00:05:04,576 --> 00:05:05,950 so werden wir, dass es erneut zu versuchen. 121 00:05:05,950 --> 00:05:09,180 Ich werde eine Tabelle namens erstellen Benutzer mit zwei Spalten, klicken Sie auf OK, OK. 122 00:05:09,180 --> 00:05:10,520 Jetzt müssen wir es wirklich schnell. 123 00:05:10,520 --> 00:05:12,065 Danke, sehr gut gemacht. 124 00:05:12,065 --> 00:05:14,440 Na gut, so was wollen wir diese Säulen genannt zu werden? 125 00:05:14,440 --> 00:05:16,080 >> Also, man werde genannt Benutzername werden. 126 00:05:16,080 --> 00:05:19,480 Also, alles was ich sehe hier-- und die Schnittstelle ehrlich gesagt wird ein wenig hässlich schließlich, 127 00:05:19,480 --> 00:05:21,270 sobald Sie beginnen Sie in all diesen Daten. 128 00:05:21,270 --> 00:05:27,450 Aber was schön ist, dass Art paradoxerweise Ich erstelle Säulen, 129 00:05:27,450 --> 00:05:29,977 aber das Werkzeug dummer legte sie in Reihen 130 00:05:29,977 --> 00:05:31,560 , so dass ich diese Spalten konfigurieren. 131 00:05:31,560 --> 00:05:33,550 Also, es gibt zwei Leer es unter Name. 132 00:05:33,550 --> 00:05:36,180 Und eines dieser Felder I wollen Benutzername genannt, 133 00:05:36,180 --> 00:05:38,000 und der andere Bereich Ich möchte Namen zu nennen. 134 00:05:38,000 --> 00:05:40,340 >> Und jetzt habe ich zu entscheiden, Datentypen für diese Dinge. 135 00:05:40,340 --> 00:05:42,330 So, während in Excel und Google Spreadsheets, 136 00:05:42,330 --> 00:05:45,531 Wenn Sie eine Spalte möchten, können Sie buchstäblich geben Sie einfach Namen oder Nickname, drücken Sie Enter. 137 00:05:45,531 --> 00:05:48,030 Vielleicht haben Sie es fett machen gerade für Klarheit, aber das ist es. 138 00:05:48,030 --> 00:05:50,140 Sie müssen nicht angeben Typen der Spalten. 139 00:05:50,140 --> 00:05:53,790 Jetzt in Google Spreadsheets oder Excel, die Sie könnte festlegen, wie die Daten wiedergegeben. 140 00:05:53,790 --> 00:05:58,120 Sie könnten in das Menü Format zu gehen, und Sie können angeben, zeigen diese, wie Dollarzeichen, 141 00:05:58,120 --> 00:05:59,900 zeigen dies wie eine Fließkommazahl. 142 00:05:59,900 --> 00:06:01,990 >> Also, es ist vom Grundprinzip her dass das, was wir tun wollen, 143 00:06:01,990 --> 00:06:04,740 aber das ist eigentlich los, um zu erzwingen die Daten zu einem bestimmten Typ sein. 144 00:06:04,740 --> 00:06:07,750 Nun, auch wenn ich vor einem Augenblick sagte, es gibt nur wenige Datentypen, 145 00:06:07,750 --> 00:06:11,120 es ist eigentlich ein ganze Menge, und sie sind 146 00:06:11,120 --> 00:06:12,910 in unterschiedlichem Ausmaß an Spezifität. 147 00:06:12,910 --> 00:06:14,970 Und so nebenbei, du können sogar ausgefallene Dinge 148 00:06:14,970 --> 00:06:17,520 wie Lagergeometrien innerhalb einer Datenbank. 149 00:06:17,520 --> 00:06:19,250 Sie können Dinge zu speichern wie GPS-Koordinaten 150 00:06:19,250 --> 00:06:22,420 und tatsächlich finden, mathematisch, Punkte, die in der Nähe von anderen sind. 151 00:06:22,420 --> 00:06:24,128 Aber wir sind zu gehen Bewahren Sie diese super einfach 152 00:06:24,128 --> 00:06:26,800 und gehen bis zu hier, alle die sogenannten String-Typen. 153 00:06:26,800 --> 00:06:29,240 >> So, hier ist eine Liste von ein ganze Reihe von Optionen. 154 00:06:29,240 --> 00:06:32,740 CHAR, VARCHAR, TINYTEXT, MEDIUM, LONG. 155 00:06:32,740 --> 00:06:34,110 Und es ist irgendwie überwältigend. 156 00:06:34,110 --> 00:06:37,610 Und leider etwas paradoxerweise zu C, 157 00:06:37,610 --> 00:06:40,120 a CHAR ist nicht wirklich ein CHAR. 158 00:06:40,120 --> 00:06:44,170 Wenn Sie in einer Datenbank angeben dass Ihre Datentyp CHAR, 159 00:06:44,170 --> 00:06:47,390 das bedeutet, dass ja, es ist ein CHAR, aber es ist ein oder mehrere Zeichen. 160 00:06:47,390 --> 00:06:49,630 Und Sie müssen angeben, wie viele Zeichen Sie wollen. 161 00:06:49,630 --> 00:06:51,636 Also, was ist ein typisches Länge für einen Benutzernamen vergessen? 162 00:06:51,636 --> 00:06:52,760 Gibt es eine Grenze in der Regel? 163 00:06:52,760 --> 00:06:53,920 >> ZIELGRUPPE: [unverständlich] 164 00:06:53,920 --> 00:06:55,050 >> DAVID MALAN: 16 vielleicht? 165 00:06:55,050 --> 00:06:55,990 So ähnlich. 166 00:06:55,990 --> 00:06:57,948 Wissen Sie, zurück in die Tag, benutzte es, um acht sein. 167 00:06:57,948 --> 00:07:00,289 Manchmal ist es 16, die manchmal es ist noch mehr als das. 168 00:07:00,289 --> 00:07:02,080 Und so bedeutet dies nicht, bedeuten, geben Sie mir eine CHAR. 169 00:07:02,080 --> 00:07:04,730 Das bedeutet, ich muss angeben, die Länge des Feldes, 170 00:07:04,730 --> 00:07:07,402 und jetzt habe ich könnte so etwas wie 16 sagen. 171 00:07:07,402 --> 00:07:08,610 Und es gibt einen Trade-off hier. 172 00:07:08,610 --> 00:07:11,360 So werden wir gleich sehen dass dies bedeutet, eins, 173 00:07:11,360 --> 00:07:14,620 jeden Benutzernamen hat zu 16 Zeichen lang sein. 174 00:07:14,620 --> 00:07:18,720 Aber warten Sie eine Minute, M-A-L-A-N. Wenn das ist, mein Benutzerkonto und ich bin nur mit fünf, 175 00:07:18,720 --> 00:07:23,070 was würden Sie vorschlagen, dass die Datenbank für die anderen 11 Zeichen zu tun, dass 176 00:07:23,070 --> 00:07:24,471 Ich habe Platz für reserviert? 177 00:07:24,471 --> 00:07:25,220 Was würden Sie tun? 178 00:07:25,220 --> 00:07:26,480 >> ZIELGRUPPE: [unverständlich] 179 00:07:26,480 --> 00:07:27,160 >> DAVID MALAN: Ja, nur sie alle null. 180 00:07:27,160 --> 00:07:28,290 Machen Sie sie Plätze. 181 00:07:28,290 --> 00:07:30,816 Aber wahrscheinlich null, so dass eine Viele Backslash Nullen. 182 00:07:30,816 --> 00:07:33,190 Also, auf der einen Seite haben wir nun dafür gesorgt, dass mein Benutzername 183 00:07:33,190 --> 00:07:34,780 können nicht mehr als 16 Zeichen sein. 184 00:07:34,780 --> 00:07:37,590 Und die Kehrseite davon ist, dass, wenn ich hatte einen wirklich langen Namen 185 00:07:37,590 --> 00:07:39,940 oder wollte eine wirklich lange Benutzername, wie einige von euch 186 00:07:39,940 --> 00:07:44,840 Jungs könnten in dieser Ausbildung oder bei Yale.edu, können Sie keine haben. 187 00:07:44,840 --> 00:07:47,177 Und so in der Tat, wenn Sie schon immer für eine Website registriert 188 00:07:47,177 --> 00:07:49,385 und man sich sagen, schrie erhalten Ihr Passwort ist zu lang 189 00:07:49,385 --> 00:07:52,710 oder Ihren Benutzernamen zu lang ist, ist es weil ein Programmierer, wenn 190 00:07:52,710 --> 00:07:55,500 Konfigurieren seine Datenbank, dass entschieden wird dieses Feld 191 00:07:55,500 --> 00:07:57,150 werden nicht mehr als diese Länge. 192 00:07:57,150 --> 00:08:00,580 >> Na gut, so was ist, wenn wir gehen zu nennen? 193 00:08:00,580 --> 00:08:05,240 Wie lange sollte ein Namen typische menschliche sein? 194 00:08:05,240 --> 00:08:07,492 Wie viele Zeichen, 16? 195 00:08:07,492 --> 00:08:09,450 Ich vermute, wir könnten jemand in diesem Raum finden 196 00:08:09,450 --> 00:08:13,210 wo durch seine oder ihre erste Plus letzten Name ist länger als 16 Zeichen. 197 00:08:13,210 --> 00:08:14,850 Also, was ist besser als das, 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 Größer? 201 00:08:20,350 --> 00:08:20,980 30? 202 00:08:20,980 --> 00:08:21,855 >> ZIELGRUPPE: [unverständlich] 203 00:08:21,855 --> 00:08:23,700 DAVID MALAN: 5.000, oh mein Gott. 204 00:08:23,700 --> 00:08:26,309 Also, das ist wahrscheinlich eine anständige obere Grenze, sagen wir. 205 00:08:26,309 --> 00:08:28,350 Und hier sind wir Art haben ein Urteil Anruf. 206 00:08:28,350 --> 00:08:30,400 Wie, es gibt keine richtige Antwort hier. 207 00:08:30,400 --> 00:08:32,740 Unendlich ist nicht ganz möglich, weil wir irgendwann 208 00:08:32,740 --> 00:08:34,781 werde have-- wir sind gehen, um über genügend Arbeitsspeicher ausgeführt. 209 00:08:34,781 --> 00:08:36,909 Also müssen wir eine machen Urteil Anruf zu einem bestimmten Zeitpunkt. 210 00:08:36,909 --> 00:08:41,010 >> Sehr häufig wäre, zum Beispiel, um use-- und lassen Sie mich CHAR hier angeben 211 00:08:41,010 --> 00:08:46,050 wie before-- 255 war buchstäblich die Obergrenze für diese Datenbanksoftware 212 00:08:46,050 --> 00:08:46,700 vor Jahren. 213 00:08:46,700 --> 00:08:48,575 Und so viele Menschen würde einfach sagen, in Ordnung. 214 00:08:48,575 --> 00:08:49,420 255 ist die Grenze. 215 00:08:49,420 --> 00:08:50,620 Lass uns einfach das Maximum zu verwenden. 216 00:08:50,620 --> 00:08:51,870 Und das ist ziemlich lächerlich. 217 00:08:51,870 --> 00:08:55,060 Wie, wenn Sie die Eingabe jemandes Name für 200 plus Zeichen, 218 00:08:55,060 --> 00:08:56,140 dass ein wenig lächerlich. 219 00:08:56,140 --> 00:08:59,624 >> Aber denken Sie daran, dass ASCII nicht das einzige System für die Charaktere. 220 00:08:59,624 --> 00:09:01,540 Und so, insbesondere in einem Viele asiatische Sprachen 221 00:09:01,540 --> 00:09:04,248 wo es Zeichen können wir nicht Ausdruck auf Tastaturen wie meine US 222 00:09:04,248 --> 00:09:08,209 Tastatur, einige Zeichen tatsächlich nehmen 16 Bit anstelle von acht Bits. 223 00:09:08,209 --> 00:09:10,250 Und so, das eigentlich ist gar nicht so unvernünftig 224 00:09:10,250 --> 00:09:12,250 dass wir mehr Raum, wenn wir zu passen wollen 225 00:09:12,250 --> 00:09:16,252 größeres Zeichen als die sehr US centric, die wir haben, neigten dazu, zu diskutieren. 226 00:09:16,252 --> 00:09:17,460 So benötigen wir einige obere Schranke. 227 00:09:17,460 --> 00:09:21,470 Ich weiß nicht, was das beste ist, aber 255 ist im Allgemeinen ein allgemeines. 228 00:09:21,470 --> 00:09:22,700 25 fühlt gering. 229 00:09:22,700 --> 00:09:23,857 16, 32 fühlen niedrig. 230 00:09:23,857 --> 00:09:25,690 Ich würde auf der Seite irren der etwas höher. 231 00:09:25,690 --> 00:09:27,330 Aber es gibt einen Trade-off, wie immer. 232 00:09:27,330 --> 00:09:31,902 Was ist die vielleicht offensichtlich Trade-off zu reservieren 255 Zeichen 233 00:09:31,902 --> 00:09:33,360 für jeden Namen in meiner Datenbank? 234 00:09:33,360 --> 00:09:34,230 >> ZIELGRUPPE: [unverständlich] 235 00:09:34,230 --> 00:09:34,510 >> DAVID MALAN: Was ist das? 236 00:09:34,510 --> 00:09:35,430 >> ZIELGRUPPE: [unverständlich] 237 00:09:35,430 --> 00:09:37,138 >> DAVID MALAN: Es ist ein Menge Speicher, oder? 238 00:09:37,138 --> 00:09:42,280 M-A-L-A-N. Ich habe gerade vergeudet 250 Zeichen, nur um meinen Namen zu speichern 239 00:09:42,280 --> 00:09:46,000 defensiv, nur für den Fall jemand in der Klasse hat einen wirklich langen Namen. 240 00:09:46,000 --> 00:09:47,940 Das scheint wie eine unangemessene Kompromiss. 241 00:09:47,940 --> 00:09:52,040 >> So stellt sich heraus, dass SQL, Diese Datenbanksprache, 242 00:09:52,040 --> 00:09:55,480 tatsächlich unterstützt etwas genannt VARCHAR oder CHAR Variable. 243 00:09:55,480 --> 00:09:59,390 Und das ist irgendwie schön, dass diese Damit können Sie nicht ein fester um anzugeben, 244 00:09:59,390 --> 00:10:01,900 Breite, sondern vielmehr eine variable Breite. 245 00:10:01,900 --> 00:10:05,060 Und insbesondere ein maximale Breite des Feldes. 246 00:10:05,060 --> 00:10:08,901 So bedeutet dies, dass ein Name nicht mehr als 250 Zeichen, 247 00:10:08,901 --> 00:10:10,150 aber es kann sicherlich weniger sein. 248 00:10:10,150 --> 00:10:11,733 Und die Datenbank wird, intelligent zu sein. 249 00:10:11,733 --> 00:10:14,860 Wenn Sie in der M-A-L-A-N setzen Sie, es nur geht, um fünf zu verwenden, 250 00:10:14,860 --> 00:10:18,120 vielleicht sechs Bytes für wie eine Hinter Null-Zeichen, 251 00:10:18,120 --> 00:10:23,330 und nicht zu verbringen eine zusätzliche 249 oder 250 Byte unnötig. 252 00:10:23,330 --> 00:10:27,380 >> Also, erscheint dies wie ich sollte haben mit dieser Geschichte begann. 253 00:10:27,380 --> 00:10:29,140 Aber es gibt immer ein Kompromiss. 254 00:10:29,140 --> 00:10:33,024 Also, auf der einen Seite, ein Benutzername Ich habe angegeben, hart an der 16 kodiert werden, 255 00:10:33,024 --> 00:10:34,940 und vielleicht war das nicht die richtige Entscheidung, vielleicht ist es 256 00:10:34,940 --> 00:10:40,040 ist, aber warum nicht verwenden VARCHARs für alles? 257 00:10:40,040 --> 00:10:42,020 >> Es besteht aus einem Grund. 258 00:10:42,020 --> 00:10:46,200 Warum nicht VARCHARs für jedes Feld deren Länge Sie nicht im Voraus wissen, 259 00:10:46,200 --> 00:10:48,180 wenn es scheint eine große Sache sein, oder? 260 00:10:48,180 --> 00:10:50,482 Verwenden Sie nur so viel Platz wie Sie brauchen, um diese Grenze? 261 00:10:50,482 --> 00:10:51,271 >> ZIELGRUPPE: langsamer. 262 00:10:51,271 --> 00:10:52,146 DAVID MALAN: Speller? 263 00:10:52,146 --> 00:10:53,120 ZIELGRUPPE: Macht es langsamer? 264 00:10:53,120 --> 00:10:53,970 DAVID MALAN: Oh, es ist langsamer. 265 00:10:53,970 --> 00:10:55,720 Gut, das ist fast immer die Antwort, ehrlich gesagt. 266 00:10:55,720 --> 00:10:56,520 Wie, was ist der Kompromiss? 267 00:10:56,520 --> 00:10:58,570 Es kostet entweder mehr Platz oder es kostet mehr Zeit. 268 00:10:58,570 --> 00:11:00,111 So, in diesem Fall könnte es langsamer. 269 00:11:00,111 --> 00:11:00,920 Warum? 270 00:11:00,920 --> 00:11:05,830 >> ZIELGRUPPE: [unverständlich] Bestimmung [unverständlich]. 271 00:11:05,830 --> 00:11:06,640 >> DAVID MALAN: Good. 272 00:11:06,640 --> 00:11:09,670 So könnten Sie von selbst wieder zu PSED5, spielen mit Ihrem Ansatz 273 00:11:09,670 --> 00:11:12,750 in das Wörterbuch, wenn Sie zu haben Speicher zuweisen dynamisch oder zu halten 274 00:11:12,750 --> 00:11:14,630 Aufwachsen einer Puffer, daß kann tatsächlich langsam sein. 275 00:11:14,630 --> 00:11:16,963 Wenn Sie malloc verlangen unter der Haube und vielleicht 276 00:11:16,963 --> 00:11:19,610 das ist, was MySQL tut, so sicher, dass der Fall sein könnte. 277 00:11:19,610 --> 00:11:22,430 Und wenn Sie so denken zurück zu PSet-- oder sogar 278 00:11:22,430 --> 00:11:26,340 zwei Wochen, als wir Dinge wie binäre Suche oder sogar lineare Suche, 279 00:11:26,340 --> 00:11:30,690 eines der schönen Dinge über jedes Wort, in einer Datenbank oder einem jedem Wort in einer Spalte 280 00:11:30,690 --> 00:11:33,690 wobei genau die gleiche Länge, auch wenn eine ganze Reihe von diesen Zeichen 281 00:11:33,690 --> 00:11:37,390 leer sind, ist, dass Sie verwenden können, Direktzugriff auf Ihre Daten, oder? 282 00:11:37,390 --> 00:11:40,310 >> Wenn Sie wissen, dass jedes Wort ist 16 Zeichen entfernt, 283 00:11:40,310 --> 00:11:46,460 Sie können die Zeigerarithmetik verwenden, so zu zu sprechen, und gehen Sie zu uns, 16, 32, 48, 64, 284 00:11:46,460 --> 00:11:49,589 und Sie nur springen sofort mit arithmetischen 285 00:11:49,589 --> 00:11:51,130 einem der Wörter in Ihrer Datenbank. 286 00:11:51,130 --> 00:11:54,280 Während, wenn es ist ein VARCHAR, was tun Sie stattdessen tun? 287 00:11:54,280 --> 00:11:55,960 >> [Telefon klingelt] 288 00:11:55,960 --> 00:11:58,680 >> Wenn es ein VARCHAR, die Sie nicht verwenden können, mit wahlfreiem Zugriff. 289 00:11:58,680 --> 00:12:01,341 Was Sie haben, zu suchen oder zu tun? 290 00:12:01,341 --> 00:12:01,840 Ja? 291 00:12:01,840 --> 00:12:03,240 >> ZIELGRUPPE: [unverständlich] 292 00:12:03,240 --> 00:12:04,310 >> DAVID MALAN: Schau durch die whole-- Spuren 293 00:12:04,310 --> 00:12:06,518 durch die ganze Liste Suche nach was, wahrscheinlich? 294 00:12:06,518 --> 00:12:08,356 Welche besonderen Wert? 295 00:12:08,356 --> 00:12:09,230 ZIELGRUPPE: [unverständlich] 296 00:12:09,230 --> 00:12:11,105 DAVID MALAN: Suchen für die Nullabschluss 297 00:12:11,105 --> 00:12:13,637 daß die Trennung von Wörtern abzugrenzen. 298 00:12:13,637 --> 00:12:15,720 Also noch einmal, ein Kompromiss, und es gibt keine richtige Antwort. 299 00:12:15,720 --> 00:12:18,380 Aber hier, insbesondere Wenn Ihre Benutzer kennen zu viele sein 300 00:12:18,380 --> 00:12:21,700 und Ihre Last auf den Servern, die Anzahl der Leute, die es hoch wird, 301 00:12:21,700 --> 00:12:23,650 Diese sind eigentlich nicht trivialen Entscheidungen. 302 00:12:23,650 --> 00:12:26,640 So können wir diese als diese zu verlassen, aber Lassen Sie uns nach unten scrollen nach rechts 303 00:12:26,640 --> 00:12:27,332 Hier. 304 00:12:27,332 --> 00:12:30,290 Nun, es gibt ein paar Säulen wo wir ein Urteil Anruf. 305 00:12:30,290 --> 00:12:35,170 Ist es sinnvoll, um einen Benutzer erlauben Name, Benutzername eines Benutzers oder ein Benutzer- 306 00:12:35,170 --> 00:12:36,370 Name, um null sein? 307 00:12:36,370 --> 00:12:37,610 Das heißt, nur leer. 308 00:12:37,610 --> 00:12:40,360 Fühlt sich ein wenig unsinnig, also bin ich nicht gehen, um die Kisten zu überprüfen. 309 00:12:40,360 --> 00:12:42,670 Aber es stellt sich heraus, in ein Datenbank, können Sie sagen, 310 00:12:42,670 --> 00:12:44,620 jemand kann wahlweise diesen Wert. 311 00:12:44,620 --> 00:12:47,180 Diese Spalte muss nicht tatsächlich dort zu sein. 312 00:12:47,180 --> 00:12:48,570 >> Jetzt gibt es diese Dropdown-Menü. 313 00:12:48,570 --> 00:12:50,810 Und beachten Sie, ich bin immer noch da die erste Zeile, 314 00:12:50,810 --> 00:12:52,520 so bin ich über Benutzernamen sprechen jetzt. 315 00:12:52,520 --> 00:12:56,290 Und es stellt sich heraus, dass eine Datenbank, im Gegensatz zu einer einfachen bloßen Tabellenkalkulation, 316 00:12:56,290 --> 00:12:58,520 bietet leistungsstarke Funktionen aufgerufen Indizes. 317 00:12:58,520 --> 00:13:02,600 Und ein Index ist eine Möglichkeit zu sagen, die Datenbank im Voraus, dass ich die menschliche 318 00:13:02,600 --> 00:13:03,900 bin klüger als Du. 319 00:13:03,900 --> 00:13:10,430 >> Ich weiß, welche Arten von Anfragen, wählen oder einfügen oder löschen oder zu aktualisieren, 320 00:13:10,430 --> 00:13:13,182 dass mein Code wird am Ende tut dieser Datenbank. 321 00:13:13,182 --> 00:13:14,390 Ich möchte eine Menge Daten zu lesen. 322 00:13:14,390 --> 00:13:15,681 Ich möchte eine Menge Daten einfügen. 323 00:13:15,681 --> 00:13:17,530 Ich möchte ständig löschen Sie eine Menge Daten. 324 00:13:17,530 --> 00:13:21,520 Wenn ich weiß, dass ich werde sein Zugriff auf ein Feld, wie Benutzername viel, 325 00:13:21,520 --> 00:13:24,770 Ich kann sagen, die präventiv Datenbank, ich weiß mehr als du, 326 00:13:24,770 --> 00:13:29,220 und ich möchte Dekret, Sie sollten Index dieses Feld. 327 00:13:29,220 --> 00:13:33,200 Wo die Indizierung ein Feld oder eine Spalte bedeutet, dass die Datenbank im Voraus 328 00:13:33,200 --> 00:13:37,040 sollten einige Ideen aus, wie zu leihen, Woche vier und fünf und sechs aus CS50 329 00:13:37,040 --> 00:13:39,240 und tatsächlich aufzubauen so etwas wie eine binäre Suche 330 00:13:39,240 --> 00:13:41,560 Baum oder etwas in der Regel ein B-Baum genannt 331 00:13:41,560 --> 00:13:43,410 dass Sie lernen möchten in einer Klasse wie cs124 332 00:13:43,410 --> 00:13:46,710 in Harvard, eine Algorithmen-Klasse, oder eine beliebige Anzahl von anderen Orten. 333 00:13:46,710 --> 00:13:49,570 >> Die Datenbank und die Smart- Menschen, die es implementiert 334 00:13:49,570 --> 00:13:53,880 wird herauszufinden, wie man speichern dass Tabelle mit Informationen 335 00:13:53,880 --> 00:13:57,061 im Speicher, so dass Suchanfragen und anderen Operationen sind super schnell. 336 00:13:57,061 --> 00:13:58,060 Sie müssen nicht, es zu tun. 337 00:13:58,060 --> 00:14:00,640 Sie müssen nicht zu implementieren lineare Suche oder binäre Suche 338 00:14:00,640 --> 00:14:03,300 oder Mergesort oder Auswahl Sortieren, irgendwelche von dem. 339 00:14:03,300 --> 00:14:06,590 Die Datenbank bedeutet es für Sie, wenn Sie sagen, es präventiv zu indizieren dieses Feld. 340 00:14:06,590 --> 00:14:09,100 >> Und auch Sie sehen können, gibt es einige andere Eigenschaften 341 00:14:09,100 --> 00:14:11,010 können wir sagen, dass die Datenbank zu erzwingen. 342 00:14:11,010 --> 00:14:16,431 Was könnte es bedeuten, wenn ich Einzigartige wählen aus diesem Menü, nur intuitiv? 343 00:14:16,431 --> 00:14:16,930 Ja? 344 00:14:16,930 --> 00:14:17,889 >> ZIELGRUPPE: [unverständlich] 345 00:14:17,889 --> 00:14:19,930 DAVID MALAN: Ja, das Benutzername muss eindeutig sein. 346 00:14:19,930 --> 00:14:23,330 Ist das eine gute Sache oder eine schlechte Sache für eine Datenbank, für eine Website mit Benutzer? 347 00:14:23,330 --> 00:14:24,965 Benutzernamen sollten eindeutig sein? 348 00:14:24,965 --> 00:14:25,880 Ja, wahrscheinlich. 349 00:14:25,880 --> 00:14:27,800 Wenn es das ist, was die Feld verwenden wir melden Sie sich an, 350 00:14:27,800 --> 00:14:31,867 Sie nicht wirklich um Menschen mit möchten das gleiche Gefühl oder die gleiche Benutzernamen ein. 351 00:14:31,867 --> 00:14:33,700 So können wir die haben, Datenbank zu erzwingen, dass so 352 00:14:33,700 --> 00:14:37,880 dass jetzt in meinem PHP-Code oder jeder Sprache, Ich habe nicht zu, zum Beispiel, zu überprüfen 353 00:14:37,880 --> 00:14:41,490 unbedingt erledigt diese Benutzernamen vorhanden sein, bevor ich jemand zu registrieren? 354 00:14:41,490 --> 00:14:46,690 Die Datenbank wird nicht zwei Personen mit dem Namen lassen David oder Malans registrieren in diesem Fall. 355 00:14:46,690 --> 00:14:50,030 >> Und nebenbei, obwohl dies Menü können Sie nur eine auswählen, 356 00:14:50,030 --> 00:14:54,550 ein eindeutiger Index ist eine, die ist für superschnelle Performance indexiert, 357 00:14:54,550 --> 00:14:56,100 aber es erzwingt auch Einzigartigkeit. 358 00:14:56,100 --> 00:14:58,850 Und wir werden zurückkommen, was die beiden anderen bedeuten, in nur einem Augenblick. 359 00:14:58,850 --> 00:15:00,930 Inzwischen, wenn ich gehe zu meine zweite Reihe, die 360 00:15:00,930 --> 00:15:06,230 ist der Name des Benutzers, muss ich angeben, dass der Name sollte eindeutig sein? 361 00:15:06,230 --> 00:15:09,550 Nein, denn man konnte sicher have-- es gibt keine zwei David 362 00:15:09,550 --> 00:15:11,050 Malans in diesem Raum, wahrscheinlich. 363 00:15:11,050 --> 00:15:14,290 Aber wenn wir einen anderen Namen wählen, wir könnten sicherlich Kollisionen. 364 00:15:14,290 --> 00:15:16,130 >> Denken Sie zurück an Hash-Tabellen und dergleichen. 365 00:15:16,130 --> 00:15:18,604 Also, wir wollen sicher nicht um das Namensfeld einzigartig. 366 00:15:18,604 --> 00:15:21,270 Also, wir sind gerade dabei, zu verlassen dass, Bindestrich, Bindestrich, Bindestrich, nichts. 367 00:15:21,270 --> 00:15:22,660 Und ich werde zu verlassen alles andere allein. 368 00:15:22,660 --> 00:15:25,035 Tatsächlich sind die meisten dieser Felder wir müssen nicht zu kümmern. 369 00:15:25,035 --> 00:15:27,830 Und wenn ich bereit bin, um diese zu retten, Wenn das Internet zusammenarbeitet, 370 00:15:27,830 --> 00:15:35,032 Ich klicken Sie auf Speichern, und sehr, sehr, sehr langsam wird die Datenbank gespeichert zu werden. 371 00:15:35,032 --> 00:15:37,240 Und jetzt bin ich wieder auf diese Schnittstelle, die zugegebenermaßen 372 00:15:37,240 --> 00:15:38,680 ist überwältigend auf den ersten Blick. 373 00:15:38,680 --> 00:15:42,450 Aber alles, was ich zu tun ist, klicken Sie auf den Wort Benutzer oben links. 374 00:15:42,450 --> 00:15:47,630 Ich werde hier zu gehen, klicken Sie auf Benutzer, und standardmäßig, es 375 00:15:47,630 --> 00:15:50,180 hat einige SQL ausgeführt wird, aber mehr dazu in einem Moment. 376 00:15:50,180 --> 00:15:52,654 Hier ist nur eine Zusammenfassung dessen, was ich getan habe. 377 00:15:52,654 --> 00:15:55,320 Und sich keine Sorgen machen, dass Sie zu sehen Die Erwähnung von lateinischen und schwedischen hier. 378 00:15:55,320 --> 00:16:00,490 Das sind nur die Standard- Einstellungen, weil MySQL ursprünglich, 379 00:16:00,490 --> 00:16:04,000 oder PHP MyAdmin, einer der beiden passiert von einigen schwedischen Volkes geschrieben werden. 380 00:16:04,000 --> 00:16:06,100 Aber es ist unerheblich, in unserem Fall hier. 381 00:16:06,100 --> 00:16:08,280 >> Na gut, also warum ist das alles interessant? 382 00:16:08,280 --> 00:16:13,050 Es stellt sich heraus, kann ich Daten einfügen in eine Datenbank durch das Schreiben von Code. 383 00:16:13,050 --> 00:16:15,940 Und ich voran gehen und in meine Datei hier, ich bin 384 00:16:15,940 --> 00:16:19,000 werde weitermachen und so tun, wie dies wird zu dieser Datenbank, die verdrahtet 385 00:16:19,000 --> 00:16:23,040 ist es zur Zeit nicht, aber es wird sein, wenn wir bekommen, um Problem stellte sieben. 386 00:16:23,040 --> 00:16:25,640 Und ich werde weitermachen und führen Sie eine Funktion namens Abfrage, 387 00:16:25,640 --> 00:16:28,730 welche wir Ihnen bei der Problem geben set sieben Distributionscode, dass 388 00:16:28,730 --> 00:16:31,490 nimmt mindestens ein Argument, Das ist nur eine Zeichenfolge. 389 00:16:31,490 --> 00:16:33,460 Eine Zeichenfolge von SQL-Code. 390 00:16:33,460 --> 00:16:36,700 Also, um zu lernen, wie du bist Schreiben Structured Query Language. 391 00:16:36,700 --> 00:16:41,270 >> Wenn ich eine neue Zeile in meinem einfügen Datenbank, weil jemand eingereicht 392 00:16:41,270 --> 00:16:47,600 eine Form, meinen Code, würde ich buchstäblich Schreiben INSERT INTO Benutzer die folgende 393 00:16:47,600 --> 00:16:52,800 Felder: Benutzername, Komma, Namen, die Werte, 394 00:16:52,800 --> 00:16:57,480 und jetzt muss ich einfügen so etwas wie Malan und Zitat, 395 00:16:57,480 --> 00:17:01,490 unquote 'David Malan.' Und jetzt auch für diejenigen, die nicht mit SQL, 396 00:17:01,490 --> 00:17:07,830 warum bin ich mit einfachen Anführungszeichen Innere dieser grünen Schnur? 397 00:17:07,830 --> 00:17:10,790 398 00:17:10,790 --> 00:17:13,040 Was könnte der Grund hier zu sein? 399 00:17:13,040 --> 00:17:14,609 >> Beachten Sie, Ich bin Vermischung zwei Sprachen. 400 00:17:14,609 --> 00:17:18,099 Abfrage ist eine PHP-Funktion, aber es dauert ein Argument. 401 00:17:18,099 --> 00:17:21,740 Und das Argument, muss sich sein in einer anderen Sprache geschrieben genannt 402 00:17:21,740 --> 00:17:23,500 SQL, Structured Query Language. 403 00:17:23,500 --> 00:17:27,940 Also, alles, was ich habe gerade hier hervorgehoben 404 00:17:27,940 --> 00:17:30,380 ist dies Sprache namens SQL. 405 00:17:30,380 --> 00:17:36,290 Also, was ist mit den einfachen Anführungszeichen, nur als eine schnelle Plausibilitätsprüfung? 406 00:17:36,290 --> 00:17:37,324 Gehen Sie geradeaus. 407 00:17:37,324 --> 00:17:37,990 Sie sind Zeichenfolgen. 408 00:17:37,990 --> 00:17:41,590 Also, zitat, unquote Malan und Zitat, unquote David Malan sind Strings. 409 00:17:41,590 --> 00:17:45,210 Und nur daran denke intuitiv jetzt, zu wissen, was Sie über C und PHP wissen, 410 00:17:45,210 --> 00:17:50,220 warum habe ich nicht tun, was ich in der Regel gebrauchte doppelte Anführungszeichen für Strings? 411 00:17:50,220 --> 00:17:52,310 Warum habe ich nicht das tun wollen? 412 00:17:52,310 --> 00:17:52,810 Ja? 413 00:17:52,810 --> 00:17:53,685 >> ZIELGRUPPE: [unverständlich] 414 00:17:53,685 --> 00:17:56,695 415 00:17:56,695 --> 00:17:57,570 DAVID MALAN: Genau. 416 00:17:57,570 --> 00:17:59,653 Denn ich bin schon mit Anführungszeichen auf dem Weg 417 00:17:59,653 --> 00:18:01,929 außerhalb des Arguments mit der PHP-Funktion, 418 00:18:01,929 --> 00:18:03,470 Ich würde nur verwirren den Interpreter. 419 00:18:03,470 --> 00:18:04,860 Es wird nicht einfach, passt das zusammen? 420 00:18:04,860 --> 00:18:05,735 Passt das zusammen? 421 00:18:05,735 --> 00:18:06,810 Passt das zusammen? 422 00:18:06,810 --> 00:18:08,070 So wechseln I statt. 423 00:18:08,070 --> 00:18:11,784 >> Oder ich könnte etwas tun, umgekehrten Schrägstrich oder Backslash Zitat Zitat. 424 00:18:11,784 --> 00:18:14,200 Ehrlich gesagt, beginnt, nur um werden sehr lesbar und hässlich. 425 00:18:14,200 --> 00:18:16,790 Aber das zu erreichen wäre das gleiche Ergebnis auch. 426 00:18:16,790 --> 00:18:19,760 >> Also, wenn ich dies ausführen Abfrage jetzt, mal sehen, was passiert. 427 00:18:19,760 --> 00:18:22,740 Ich werde ab und zu recht voran gehen als führen Sie den PHP-Code, der 428 00:18:22,740 --> 00:18:24,610 ist, wo Sie spielen in Problem stellte sieben, 429 00:18:24,610 --> 00:18:27,200 Ich werde stattdessen PHP MyAdmin gehen. 430 00:18:27,200 --> 00:18:29,770 Und ich manuell gehen auf der Registerkarte SQL zu gehen, 431 00:18:29,770 --> 00:18:31,580 und lassen Sie mich Zoom auf die Schnittstelle. 432 00:18:31,580 --> 00:18:34,007 Und ich werde fügen das, was ich gerade eingegeben haben. 433 00:18:34,007 --> 00:18:36,090 Und die Farbcodierung hat verändert ein wenig jetzt, 434 00:18:36,090 --> 00:18:38,750 nur weil die Programmformate Dinge ein wenig anders. 435 00:18:38,750 --> 00:18:41,960 Aber feststellen, dass alles, was ich getan habe, Ich habe gesagt, ist, legen Sie in den Benutzer. 436 00:18:41,960 --> 00:18:45,790 Ich habe festgelegt, so wird in einem Komma getrennt in Klammern Liste die beiden 437 00:18:45,790 --> 00:18:48,850 Felder, die möchte ich einfügen, und dann habe ich wörtlich gesagt Werte 438 00:18:48,850 --> 00:18:51,510 gefolgt von einer weiteren paren, und dann werden die zwei Werte 439 00:18:51,510 --> 00:18:53,520 Ich möchte Plug-in, und jetzt für eine gute Maßnahme, 440 00:18:53,520 --> 00:18:55,010 Ich werde ein Semikolon am Ende gesetzt. 441 00:18:55,010 --> 00:18:56,570 So ist dies nicht C. Dies ist nicht PHP. 442 00:18:56,570 --> 00:18:59,970 Dies ist nun SQL, und ich bin es einfügen in diese Web-basierte Schnittstelle, die ist 443 00:18:59,970 --> 00:19:02,710 gerade dabei, mich lassen, sobald ich auf Go, 444 00:19:02,710 --> 00:19:08,060 Diese Abfrage ausführen in der Datenbank Innere CS50 IDE ausgeführt. 445 00:19:08,060 --> 00:19:09,470 >> Also das ist gut. 446 00:19:09,470 --> 00:19:12,520 Beachten Sie, dass der einen Reihe eingesetzt ist, ging super schnell, 447 00:19:12,520 --> 00:19:15,190 0,0054 Sekunden, um die Daten einzufügen. 448 00:19:15,190 --> 00:19:16,610 Also, das klingt ziemlich gesund. 449 00:19:16,610 --> 00:19:19,350 Es formatiert meine Abfrage für mich hier, nur um es zu sehen, 450 00:19:19,350 --> 00:19:21,730 in Art farbcodierte Version. 451 00:19:21,730 --> 00:19:24,540 Aber jetzt, wenn ich klicken Durchsuchen, bemerken, dass selbst 452 00:19:24,540 --> 00:19:29,070 aber es gibt eine Menge von Unordnung auf der Bildschirm hat meinem Tisch nun zwei Reihen. 453 00:19:29,070 --> 00:19:30,700 >> Also, lassen Sie mich gehen Sie vor und das andere tun. 454 00:19:30,700 --> 00:19:33,760 Stattdessen lassen Sie mich gehen Sie zur Registerkarte SQL erneut. 455 00:19:33,760 --> 00:19:40,723 Und dieses Mal werde ich etwas einfügen Rob und sein Name wird Rob Bowden betragen. 456 00:19:40,723 --> 00:19:42,330 Bowden. 457 00:19:42,330 --> 00:19:44,040 Lassen Sie uns auf Speichern. 458 00:19:44,040 --> 00:19:46,140 Hoppla, vielmehr gehen. 459 00:19:46,140 --> 00:19:48,890 >> Klicken Sie auf Durchsuchen wieder, und Jetzt merke ich zwei Reihen zu haben. 460 00:19:48,890 --> 00:19:52,390 Also, das ist nur eine Möglichkeit, komplexere Weg der Öffnung Google Spreadsheets 461 00:19:52,390 --> 00:19:54,010 und nur die Eingabe eine Zeile in eine Spalte. 462 00:19:54,010 --> 00:19:57,070 Aber was ist Schlüssel ist, dass wir haben jetzt die Syntax 463 00:19:57,070 --> 00:20:00,220 , mit denen, um Code zu schreiben, so dass Letztendlich könnten wir tatsächlich 464 00:20:00,220 --> 00:20:01,790 Tun Sie etwas, und dies. 465 00:20:01,790 --> 00:20:05,380 Daran erinnern, dass PHP unterstützt Super globalen Variablen. 466 00:20:05,380 --> 00:20:08,415 >> Was ist im Inneren der Dollar- unterzeichnen Strich in PHP GET? 467 00:20:08,415 --> 00:20:10,290 Wir haben einen Blick auf eines oder zwei einfache Beispiele. 468 00:20:10,290 --> 00:20:15,640 Und in PSet6, erinnern Sie hallo haben dot PHP, die diese Variable verwendet. 469 00:20:15,640 --> 00:20:17,870 Was geht da drin? 470 00:20:17,870 --> 00:20:21,015 Oder was ist es? 471 00:20:21,015 --> 00:20:22,522 Ein wenig lauter. 472 00:20:22,522 --> 00:20:23,790 >> ZIELGRUPPE: [unverständlich] 473 00:20:23,790 --> 00:20:25,030 >> DAVID MALAN: Es ist ein Schnee Samen des Array, das 474 00:20:25,030 --> 00:20:27,714 ist nur eine andere Art zu sagen ein Array, das Schlüsselwertpaare hat. 475 00:20:27,714 --> 00:20:28,880 Und die Tasten nicht numerisch sind. 476 00:20:28,880 --> 00:20:30,420 Sie sind Wörter oder Zeichenfolgen. 477 00:20:30,420 --> 00:20:32,750 Und insbesondere, was sind die Schlüssel-Wert-Paare? 478 00:20:32,750 --> 00:20:35,110 Woher kommen Sie? 479 00:20:35,110 --> 00:20:35,620 Es tut uns leid? 480 00:20:35,620 --> 00:20:36,994 >> ZIELGRUPPE: [unverständlich] 481 00:20:36,994 --> 00:20:37,660 DAVID MALAN: Nein? 482 00:20:37,660 --> 00:20:40,700 Wo geben die Schlüssel Wert-Paare her? 483 00:20:40,700 --> 00:20:42,490 Sage es noch einmal? 484 00:20:42,490 --> 00:20:44,610 Schon wieder? 485 00:20:44,610 --> 00:20:46,472 Bin ich der einzige, der mündlichen Verhandlung etwas? 486 00:20:46,472 --> 00:20:47,810 >> [Gelächter] 487 00:20:47,810 --> 00:20:49,042 >> Das ist richtig, ja? 488 00:20:49,042 --> 00:20:50,435 >> ZIELGRUPPE: [unverständlich] 489 00:20:50,435 --> 00:20:52,560 DAVID MALAN: Ja, sie stammen aus der Query-String. 490 00:20:52,560 --> 00:20:55,380 Also, wenn Sie in der Zeit, zurückspulen wenn wir mit Google gespielt haben 491 00:20:55,380 --> 00:20:59,600 und wir haben Google.com in Schrägstrich weg Suchfragezeichen q gleich Katzen, 492 00:20:59,600 --> 00:21:03,550 wenn ich drücken Sie die Eingabetaste, und wenn Google wurden in PHP implementiert, 493 00:21:03,550 --> 00:21:07,017 PHP-Code, dass Google hat geschrieben würde den Zugang zu Dollar-Zeichen haben 494 00:21:07,017 --> 00:21:11,600 streichen GET innerhalb dessen ist ein Schlüssel namens Q und einem Wert 495 00:21:11,600 --> 00:21:17,680 genannt Katzen, dass sie dann verwenden können, verwendet, um eine tatsächliche Suche zu tun. 496 00:21:17,680 --> 00:21:20,860 >> Also, in der Tat, was ich zu gehen jetzt tun ist, gehen Sie zurück zu meinem PHP-Code 497 00:21:20,860 --> 00:21:23,140 dass Sie wieder zu sehen mehr in PSet7. 498 00:21:23,140 --> 00:21:25,440 Und statt der Steck in hart codierte Werte, 499 00:21:25,440 --> 00:21:27,630 nicht wie ein scheinen sehr dynamische Website, 500 00:21:27,630 --> 00:21:30,680 Ich werde Ihnen einen Teaser zu geben was Ihre eigentliche Code tun würde. 501 00:21:30,680 --> 00:21:32,854 Sie würden in zwei gesetzt Fragezeichen wie diese. 502 00:21:32,854 --> 00:21:34,270 Ich weiß nicht, was der Benutzername. 503 00:21:34,270 --> 00:21:37,390 Ich weiß nicht, was die Name sein wird, 504 00:21:37,390 --> 00:21:39,470 aber ich weiß, ich kann bekommen sie dynamisch. 505 00:21:39,470 --> 00:21:43,420 >> Also, wenn der Code wir jetzt schreiben, ist der Code auf den Google-Servern läuft, 506 00:21:43,420 --> 00:21:46,940 oder, wenn dies hallo dot PHP, das mit PSet6 kommt, 507 00:21:46,940 --> 00:21:48,650 Ich werde in geben die Abfrage-Funktion 508 00:21:48,650 --> 00:21:51,450 wie printf, zwei weitere Argumente. 509 00:21:51,450 --> 00:21:57,120 GET, zitat, unquote Benutzername, und GET, zitat, unquote Namen. 510 00:21:57,120 --> 00:22:00,720 Und nun, bemerken, was die allgemeine Struktur ist hier. 511 00:22:00,720 --> 00:22:03,320 Ich habe auf der linken Seite kam Seite des Anrufs, 512 00:22:03,320 --> 00:22:05,480 diese Funktion aufgerufen Abfrage in PHP. 513 00:22:05,480 --> 00:22:08,160 Ich habe immer noch als eine erste Argument, nur eine Textzeichenfolge. 514 00:22:08,160 --> 00:22:11,000 >> Aber das Textzeichenfolge ist in einer Sprache namens SQL geschrieben. 515 00:22:11,000 --> 00:22:12,616 Und ehrlich gesagt, ist es nicht eine große Sprache. 516 00:22:12,616 --> 00:22:14,990 Wir sind nur gehen, um darüber zu sprechen formal heute, wirklich. 517 00:22:14,990 --> 00:22:17,031 Und dann in Problem eingestellt sieben, gibt es relativ 518 00:22:17,031 --> 00:22:18,800 paar Features, die wir sind gehen zu nutzen. 519 00:22:18,800 --> 00:22:22,530 Die Fragezeichen, obwohl, meine stecken ein Wert hier und Stecker in einen anderen Wert 520 00:22:22,530 --> 00:22:23,130 Hier. 521 00:22:23,130 --> 00:22:26,010 Und beachtet, habe ich weggelassen welche aus der ganzen quote-- verdammt 522 00:22:26,010 --> 00:22:30,470 es-- um das Angebot markiert diese Zeit. 523 00:22:30,470 --> 00:22:34,930 Ich habe das Zitat weggelassen Markierungen rund um die Fragezeichen, 524 00:22:34,930 --> 00:22:36,410 sorry, diese Zeit herum. 525 00:22:36,410 --> 00:22:38,870 >> Also, was ist schön zu dieser Fragezeichen-Funktion, 526 00:22:38,870 --> 00:22:42,830 PHP neigt dazu, zu unterstützen, Ruby und Python und andere Sprachen, 527 00:22:42,830 --> 00:22:45,730 Dies bedeutet nur, Plug in einigen schätzen hier und wissen Sie was? 528 00:22:45,730 --> 00:22:48,300 Sie herausfinden, ob zu bedienen Apostrophe oder Anführungszeichen. 529 00:22:48,300 --> 00:22:50,966 Mich mit denen sich nicht die Mühe intellektuell uninteressante Details. 530 00:22:50,966 --> 00:22:53,780 Aber stellen Sie sicher, dass es korrekt ist so dass mein Code ist letztlich 531 00:22:53,780 --> 00:22:57,010 operative und sicher, die eine Bedeutung haben, bevor lang. 532 00:22:57,010 --> 00:23:00,460 >> Nun, wie viele Argumente insgesamt, nur um klar sein, ist die Abfrage-Funktion Nahme? 533 00:23:00,460 --> 00:23:05,240 534 00:23:05,240 --> 00:23:07,581 Jeder will mehr als zwei zu wählen? 535 00:23:07,581 --> 00:23:08,080 Drei? 536 00:23:08,080 --> 00:23:10,001 Klar, warum? 537 00:23:10,001 --> 00:23:10,920 Warum drei? 538 00:23:10,920 --> 00:23:12,305 >> ZIELGRUPPE: [unverständlich] 539 00:23:12,305 --> 00:23:13,180 DAVID MALAN: Genau. 540 00:23:13,180 --> 00:23:14,610 Der erste Teil ist die Zeichenfolge. 541 00:23:14,610 --> 00:23:18,640 Das zweite Argument ist Dollar-Zeichen streichen GET Halterung Benutzernamen ein. 542 00:23:18,640 --> 00:23:21,950 Und das dritte Argument ist die elbe, aber nur der Name. 543 00:23:21,950 --> 00:23:24,590 Also mit anderen Worten: Nachdem wenn ich ein Web-Formular 544 00:23:24,590 --> 00:23:27,149 dass Textfelder hatten, eine für Benutzernamen des Benutzers, 545 00:23:27,149 --> 00:23:29,690 einer für seinen oder ihren Namen, nur wie Sie in einer Website zu sehen würde 546 00:23:29,690 --> 00:23:32,120 wenn Sie für registrieren einige Website, könnte dies 547 00:23:32,120 --> 00:23:35,450 den Code auf der Rückseite Ende sein, dass tatsächlich die Einfügung jetzt 548 00:23:35,450 --> 00:23:37,220 in die Datenbank. 549 00:23:37,220 --> 00:23:40,870 >> Jetzt hingegen, lassen Sie uns schnell vorwärts. 550 00:23:40,870 --> 00:23:43,840 Angenommen, ein Benutzer ist jetzt Anmeldung und Sie möchten 551 00:23:43,840 --> 00:23:48,860 PHP-Code, der überprüft, ob zu schreiben die Person, die gerade eingeloggt ist 552 00:23:48,860 --> 00:23:52,250 ist eigentlich ein Benutzer, können Sie benutzen ziemlich einfache Syntax. 553 00:23:52,250 --> 00:23:55,832 Man kann sagen, SELECT, sagen wir, Stern, Sterne, wo alles. 554 00:23:55,832 --> 00:23:57,540 Ich weiß nicht, was ich möchten, so gib mir 555 00:23:57,540 --> 00:24:01,585 alle Spalten der Tabelle genannt, wo Nutzer, und das ist schön. 556 00:24:01,585 --> 00:24:03,710 Select unterstützt, was rief ein Prädikat, das ist, 557 00:24:03,710 --> 00:24:06,630 wie eine Art und Weise zu qualifizieren, was Sie wollen. 558 00:24:06,630 --> 00:24:10,590 Wo Benutzernamen entspricht zitat, unquote Malan. 559 00:24:10,590 --> 00:24:13,680 So auch hier, ich habe eingebettet innerhalb des Arguments 560 00:24:13,680 --> 00:24:16,110 zu einer PHP-Funktion, einer Reihe von SQL-Code. 561 00:24:16,110 --> 00:24:18,680 Und das SQL-Code diese Zeit ist buchstäblich gehen 562 00:24:18,680 --> 00:24:21,790 zur Angebotsanfrage zu suchen, unquote Malan. 563 00:24:21,790 --> 00:24:24,420 >> Nun, das ist nicht alles, was nützlich, so werde ich, dass überspringen 564 00:24:24,420 --> 00:24:28,650 und ich werde weggeräumt dieser Tipp von Brady, und gehen 565 00:24:28,650 --> 00:24:30,990 und Plug-in statt ein Fragezeichen hier. 566 00:24:30,990 --> 00:24:33,290 Also, nur klar zu sein, was sollte mein zweites Argument 567 00:24:33,290 --> 00:24:37,480 wenn jemand hat gerade in und ich eingeloggt sein prüfen wollen, ob er oder sie ist eigentlich 568 00:24:37,480 --> 00:24:39,265 ein Benutzer? 569 00:24:39,265 --> 00:24:40,140 ZIELGRUPPE: [unverständlich] 570 00:24:40,140 --> 00:24:40,890 DAVID MALAN: Ja. 571 00:24:40,890 --> 00:24:44,120 Ich habe gehört, Dollarzeichen Unterstrich Angebot einholen, unquote Benutzernamen ein. 572 00:24:44,120 --> 00:24:50,040 Und das zu mir zurückkehren sollte eine der Zeilen in meiner Datenbank 573 00:24:50,040 --> 00:24:51,986 dass über einen Benutzernamen von Malan. 574 00:24:51,986 --> 00:24:54,860 Jetzt hoffentlich werde ich wieder zu bekommen Null, wenn Malans hier noch nie, 575 00:24:54,860 --> 00:24:56,290 oder eine, wenn er hat. 576 00:24:56,290 --> 00:24:59,026 Ich sollte nicht zurückbekommen zwei oder drei oder vier. 577 00:24:59,026 --> 00:24:59,526 Warum? 578 00:24:59,526 --> 00:25:00,220 >> ZIELGRUPPE: [unverständlich] 579 00:25:00,220 --> 00:25:01,120 >> DAVID MALAN: Ich sagte, einzigartige, nicht wahr? 580 00:25:01,120 --> 00:25:01,750 Einfachen Grund. 581 00:25:01,750 --> 00:25:04,030 Weil ich sagte, es ist zu bekommen sein einzigartiges, nur logisch, 582 00:25:04,030 --> 00:25:07,940 Sie können nur Null oder Eins Malans in diesem speziellen Datenbanktabelle. 583 00:25:07,940 --> 00:25:10,965 Jetzt nebenbei, nur damit Sie gesehen haben es, auch wenn ich immer mit GET 584 00:25:10,965 --> 00:25:14,350 und obwohl nur benutzt PSet6 Erhalten, können Sie sicherlich POST. 585 00:25:14,350 --> 00:25:17,212 Und daran erinnern, dass Beitrag ist ein weiterer Verfahren zur Übermittlung von Informationen 586 00:25:17,212 --> 00:25:19,170 aus einem Formular, aber es nicht zu sehen sind in der URL. 587 00:25:19,170 --> 00:25:22,690 Es ist ein wenig sicherer sicherlich für Dinge wie Benutzernamen und Passwörter, 588 00:25:22,690 --> 00:25:25,210 die PSet7 wird, in der Tat, zu beteiligen. 589 00:25:25,210 --> 00:25:28,130 >> Also, lassen Sie uns dies tun in PHP MyAdmin und sehen was passiert. 590 00:25:28,130 --> 00:25:30,020 Ich werde auf MySQL Registerkarte zu gehen. 591 00:25:30,020 --> 00:25:34,450 Und beachten Sie, dass Sie den Standardwert für die PHP MyAdmin, nur um zu versuchen, hilfreich zu sein, 592 00:25:34,450 --> 00:25:37,050 ist die Sterne von den Benutzern, wo man auswählen. 593 00:25:37,050 --> 00:25:39,430 Nun, das ist eine immer wahr, so dies hat den dummen effektive 594 00:25:39,430 --> 00:25:40,400 der einfach alles auszuwählen. 595 00:25:40,400 --> 00:25:42,691 Aber ich werde, ein wenig mehr pedantisch und manuell 596 00:25:42,691 --> 00:25:45,920 tippen SELECT Sterne FROM users. 597 00:25:45,920 --> 00:25:48,294 >> Jetzt Rein technisch können Sie zitieren Sie den Namen der Tabellen. 598 00:25:48,294 --> 00:25:50,460 Es ist selten, dass Sie, aber beachten, das sind nicht 599 00:25:50,460 --> 00:25:52,240 Ihre normale Anführungszeichen auf der US-Tastatur. 600 00:25:52,240 --> 00:25:54,760 Dies ist die so genannte Backtick, die ist in der Regel auf der linken oberen 601 00:25:54,760 --> 00:25:56,000 Ecke der Tastatur. 602 00:25:56,000 --> 00:25:58,500 Aber es ist selten, dass Sie tatsächlich benötigen, um mit, dass die Mühe, 603 00:25:58,500 --> 00:25:59,950 also werde ich sie trotzdem einfach weglassen. 604 00:25:59,950 --> 00:26:02,280 So, jetzt lassen Sie mich gehen Sie vor und schlug zu gehen. 605 00:26:02,280 --> 00:26:06,616 Und wie viele Zeilen sollte ich zurück, wenn ich Sterne-Nutzer wählen? 606 00:26:06,616 --> 00:26:08,407 >> ZIELGRUPPE: [unverständlich] 607 00:26:08,407 --> 00:26:09,990 DAVID MALAN: Die Anzahl der Zeilen, sicher. 608 00:26:09,990 --> 00:26:12,390 Aber wie viele in diesem konkrete Geschichte gerade jetzt? 609 00:26:12,390 --> 00:26:14,640 Zwei, weil es mich und es gab Rob. 610 00:26:14,640 --> 00:26:19,370 Also, wenn ich klicken Sie auf Go, sehe ich, dass visuell Ich habe wieder bekommen, ja, zwei Reihen. 611 00:26:19,370 --> 00:26:22,060 Es gibt eine Menge von Unordnung auf die Bildschirm, aber ich sehe nur zwei Reihen. 612 00:26:22,060 --> 00:26:28,580 Im Gegensatz dazu, wenn ich dies wieder tun und zu tun SELECT-Star aus Benutzern, wobei Benutzername 613 00:26:28,580 --> 00:26:31,840 gleich Zitat, Zitat Ende Malan, jetzt, wenn ich klicken Sie auf Go, 614 00:26:31,840 --> 00:26:33,970 Ich werde nur, um wieder eine Zeile. 615 00:26:33,970 --> 00:26:36,499 Und schließlich, wenn ich es tue so etwas wie dies: Angenommen 616 00:26:36,499 --> 00:26:38,290 dass ich kümmere mich nicht um bekommen alles, 617 00:26:38,290 --> 00:26:41,020 welcher Art von bedeutungs jetzt, denn es gibt nur zwei Spalten. 618 00:26:41,020 --> 00:26:43,103 Es ist nicht wie ich die Auswahl eine riesige Menge von Daten. 619 00:26:43,103 --> 00:26:46,720 Angenommen, ich voran gehen und Sie SELECT name FROM 620 00:26:46,720 --> 00:26:51,990 Benutzer, denen Benutzernamen entspricht Malan, Das Schöne an SQL ehrlich gesagt, 621 00:26:51,990 --> 00:26:54,290 ist, dass es wirklich nur tut, was Sie sagen, es zu tun. 622 00:26:54,290 --> 00:26:57,550 Es ist ziemlich prägnant, aber sie buchstäblich nur sagen, was Sie tun möchten. 623 00:26:57,550 --> 00:27:01,130 Wählen Sie die Namen von Benutzern, wo der Benutzername gleich Malan. 624 00:27:01,130 --> 00:27:03,440 Und es ist wirklich so eindeutig. 625 00:27:03,440 --> 00:27:08,410 So, jetzt, wenn ich getroffen Go, wie viele Zeilen werde ich zurück? 626 00:27:08,410 --> 00:27:10,770 One, weil es einfach Malan, hoffentlich. 627 00:27:10,770 --> 00:27:13,100 Oder null, wenn er nicht gibt, aber eine maximal. 628 00:27:13,100 --> 00:27:17,610 >> Und wie viele Spalten bekomme ich zurück? 629 00:27:17,610 --> 00:27:18,450 Wie viele Spalten? 630 00:27:18,450 --> 00:27:20,658 Dieses Mal Ich werde einfach , eins zu bekommen, weil ich nicht 631 00:27:20,658 --> 00:27:22,380 Wählen Sie Sterne, was alles. 632 00:27:22,380 --> 00:27:27,900 Jetzt bin ich der Auswahl nur Namen, so dass ich gerade wieder eine Spalte und eine Zeile. 633 00:27:27,900 --> 00:27:31,730 Und es sieht irgendwie angemessen lächerlich, gerade auf der Suche Super 634 00:27:31,730 --> 00:27:33,060 kleine wie diese. 635 00:27:33,060 --> 00:27:34,290 Also, was wirklich passiert? 636 00:27:34,290 --> 00:27:36,890 Wenn Sie eine SQL ausführen Abfrage mit wählen, 637 00:27:36,890 --> 00:27:38,700 was Sie bekommen aus der Datenbank zurück 638 00:27:38,700 --> 00:27:42,970 ist wie eine temporäre Tabelle mit Zeilen und Spalten, vielleicht, 639 00:27:42,970 --> 00:27:46,260 aber das alles unterlassen, dass war nicht wirklich von Ihnen gewählten. 640 00:27:46,260 --> 00:27:49,010 Also, es ist wie wenn jemand hatte eine große Tabellenkalkulation aller Schüler 641 00:27:49,010 --> 00:27:51,610 für manche registriert Studentengruppe, und Sie sagen, 642 00:27:51,610 --> 00:27:55,097 mir alle von der Neuling, der habe für unsere Studentengruppe registriert, was 643 00:27:55,097 --> 00:27:56,930 Ihr Kollege in der Studentengruppe tun könnte 644 00:27:56,930 --> 00:27:58,430 wird sie nur die Hand könnte Sie die ganze Tabelle. 645 00:27:58,430 --> 00:27:59,742 Das ist, als würde man sagen wählen Stern. 646 00:27:59,742 --> 00:28:02,200 Und es ist ein wenig ärgerlich, wenn Sie wollte nur den Neuling. 647 00:28:02,200 --> 00:28:05,640 Und so, wenn Sie stattdessen sagte, Wählen Star aus Datenbanktabelle 648 00:28:05,640 --> 00:28:08,470 wo Jahr entspricht zitat, unquote Freshman, 649 00:28:08,470 --> 00:28:10,810 es ist, als ob dein Freund in der Studentengruppe 650 00:28:10,810 --> 00:28:13,770 buchstäblich hervorgehoben und kopiert nur die Freshman-Reihen, 651 00:28:13,770 --> 00:28:16,780 klebte sie in ein neues Google Tabellenkalkulation oder eine Excel-Datei, 652 00:28:16,780 --> 00:28:18,860 und übergeben Sie zurück die resultierende einzige Datei. 653 00:28:18,860 --> 00:28:21,710 Das ist alles, das geht auf konzeptionell hier. 654 00:28:21,710 --> 00:28:23,920 >> Also am Ende, was wir tun können einige ziemlich ausgefallene Sachen 655 00:28:23,920 --> 00:28:26,560 indem Dinge wie Benutzernamen und Passwörter und ähnliches. 656 00:28:26,560 --> 00:28:30,310 Aber es stellt sich heraus, wir tun sollten etwas anders als diese. 657 00:28:30,310 --> 00:28:34,750 Das ist es nicht klug, um nur speichern Sie einen Benutzernamen und ein Passwort. 658 00:28:34,750 --> 00:28:37,790 Jemand früher, ich glaube, hier unten, schlug eine ID. 659 00:28:37,790 --> 00:28:40,787 Nun könnte eine ID wie ein sein Harvard oder Yale ID Net-ID, 660 00:28:40,787 --> 00:28:42,870 aber es noch einfacher sein könnte in unserer Datenbank Fall. 661 00:28:42,870 --> 00:28:45,120 Und in der Tat die häufigste Fall ist es, eine andere Spalte aufweisen. 662 00:28:45,120 --> 00:28:46,953 Und ich werde gehen voran und meine Tabelle bearbeiten. 663 00:28:46,953 --> 00:28:49,521 Und wenn Sie spielen, um mit Diese Schnittstelle für PSet7, 664 00:28:49,521 --> 00:28:51,770 Sie sehen, dass Sie überprüfen können, werden auf diese Schaltfläche, und fügen Sie hier 665 00:28:51,770 --> 00:28:53,750 ein Feld am Anfang der Tabelle. 666 00:28:53,750 --> 00:28:56,720 Und jetzt, wenn ich klicken Sie auf Go, es geht mir eine jener Formen zu geben, 667 00:28:56,720 --> 00:28:57,600 aus früheren. 668 00:28:57,600 --> 00:29:00,170 Ich werde ein Feld namens ID hinzuzufügen. 669 00:29:00,170 --> 00:29:03,070 Und ich werde es ein numerischer Typ zu machen. 670 00:29:03,070 --> 00:29:05,362 >> Ich habe eine ganze Reihe von Werten für numerische Werte. 671 00:29:05,362 --> 00:29:08,677 Ich werde einfach ein INT wählen und nicht um die unterschiedlichen Größen sorgen. 672 00:29:08,677 --> 00:29:10,510 Ich habe nicht um anzugeben, eine Länge oder ein Wert, 673 00:29:10,510 --> 00:29:13,710 denn es geht um sein 32 Bit, egal was. 674 00:29:13,710 --> 00:29:16,070 Attribute, haben wir nicht sehen, bevor. 675 00:29:16,070 --> 00:29:18,410 Alle Interesse an einer dieser Punkte Menüoptionen dieses Mal? 676 00:29:18,410 --> 00:29:21,890 677 00:29:21,890 --> 00:29:23,745 Für eine INT? 678 00:29:23,745 --> 00:29:24,620 Was haben Sie vor? 679 00:29:24,620 --> 00:29:27,350 680 00:29:27,350 --> 00:29:28,445 Nein? 681 00:29:28,445 --> 00:29:29,570 Führen Sie einen von ihnen sinnvoll? 682 00:29:29,570 --> 00:29:30,536 Ja. 683 00:29:30,536 --> 00:29:31,900 Ja, ohne Vorzeichen, nicht wahr? 684 00:29:31,900 --> 00:29:35,930 >> Im Allgemeinen, wenn wir gehen zu geben, jeder eine eindeutige Nummer, die 685 00:29:35,930 --> 00:29:38,200 ist, wo diese Geschichte werde ich nur wirklich wollen, 686 00:29:38,200 --> 00:29:41,919 eine Person, die Anzahl, wie Null haben und eins und zwei und drei und vier. 687 00:29:41,919 --> 00:29:43,710 Ich brauche nicht zu umgehen mit negativen Zahlen. 688 00:29:43,710 --> 00:29:45,210 Es scheint, wie sie nicht zu komplex. 689 00:29:45,210 --> 00:29:48,470 Ich möchte vier Milliarden mögliche Werte, nicht vier Milliarden mögliche Werte, 690 00:29:48,470 --> 00:29:50,699 so dass ich nur verdoppelte sich die Kapazität von meiner INT. 691 00:29:50,699 --> 00:29:53,490 Nebenbei, wenn Sie beziehen möchten dies um so etwas wie Facebook, 692 00:29:53,490 --> 00:29:56,190 zurück in eine Art mein Tag, wenn Facebook zum ersten Mal aus, 693 00:29:56,190 --> 00:29:59,510 Ich glaube, was sie waren, Verwendung in ihrer MySQL-Datenbank 694 00:29:59,510 --> 00:30:02,856 So speichern Sie eine Benutzer- Kennung, war nur ein INT. 695 00:30:02,856 --> 00:30:05,230 Aber natürlich gibt es eine Menge von realen Menschen in der Welt. 696 00:30:05,230 --> 00:30:07,438 Es gibt eine Menge von gefälschten Facebook Konten in der Welt. 697 00:30:07,438 --> 00:30:11,701 Und so schließlich, Facebook übergelaufen die Größe eines INT, einen vier Milliarden 698 00:30:11,701 --> 00:30:12,200 Wert. 699 00:30:12,200 --> 00:30:15,032 Das ist, warum, wenn man sich rund und es gibt Websites 700 00:30:15,032 --> 00:30:16,740 das kann Ihnen sagen, was Ihre eindeutige ID ist. 701 00:30:16,740 --> 00:30:19,781 Und wenn Sie noch nie wählte einen Benutzernamen in Facebook, sehen Sie die eindeutige ID. 702 00:30:19,781 --> 00:30:23,080 Ich denke es ist Profil dot PHP Fragezeichen-ID gleich etwas. 703 00:30:23,080 --> 00:30:27,210 Das ist jetzt so etwas wie eine große INT, oder eine lange, lange, wenn man so will, 704 00:30:27,210 --> 00:30:29,700 der mit einem 64-Bit-Wert ist, oder etwas Vergleichbares. 705 00:30:29,700 --> 00:30:33,620 >> Also, auch in der realen Welt diese tun Fragen letztlich manchmal egal. 706 00:30:33,620 --> 00:30:37,600 Und es stellt sich heraus hier, wenn ich geben alle meine Benutzer eine eindeutige ID, 707 00:30:37,600 --> 00:30:41,750 Ich möchte Super explizit zu sein und minimal machen dieses Gebiet einzigartig. 708 00:30:41,750 --> 00:30:44,750 Aber es stellt sich heraus, es gibt eine Stück der Nomenklatur auch heute 709 00:30:44,750 --> 00:30:46,470 das ist ein Primärschlüssel. 710 00:30:46,470 --> 00:30:49,800 Wenn Sie Entwerfen einer Datenbank Tisch und Sie im Voraus wissen, 711 00:30:49,800 --> 00:30:55,580 daß eine der Spalten in der Tabelle sollte und eindeutig zu identifizieren Reihen 712 00:30:55,580 --> 00:30:58,500 in der Tabelle, zu wollen, dass Sie geben Sie ihn und sagen Sie die Datenbank, 713 00:30:58,500 --> 00:31:00,250 dies ist mein Primärschlüssel. 714 00:31:00,250 --> 00:31:02,110 Es könnte Duplikate in anderen Bereichen, 715 00:31:02,110 --> 00:31:06,330 aber ich sage die Datenbank, dass diese ist meine primäre, meine wichtigste Feld, 716 00:31:06,330 --> 00:31:08,420 das ist garantiert eindeutig sein. 717 00:31:08,420 --> 00:31:09,660 >> Nun, dies scheint überflüssig. 718 00:31:09,660 --> 00:31:13,830 Ich bin jetzt vorschlägt, dass wir hinzufügen, indem Sie auf Speichern Sie hier, 719 00:31:13,830 --> 00:31:17,210 ein Feld called-- und ich werde gehen Sie vor und klicken Sie auf AI, 720 00:31:17,210 --> 00:31:19,720 wir kommen wieder zu kommen , dass in einem Moment, speichern. 721 00:31:19,720 --> 00:31:22,540 Ich bin jetzt, dass vorzuschlagen meinem Tisch wie folgt aussehen. 722 00:31:22,540 --> 00:31:26,305 Ich habe eine INT Feld namens ID, ein CHAR-Feld namens Benutzername, 723 00:31:26,305 --> 00:31:31,100 ein VARCHAR Feld namens Namen, aber ID, wenn es primäre und somit ein Unikat, 724 00:31:31,100 --> 00:31:33,760 warum habe ich nur Abfälle Zeit die Einführung, was 725 00:31:33,760 --> 00:31:39,140 effektiv eine zweite einzigartige Feld namens ID, die eine INT ist? 726 00:31:39,140 --> 00:31:41,980 >> Benutzername, Rückruf, war bereits einzigartige, sagten wir. 727 00:31:41,980 --> 00:31:45,350 Also nur logisch, brauchen Sie nicht Jeder Datenbankerfahrung zur Vernunft 728 00:31:45,350 --> 00:31:47,570 durch diese, warum vielleicht habe ich eingeführt 729 00:31:47,570 --> 00:31:50,065 INT als meine eindeutige Kennung, wie gut? 730 00:31:50,065 --> 00:31:52,740 731 00:31:52,740 --> 00:31:53,930 Was this-- wieder sagen? 732 00:31:53,930 --> 00:31:55,580 >> ZIELGRUPPE: [unverständlich] 733 00:31:55,580 --> 00:31:59,534 >> DAVID MALAN: Random Zugang ist einfacher, warum? 734 00:31:59,534 --> 00:32:00,410 >> ZIELGRUPPE: [unverständlich] 735 00:32:00,410 --> 00:32:02,367 DAVID MALAN: Ja, es ist nur Zugriff auf Zahlen. 736 00:32:02,367 --> 00:32:04,750 Also, wenn Sie denken, dies wirklich ist eine Tabelle, wie eine Matrix, 737 00:32:04,750 --> 00:32:07,690 jetzt habe ich eindeutige Kennungen dass ich herumspringen. 738 00:32:07,690 --> 00:32:11,520 Und besser als die immer noch ist, dass Wie groß ist ein INT werde wieder sein? 739 00:32:11,520 --> 00:32:14,450 740 00:32:14,450 --> 00:32:15,800 32 Bits oder vier Bytes. 741 00:32:15,800 --> 00:32:17,750 >> Wie groß ist mein Benutzername sein wird? 742 00:32:17,750 --> 00:32:20,310 743 00:32:20,310 --> 00:32:21,990 Maximal? 744 00:32:21,990 --> 00:32:22,880 16 Byte. 745 00:32:22,880 --> 00:32:26,080 >> Also, wenn Sie wirklich die Sorge um die Leistung des Codes, 746 00:32:26,080 --> 00:32:31,390 denken Sie zurück an PSet5, würden Sie es vorziehen für eine Vier-Byte-Wert oder einem 16 suchen 747 00:32:31,390 --> 00:32:32,240 Byte-Wert, oder? 748 00:32:32,240 --> 00:32:33,810 Es ist wirklich so einfach ist das. 749 00:32:33,810 --> 00:32:38,060 Sie müssen vier Mal so viel Arbeit zu tun für Benutzernamen, weil diejenigen suchen 750 00:32:38,060 --> 00:32:38,830 sind 16 Bytes. 751 00:32:38,830 --> 00:32:41,320 Also, Sie haben buchstäblich vergleichen alle 16 Bytes sein 752 00:32:41,320 --> 00:32:43,140 sicher, ja, das ist Benutzernamen ich will. 753 00:32:43,140 --> 00:32:46,610 Während für einen INT, können Sie tun Sie es mit nur vier Bytes. 754 00:32:46,610 --> 00:32:49,212 >> Und nebenbei für diejenigen, Interesse an Computer-Hardware, 755 00:32:49,212 --> 00:32:52,420 es stellt sich heraus, können Sie etwas wie passen INT oder ein 32-Bit-Wert in etwas 756 00:32:52,420 --> 00:32:55,330 genannt ein Register in einem Computer CPU, was bedeutet, es ist super, 757 00:32:55,330 --> 00:32:58,400 super schnell, selbst bei der niedrigsten Niveau der Hardware des Computers. 758 00:32:58,400 --> 00:33:00,530 Also, es gibt nur Vorteile rundum. 759 00:33:00,530 --> 00:33:01,530 Also, was bedeutet das? 760 00:33:01,530 --> 00:33:04,850 In der Tat, wenn Sie entwerfen ein Datenbanktabelle, die fast alle die Zeit 761 00:33:04,850 --> 00:33:07,170 willst du nicht nur die Daten, die Sie interessieren, 762 00:33:07,170 --> 00:33:09,280 sondern auch so etwas wie eine eindeutige Kennung 763 00:33:09,280 --> 00:33:11,280 weil dies zu gehen lassen Sie uns andere Dinge. 764 00:33:11,280 --> 00:33:13,160 Und lassen Sie uns stolpern ein Problem hier. 765 00:33:13,160 --> 00:33:15,990 >> Nehmen wir an, dass Benutzer nicht nur Benutzernamen und Namen, 766 00:33:15,990 --> 00:33:19,540 aber sie Dinge wie Städte haben auch und Zustände und Postleitzahlen, zumindest 767 00:33:19,540 --> 00:33:20,432 Hier in den USA. 768 00:33:20,432 --> 00:33:22,390 Also, ich werde weitermachen und nur schnell sagen, 769 00:33:22,390 --> 00:33:26,180 Geben Sie mir drei weitere Säulen am Ende der Tabelle. 770 00:33:26,180 --> 00:33:28,900 Und das wird der Stadt zu sein, das wird Staat, 771 00:33:28,900 --> 00:33:30,400 und das wird Zip sein. 772 00:33:30,400 --> 00:33:32,710 >> Jetzt Stadt, welche Datentypen sollte dies vielleicht? 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 Ich weiß nicht, was die längsten Namen der Stadt ist. 776 00:33:37,780 --> 00:33:40,571 Irgendwo in Amerika, da ist wahrscheinlich einige lächerlich langen Wort, 777 00:33:40,571 --> 00:33:43,605 so lassen Sie uns nur mit 255 zu gehen, etwas historisch oder willkürlich. 778 00:33:43,605 --> 00:33:44,730 State, was Sie wollen, zu tun? 779 00:33:44,730 --> 00:33:48,380 780 00:33:48,380 --> 00:33:50,367 Urteil nennen, nicht wahr? 781 00:33:50,367 --> 00:33:51,700 Was ist vielleicht die effizienteste? 782 00:33:51,700 --> 00:33:53,500 Wie viele Zeichen? 783 00:33:53,500 --> 00:33:55,950 Vielleicht nur zwei, wenn wir können weg mit nur tun, 784 00:33:55,950 --> 00:33:58,250 dergleichen, MA Massachusetts und so weiter. 785 00:33:58,250 --> 00:34:00,520 Also, ich werde eine CHAR Wert von zwei zu gehen. 786 00:34:00,520 --> 00:34:03,080 >> Postleitzahl ist interessant. 787 00:34:03,080 --> 00:34:06,679 Wir sind hier in 02138, so dass schlägt vor, wir sollten, was zu verwenden? 788 00:34:06,679 --> 00:34:07,470 Es ist ein INT, nicht wahr? 789 00:34:07,470 --> 00:34:10,030 790 00:34:10,030 --> 00:34:12,800 INT, INT, kurz? 791 00:34:12,800 --> 00:34:14,521 Short funktionieren würde. 792 00:34:14,521 --> 00:34:15,020 Nein? 793 00:34:15,020 --> 00:34:18,920 794 00:34:18,920 --> 00:34:20,870 CHAR oder fünf, aber ich möchte einen INT. 795 00:34:20,870 --> 00:34:23,710 Warum schieben Sie zurück auf eine INT? 796 00:34:23,710 --> 00:34:26,820 Reden mich von diesem. 797 00:34:26,820 --> 00:34:29,210 Was ist dumm zu einem INT, meine Idee? 798 00:34:29,210 --> 00:34:29,871 Ja. 799 00:34:29,871 --> 00:34:31,199 >> ZIELGRUPPE: mehr Speicherkapazität. 800 00:34:31,199 --> 00:34:32,909 >> DAVID MALAN: mehr Speicherkapazität. 801 00:34:32,909 --> 00:34:35,310 Vier Bytes, aber du bist schlägt eine PLZ 802 00:34:35,310 --> 00:34:39,000 als fünf Bytes oder jemand war als CHAR, die wie eh fühlt, das ist nicht wirklich 803 00:34:39,000 --> 00:34:39,620 der Fall. 804 00:34:39,620 --> 00:34:40,489 >> Nun, Spaß Geschichte. 805 00:34:40,489 --> 00:34:43,179 Vor Jahren, als ich früher benutzen Microsoft Outlook für meine E-Mail, 806 00:34:43,179 --> 00:34:45,150 Ich schließlich wollte, um Google Mail wechseln. 807 00:34:45,150 --> 00:34:48,949 Und so exportierte ich alle meine Kontakte aus Outlook als CSV-Datei. 808 00:34:48,949 --> 00:34:50,699 Comma Separated Values, das nur bedeutete, dass ich 809 00:34:50,699 --> 00:34:54,060 hatte alle meine Freunde Namen und letzten Namen und Telefonnummern und Postleitzahlen 810 00:34:54,060 --> 00:34:54,747 und all das. 811 00:34:54,747 --> 00:34:56,580 Und dann machte ich die Fehler, indem er sie 812 00:34:56,580 --> 00:34:58,640 in Excel, die eine ist Tabellenkalkulationsprogramm, 813 00:34:58,640 --> 00:35:00,289 versteht, CSV-Dateien, wie wir gesehen haben. 814 00:35:00,289 --> 00:35:03,080 Aber dann muss ich getroffen haben, wie, Befehl oder Steuerung S in einem Punkt. 815 00:35:03,080 --> 00:35:06,250 Und Excel offensichtlich zu der Zeit hatte eine Funktion, bei der es jederzeit 816 00:35:06,250 --> 00:35:08,100 sah eine Reihe, es versucht, hilfsbereit zu sein. 817 00:35:08,100 --> 00:35:11,610 Und wenn diese Zahl begann mit Nullen, wäre es nur, sie loszuwerden. 818 00:35:11,610 --> 00:35:13,420 Warum glauben Sie was brauchen Nullen am ganzen Zahlen? 819 00:35:13,420 --> 00:35:15,140 Sie sind bedeutungslos, mathematisch. 820 00:35:15,140 --> 00:35:17,530 Sie sind nicht sinnlos in der US-Postsystem. 821 00:35:17,530 --> 00:35:19,954 Also, ich habe schon seit Jahren, bis zum heutigen Tag, habe ich noch 822 00:35:19,954 --> 00:35:22,370 Freunde haben, dass, wenn die seltenen Fall, dass Ich brauche jemanden, ist 823 00:35:22,370 --> 00:35:24,078 Adresse in diesen Tagen, Ich werde immer noch sehen, dass ich 824 00:35:24,078 --> 00:35:26,767 habe einen Freund in Cambridge, Massachusetts, 2138. 825 00:35:26,767 --> 00:35:29,350 Und es ist ärgerlich, wenn Sie versuchen, programmgesteuert Art 826 00:35:29,350 --> 00:35:30,975 erzeugen Umschläge oder gerade notieren Sie ihn. 827 00:35:30,975 --> 00:35:33,599 Und das ist aus diesem Grund, Ich wählte den falschen Datentyp. 828 00:35:33,599 --> 00:35:34,490 Also, ich liebe deine Idee. 829 00:35:34,490 --> 00:35:35,650 Lassen Sie uns ein CHAR-Feld. 830 00:35:35,650 --> 00:35:38,340 Fünf Zeichen, mit Ausnahme gibt es eine Ecke Fall. 831 00:35:38,340 --> 00:35:42,220 Wenn Sie immer noch E-Mail senden, manchmal Postleitzahlen in diesen Tagen, 832 00:35:42,220 --> 00:35:45,360 sie sind, wie, plus vier. 833 00:35:45,360 --> 00:35:48,200 Also brauchen wir einen Bindestrich und dann wir brauchen noch vier Zahlen. 834 00:35:48,200 --> 00:35:50,330 Also um ehrlich zu sein, könnte es gehen viele verschiedene Möglichkeiten. 835 00:35:50,330 --> 00:35:52,371 >> Denn jetzt, ich werde zu halten es einfach und ich bin 836 00:35:52,371 --> 00:35:54,780 sagen, dass es ein fünf CHAR-Wert, und wir sind 837 00:35:54,780 --> 00:35:56,739 gehen, um den ganzen Strich plus vier zu überspringen. 838 00:35:56,739 --> 00:35:58,280 Aber das sind die Arten von Kompromissen. 839 00:35:58,280 --> 00:36:00,196 Und Sie der denken kann gleichen Probleme 840 00:36:00,196 --> 00:36:01,860 mit Telefonnummern oder anderen Bereichen. 841 00:36:01,860 --> 00:36:04,350 >> Und jetzt, das ist eigentlich ein dummer Weg nach unten gehen. 842 00:36:04,350 --> 00:36:08,000 Nehmen wir an, sowohl Rob und ich und Hannah und Maria und [? Davon?] Und Andy 843 00:36:08,000 --> 00:36:12,820 und andere auf das Personal alle leben in Cambridge, Massachusetts, 02138. 844 00:36:12,820 --> 00:36:17,970 Diese tatsächlich das Gefühl dumm, dass ich Hinzufügen zu meiner Benutzer-Tabelle, Stadt, Bundesland, 845 00:36:17,970 --> 00:36:18,630 und Reißverschluss. 846 00:36:18,630 --> 00:36:20,980 Warum? 847 00:36:20,980 --> 00:36:21,960 >> ZIELGRUPPE: [unverständlich] 848 00:36:21,960 --> 00:36:22,918 >> DAVID MALAN: Sagen Sie wieder? 849 00:36:22,918 --> 00:36:24,310 ZIELGRUPPE: [unverständlich] 850 00:36:24,310 --> 00:36:25,850 >> DAVID MALAN: Sie sind immer gehen, um zusammen zu gehen, nicht wahr? 851 00:36:25,850 --> 00:36:28,660 Wenn sich herausstellt, waren wir der Meinung dies der Fall war, bis wir abschließend 852 00:36:28,660 --> 00:36:30,570 durchsucht den gesamten USA, und es stellt sich heraus, dass 853 00:36:30,570 --> 00:36:32,653 sind einige Inkonsistenzen in denen mehrere Städte haben 854 00:36:32,653 --> 00:36:35,060 das gleiche zip, was schon seltsam ist. 855 00:36:35,060 --> 00:36:40,580 Aber wenn wir jetzt, dass 02138 festgelegt für ist immer Cambridge, Massachusetts, 856 00:36:40,580 --> 00:36:44,910 Warum in der Welt würden Sie speichern in Ihre Datenbank Cambridge und MA und 02138 857 00:36:44,910 --> 00:36:49,357 für mich und für Hannah und Rob und für [? Davon?] Und für die anderen, die leben 858 00:36:49,357 --> 00:36:51,190 hier in Cambridge, ist es vollkommen überflüssig. 859 00:36:51,190 --> 00:36:54,480 >> Wir sollten weg mit nur speichern, was? 860 00:36:54,480 --> 00:36:55,610 Nur die Postleitzahl. 861 00:36:55,610 --> 00:36:58,660 Aber dann, wenn wir nur die Speicherung Postleitzahl, ich will, wahrscheinlich, 862 00:36:58,660 --> 00:37:02,160 für meine Website zu wissen, wo 02.138 ist. 863 00:37:02,160 --> 00:37:03,910 Also, ich brauche einen anderen Tisch. 864 00:37:03,910 --> 00:37:04,697 Und das ist OK. 865 00:37:04,697 --> 00:37:07,530 Und in der Tat ist eine der diese Designprozesse zu entwerfen Tabellen 866 00:37:07,530 --> 00:37:11,472 dass Sie in PSet7 sowie wobei tun Sie ausklammern gemeinsamen Daten möchten. 867 00:37:11,472 --> 00:37:14,430 Genau wie wir haben Ausklammerung Common Code und Factoring gemeinsame 868 00:37:14,430 --> 00:37:17,380 Arten von CSS, hier Auch in der Datenbank, 869 00:37:17,380 --> 00:37:21,180 wenn ich nur 02138 eindeutig identifizieren jemanden, der Heimatstadt, 870 00:37:21,180 --> 00:37:25,020 nicht Cambridge, Mass speichern für jeden verdammten Benutzer in Ihrer Tabelle. 871 00:37:25,020 --> 00:37:29,770 >> Stattdessen haben eine separate Tabelle namens Reißverschlüsse, die haben sollten, welche Spalten? 872 00:37:29,770 --> 00:37:33,490 Wahrscheinlich ein ID-Feld, nur weil, für die Prinzipien wir jetzt spreche. 873 00:37:33,490 --> 00:37:35,720 Wahrscheinlich ein zip Feld für 02138. 874 00:37:35,720 --> 00:37:38,400 Und dann wahrscheinlich das, was anderen Spalten? 875 00:37:38,400 --> 00:37:42,950 Stadt und Staat, aber nur einen Zeile für 02138, eine Zeile für 02139, 876 00:37:42,950 --> 00:37:44,772 eine Zeile für 90210. 877 00:37:44,772 --> 00:37:46,730 Und das ist buchstäblich alle Postleitzahlen Ich weiß. 878 00:37:46,730 --> 00:37:49,012 >> So, jetzt, was kann man tun? 879 00:37:49,012 --> 00:37:51,220 Dies ist problematisch, denn jetzt habe ich zwei Tabellen hat. 880 00:37:51,220 --> 00:37:54,660 So sind meine Nutzer meist über hier, aber ihre Stadt Zustandsinformation ist 881 00:37:54,660 --> 00:37:55,390 hier drüben. 882 00:37:55,390 --> 00:37:58,635 So stellt sich heraus, mit SQL gibt es eigentlich eine Möglichkeit, Informationen zu verbinden, 883 00:37:58,635 --> 00:38:00,470 und Sie werden diese in der PSet sehen. 884 00:38:00,470 --> 00:38:03,000 >> Aber es stellt sich heraus, können Sie tun so etwas wie dieses. 885 00:38:03,000 --> 00:38:10,501 SELECT-Star aus Benutzern, JOIN-Reißverschlüsse an Nutzer dot zip gleich Reiß dot Reißverschluss. 886 00:38:10,501 --> 00:38:13,360 Das ist ein wenig wortreich, zugegebenermaßen, aber dies nur 887 00:38:13,360 --> 00:38:17,590 bedeutet, wählen Sie alles aus der Prozess der Übernahme meiner Benutzer-Tabelle 888 00:38:17,590 --> 00:38:19,580 und meine Reißtisch. 889 00:38:19,580 --> 00:38:22,120 Begleiten Sie sie auf der einen Feld haben sie in der Spalte. 890 00:38:22,120 --> 00:38:24,780 Also, buchstäblich etwas zu tun, wie diese, und geben Sie mir zurück 891 00:38:24,780 --> 00:38:27,360 eine neue temporäre Tabelle das ist breiter, das ist größer, 892 00:38:27,360 --> 00:38:29,450 dass hat alle Spalten aus beiden. 893 00:38:29,450 --> 00:38:33,510 Und das ganz einfach wäre, die Syntax für so etwas wie dies zu tun. 894 00:38:33,510 --> 00:38:35,540 >> Also, es gibt diese vor, aber es geht 895 00:38:35,540 --> 00:38:38,950 zu anderen Design-Entscheidungen sein, du wirst haben, um nicht nur mit den Registern 896 00:38:38,950 --> 00:38:40,550 sondern auch in die laufenden Herausforderungen. 897 00:38:40,550 --> 00:38:43,360 In der Tat, es ist eine Herausforderung, in jeder Datenbank-Design 898 00:38:43,360 --> 00:38:47,930 wobei manchmal zwei Personen möchten Sie vielleicht um die gleichen Zeilen der Datenbank zugreifen 899 00:38:47,930 --> 00:38:48,530 Tabelle. 900 00:38:48,530 --> 00:38:51,450 Also, das ist etwas, dass wir Begegnung in PSet7 auch. 901 00:38:51,450 --> 00:38:54,686 >> Aber ich dachte, dass ich auf einen Blick Angriff, der in SQL möglich ist. 902 00:38:54,686 --> 00:38:56,560 Was sind einige der Probleme, die entstehen können? 903 00:38:56,560 --> 00:38:58,170 Also, werden Sie diese in PSet7 begegnen. 904 00:38:58,170 --> 00:39:01,874 Und wir sagen Ihnen, was die völlige Codierungs Lösung für dieses Problem ist. 905 00:39:01,874 --> 00:39:04,790 Aber wenn Sie eine höhere Klasse zu nehmen, vor allem in Betriebssystemen, 906 00:39:04,790 --> 00:39:06,950 Sie gehen zu treffen sind eine Frage der Unteilbarkeit, 907 00:39:06,950 --> 00:39:10,080 das Problem zu tun versuchen, mehrere Dinge auf einmal 908 00:39:10,080 --> 00:39:11,000 ohne Unterbrechung. 909 00:39:11,000 --> 00:39:14,560 >> Und ich dachte, ich würde dieses einzuführen Ideen für PSet7 mit einer Metapher 910 00:39:14,560 --> 00:39:18,160 Ich habe gelernt, dass ich mich in Margo Seltzer der CS164-Betriebssysteme 911 00:39:18,160 --> 00:39:18,990 Klasse Jahren. 912 00:39:18,990 --> 00:39:22,230 Nehmen wir an, dass Sie eine dieser Wohnheim haben Kühlschränke in Ihrem Zimmer im Studentenwohnheim oder ein Haus 913 00:39:22,230 --> 00:39:24,474 und Sie haben eine echte Vorliebe für Milch. 914 00:39:24,474 --> 00:39:27,140 Und so, nach Hause von Klassen kommen Sie eines Tages, den Kühlschrank öffnen Sie. 915 00:39:27,140 --> 00:39:27,620 Oh, verdammt noch mal. 916 00:39:27,620 --> 00:39:28,870 Es gibt keine Milch im Kühlschrank. 917 00:39:28,870 --> 00:39:32,470 Also, den Kühlschrank zu schließen Sie, verriegeln die Tür, sperren Sie Ihre Wohnheim 918 00:39:32,470 --> 00:39:34,770 zu Fuß um die Ecke CVS, erhalten in der Linie, 919 00:39:34,770 --> 00:39:36,312 und starten Sie die Überprüfung für ein wenig Milch. 920 00:39:36,312 --> 00:39:38,978 Und es wird eine Weile dauern, weil diese verdammten Self-Checkout- 921 00:39:38,978 --> 00:39:40,570 Zähler ewig dauern, um trotzdem zu verwenden. 922 00:39:40,570 --> 00:39:41,950 So unterdessen kommt Ihre Mitbewohner Hause. 923 00:39:41,950 --> 00:39:43,470 Er oder sie wirklich mag Milch als auch. 924 00:39:43,470 --> 00:39:45,520 Sie kommen in das Zimmer im Studentenwohnheim, öffnen Sie den Kühlschrank, oh, verdammt sie. 925 00:39:45,520 --> 00:39:46,490 Es gibt keine Milch mehr. 926 00:39:46,490 --> 00:39:49,040 >> Also, er oder sie auch geht um die Ecke. 927 00:39:49,040 --> 00:39:51,670 Aber jetzt, da es wie zwei oder drei oder vier CVSes in der Nähe, 928 00:39:51,670 --> 00:39:53,800 sie geschehen, zu einem der gehen verschiedene, auf dem Platz. 929 00:39:53,800 --> 00:39:55,830 Und jetzt, ein paar Minuten später, beide von Ihnen 930 00:39:55,830 --> 00:39:58,060 nach Hause kommen und ugh, schlimmste Problem überhaupt. 931 00:39:58,060 --> 00:40:00,967 Jetzt zu viel Milch muss man denn es wird sauer. 932 00:40:00,967 --> 00:40:03,050 Und Sie wollen Milch, aber sie nicht wirklich gerne Milch. 933 00:40:03,050 --> 00:40:06,730 >> So, jetzt war dies ein teures Fehler, weil Sie beide 934 00:40:06,730 --> 00:40:09,870 eine Entscheidung auf der Grundlage der Zustand einiger Variable, 935 00:40:09,870 --> 00:40:12,660 war in dem Verfahren durch Sie geändert haben, 936 00:40:12,660 --> 00:40:14,560 der Initiator der gehen, um Milch zu bekommen. 937 00:40:14,560 --> 00:40:17,785 So ist, was vielleicht eine menschliche Lösung für dieses Problem? 938 00:40:17,785 --> 00:40:18,660 ZIELGRUPPE: [unverständlich] 939 00:40:18,660 --> 00:40:19,430 DAVID MALAN: Lassen Sie eine Notiz, nicht wahr? 940 00:40:19,430 --> 00:40:21,850 Lassen Sie immer eine Notiz, wenn Sie vertraut mit dieser Show. 941 00:40:21,850 --> 00:40:23,100 Ja, es gibt zwei von uns. 942 00:40:23,100 --> 00:40:25,940 Also, immer eine Nachricht hinterlassen, oder den Kühlschrank buchstäblich sperren 943 00:40:25,940 --> 00:40:28,602 mit einer Art Schloss oder etwas über die Spitze so. 944 00:40:28,602 --> 00:40:31,310 Aber das ist eigentlich los, um sein Schlüssel Problem mit Datenbank-Design, 945 00:40:31,310 --> 00:40:34,710 vor allem, wenn Sie haben könnten mehrere Browser, mehrere Laptops, 946 00:40:34,710 --> 00:40:37,450 mehrere Benutzer alle versuchen, Aktualisieren von Informationen auf einmal. 947 00:40:37,450 --> 00:40:40,590 Besonders sensible Informationen wie Finanzinformationen 948 00:40:40,590 --> 00:40:43,350 wobei mit einem Aktienhandel Website, wie Sie bauen, 949 00:40:43,350 --> 00:40:47,270 was, wenn Sie, wie viel Geld überprüfen möchten Sie haben und dann, wenn Sie genug haben, 950 00:40:47,270 --> 00:40:48,490 kaufen einige Lager? 951 00:40:48,490 --> 00:40:50,899 >> Aber was, wenn jemand anderes, hat eine gemeinsame Rechnung mit Ihnen 952 00:40:50,899 --> 00:40:52,690 gleichzeitig versuchen , einige Aktien zu kaufen? 953 00:40:52,690 --> 00:40:55,190 Also, er oder sie ist die Kontrolle der Kontostand, beide von Ihnen 954 00:40:55,190 --> 00:40:57,540 wieder die gleiche Antwort, es gibt keine Milch. 955 00:40:57,540 --> 00:41:00,580 Oder beide der Sie wieder die Antwort, Sie haben 100 $ auf dem Konto. 956 00:41:00,580 --> 00:41:04,680 Sie beide versuchen, die Entscheidung zu treffen, mit einem Anteil von rund Aktien des Unternehmens zu kaufen. 957 00:41:04,680 --> 00:41:06,130 >> Und nun, was passiert? 958 00:41:06,130 --> 00:41:07,140 Sie haben zwei-Aktien? 959 00:41:07,140 --> 00:41:08,420 Sie haben keine Aktien? 960 00:41:08,420 --> 00:41:10,320 Probleme wie das entstehen kann. 961 00:41:10,320 --> 00:41:11,755 Also, wir begegnen, dass. 962 00:41:11,755 --> 00:41:14,630 SQL-Injection-Angriffe, zum Glück, sind etwas, das wir Ihnen helfen, 963 00:41:14,630 --> 00:41:17,430 aber diese sind grausam häufig in diesen Tagen immer noch. 964 00:41:17,430 --> 00:41:18,680 Also, das ist nur ein Beispiel. 965 00:41:18,680 --> 00:41:21,290 Ich mache keine behauptet, dass Harvard-PIN-System ist 966 00:41:21,290 --> 00:41:23,130 anfällig für diese spezielle Angriff. 967 00:41:23,130 --> 00:41:24,160 Wir haben versucht. 968 00:41:24,160 --> 00:41:26,120 Aber, wissen Sie, dass wir ein Feld wie dieses. 969 00:41:26,120 --> 00:41:29,620 Und Yale Net-ID hat eine ähnliche Suche-Bildschirm in diesen Tagen. 970 00:41:29,620 --> 00:41:33,190 Und es stellt sich heraus, dass vielleicht die PIN-System ist in PHP implementiert. 971 00:41:33,190 --> 00:41:37,050 >> Und wenn es were-- es nicht-- sie vielleicht haben Code, der so aussieht. 972 00:41:37,050 --> 00:41:38,210 Sie haben zwei Variablen. 973 00:41:38,210 --> 00:41:42,495 Gib mir den Benutzernamen und Passwort von der Post Super globale Variable 974 00:41:42,495 --> 00:41:43,970 dass wir sprachen über früher. 975 00:41:43,970 --> 00:41:47,310 Vielleicht Harvard hat eine Abfrage wie SELECT Sterne FROM users 976 00:41:47,310 --> 00:41:50,005 wo Benutzernamen entspricht, dass und das Kennwort gleich, dass. 977 00:41:50,005 --> 00:41:51,880 Und beachten Sie, dass ich bin einfach Einstecken in Verwendung 978 00:41:51,880 --> 00:41:55,050 die geschweifte Klammer-Notation von der anderen Tag, der nur in einem Wert Stopfenmittel 979 00:41:55,050 --> 00:41:55,550 Hier. 980 00:41:55,550 --> 00:41:57,449 Ich bin nicht mit der Fragezeichen-Technik. 981 00:41:57,449 --> 00:41:59,240 Ich habe keine Sekunde haben oder dritte Argument. 982 00:41:59,240 --> 00:42:02,350 Ich bin nur wörtlich Konstruieren Sie die Zeichenfolge selbst. 983 00:42:02,350 --> 00:42:04,930 >> Das Problem ist jedoch, dass Wenn jemand wie ein scroob, 984 00:42:04,930 --> 00:42:09,020 Das ist ein Hinweis auf einen Film, meldet sich mit so etwas wie dieses, 985 00:42:09,020 --> 00:42:11,250 und ich habe die Punkte entfernt dass in der Regel vertuschen 986 00:42:11,250 --> 00:42:14,370 Passwörter, was ist, wenn er besonders bösartigen 987 00:42:14,370 --> 00:42:18,860 und sein Passwort vielleicht ist 12345, pro Film namens "Spaceballs" 988 00:42:18,860 --> 00:42:21,970 aber er kritisch Typen ein Apostroph nach der fünf, 989 00:42:21,970 --> 00:42:24,790 dann buchstäblich das Wort oder in den Raum, und dann zitieren, 990 00:42:24,790 --> 00:42:29,160 unquote eins gleich Zitat ein, Beachten Sie aber, er weggelassen, was? 991 00:42:29,160 --> 00:42:32,700 Er hat das Zitat auf der rechten Seite weggelassen und er hat das Zitat auf der linken weggelassen. 992 00:42:32,700 --> 00:42:35,170 >> Denn wenn diese Angreifer scroob die Vermutung, 993 00:42:35,170 --> 00:42:38,160 ist, dass die Menschen, die schrieb, Diese PHP-Code nicht so hell, 994 00:42:38,160 --> 00:42:42,990 vielleicht haben sie nur einige Einzel Anführungszeichen um die Interpolation 995 00:42:42,990 --> 00:42:45,210 einer Variablen in geschweiften Klammern? 996 00:42:45,210 --> 00:42:48,620 Und vielleicht konnte er Art ihre Gedanken zu vervollständigen 997 00:42:48,620 --> 00:42:53,290 für sie, aber in einer Weise, die gehen ihn in die PIN-System gehackt zu lassen. 998 00:42:53,290 --> 00:42:55,310 Mit anderen Worten wird angenommen, dass dies das Code 999 00:42:55,310 --> 00:42:57,140 und wir haben jetzt in dem, was scroob eingegeben stecken. 1000 00:42:57,140 --> 00:42:58,770 Und es ist rot, weil es schlecht ist. 1001 00:42:58,770 --> 00:43:01,310 >> Und das zugrunde liegende Text ist, was er tippte, 1002 00:43:01,310 --> 00:43:05,510 scroob könnte Harvard-Server überlisten in den Bau einer SQL-Abfrage 1003 00:43:05,510 --> 00:43:07,440 Zeichenfolge, die wie folgt aussieht. 1004 00:43:07,440 --> 00:43:11,760 Kennwort entspricht 12345 oder eins gleich eins. 1005 00:43:11,760 --> 00:43:14,820 Das Ergebnis davon, logisch ist, dass dies scroob log 1006 00:43:14,820 --> 00:43:18,360 in, wenn sein Passwort 12345 oder wenn eine equals 1007 00:43:18,360 --> 00:43:22,660 ein, was natürlich ist immer wahr, was bedeutet, scroob in bekommt immer. 1008 00:43:22,660 --> 00:43:26,060 >> Und ja, die Art und Weise zu beheben wird, wie in vielen Fällen, 1009 00:43:26,060 --> 00:43:28,140 wäre die Verteidigung zu schreiben. 1010 00:43:28,140 --> 00:43:30,390 So etwas wie nutzen Sie unser eigentliche Abfrage-Funktion, die 1011 00:43:30,390 --> 00:43:33,980 Sie werden in PSet7, wo wir stecken in zu sehen so etwas wie Fragezeichen hier. 1012 00:43:33,980 --> 00:43:35,980 Und die Schönheit der Abfragefunktion, die wir 1013 00:43:35,980 --> 00:43:40,010 Ihnen ist es gegen diese verteidigt so genannte SQL-Injection-Angriffe, in denen 1014 00:43:40,010 --> 00:43:44,260 jemand trickst Ihren Code in Einspritzen von seinen eigenen SQL-Code. 1015 00:43:44,260 --> 00:43:47,380 Denn das, was die Abfragefunktion wir geben Sie tatsächlich tun, 1016 00:43:47,380 --> 00:43:51,270 wenn Sie auf das Fragezeichen-Syntax verwenden und ein zweites und ein drittes Argument Hier 1017 00:43:51,270 --> 00:43:54,590 ist, was hat sie, um das Add Eingang, dass der Benutzer zur Verfügung gestellt? 1018 00:43:54,590 --> 00:43:56,060 Diejenigen, Backslash zitiert. 1019 00:43:56,060 --> 00:43:58,590 >> Also, jeder potenziell entweicht es gefährliche Zeichen. 1020 00:43:58,590 --> 00:44:01,000 Das sieht jetzt komisch, aber es ist nicht gefährdet 1021 00:44:01,000 --> 00:44:03,260 weil es nicht der Fall ist ändern Sie die Logik mehr 1022 00:44:03,260 --> 00:44:06,470 denn das ganze Passwort jetzt ein Apostroph, das nicht, 1023 00:44:06,470 --> 00:44:07,596 in der Tat, vergessen scroob ist. 1024 00:44:07,596 --> 00:44:09,845 Also, es ist schon einige Witze darüber im Laufe der Jahre. 1025 00:44:09,845 --> 00:44:12,570 So, das war ein Foto, das irgend Aussenseiter in einem Parkplatz 1026 00:44:12,570 --> 00:44:16,620 wobei Sie wissen vielleicht, dass einige Städte und Staaten versuchen, Ihre Lizenz zu scannen 1027 00:44:16,620 --> 00:44:19,460 Platte an Sie oder an Ticket berechnen Ihnen wenn Sie durch gehen, ohne, wie, 1028 00:44:19,460 --> 00:44:20,660 die E-Z-Pass Sache. 1029 00:44:20,660 --> 00:44:24,490 Also, diese Person vermutet, dass vielleicht die Menschen, das Schreiben der E-Z-Pass-System 1030 00:44:24,490 --> 00:44:28,240 waren nicht so hell, und vielleicht haben sie gemeinsam eine Kette nur verkettet, 1031 00:44:28,240 --> 00:44:32,190 so dass er oder sie konnte nicht böswillig nicht nur den Abschluss ihrer Gedanken, 1032 00:44:32,190 --> 00:44:35,150 aber eigentlich führen eine schlechte Befehl, die wir noch nicht haben erwähnt, 1033 00:44:35,150 --> 00:44:36,380 aber Sie können sich wahrscheinlich vorstellen. 1034 00:44:36,380 --> 00:44:39,820 Dass zusätzlich zu löschen und einfügen und aktualisieren, und wählen Sie, 1035 00:44:39,820 --> 00:44:43,370 es gibt auch ein Stichwort genannt Tropfen, die buchstäblich alles löscht 1036 00:44:43,370 --> 00:44:45,300 in der Datenbank, die Besonders schlimm ist. 1037 00:44:45,300 --> 00:44:48,760 >> Wir können auf diese Option, wenn heran es ist ein wenig schwer zu finden. 1038 00:44:48,760 --> 00:44:52,300 Dies nun ist eine berühmte Comic- das ist jetzt wunderbar klug 1039 00:44:52,300 --> 00:44:53,145 und verständlich. 1040 00:44:53,145 --> 00:45:00,880 1041 00:45:00,880 --> 00:45:04,750 >> [Gelächter] 1042 00:45:04,750 --> 00:45:05,910 >> Ja, cool. 1043 00:45:05,910 --> 00:45:06,800 Art geeking aus. 1044 00:45:06,800 --> 00:45:08,800 Also das sind dann SQL-Injection-Angriffe. 1045 00:45:08,800 --> 00:45:13,050 Und sie sind so einfach, unter Verwendung zu vermeiden der richtige Code oder die richtigen Bibliotheken. 1046 00:45:13,050 --> 00:45:15,947 Und du wirst in PSet7 zu sehen, das ist, Deshalb geben wir Ihnen die Abfragefunktion. 1047 00:45:15,947 --> 00:45:17,780 Also, ein paar Teaser dass wir dachten, wir würden 1048 00:45:17,780 --> 00:45:19,930 geben Ihnen hier in unserem verbleibenden Minuten zusammen. 1049 00:45:19,930 --> 00:45:24,030 So, wie Sie sich erinnern von Woche null, wir führte diese zwei Glühbirnen die 1050 00:45:24,030 --> 00:45:26,610 sind schön, nicht nur, weil sie sind ziemlich und sind bunt, 1051 00:45:26,610 --> 00:45:29,450 sondern weil sie etwas zu unterstützen genannt API eine Anwendung 1052 00:45:29,450 --> 00:45:31,980 Programmierschnittstelle und in CS50 bisher, haben wir 1053 00:45:31,980 --> 00:45:34,440 meist konzentrierte sich auf GET und POST, aber es stellt sich heraus, 1054 00:45:34,440 --> 00:45:37,390 es gibt andere HTTP-Verben wie PUT. 1055 00:45:37,390 --> 00:45:39,430 >> Und in der Tat war dies eine Rutsche von Woche null 1056 00:45:39,430 --> 00:45:44,930 wobei, wenn Sie Code schreiben, dass sendet a la PSet6 eine HTTP-Anforderung, 1057 00:45:44,930 --> 00:45:49,647 sieht mit diesem Stück Text an der Unterseite, die aufgerufen JSON wird, 1058 00:45:49,647 --> 00:45:52,230 oder JavaScript Object Notation dass wir über die nächsten Wochen zu sprechen, 1059 00:45:52,230 --> 00:45:57,030 können Sie aktivieren oder deaktivieren oder ändern die Farbe der Lichter, wie sie. 1060 00:45:57,030 --> 00:46:00,480 Also, wenn CS50 hat auch zusätzlich zu einigen dieser Glühbirnen hier in New Haven 1061 00:46:00,480 --> 00:46:02,480 wenn Sie möchten, zu leihen sie für die Abschlussarbeiten, 1062 00:46:02,480 --> 00:46:04,370 Auch einige Microsoft Bands, die wie sind 1063 00:46:04,370 --> 00:46:07,619 Uhren, dass man um das Handgelenk tragen daß in ähnlicher Weise über eine API, so dass Sie 1064 00:46:07,619 --> 00:46:10,040 können Sie Ihre eigenen Software für sie zu schreiben. 1065 00:46:10,040 --> 00:46:12,490 >> Wir haben ein Konto bei Apples iOS-Code, so 1066 00:46:12,490 --> 00:46:15,510 dass, wenn Sie ein Apple-Uhr oder ein iPhone oder ein iPad oder einen iPod, 1067 00:46:15,510 --> 00:46:17,707 können Sie Code schreiben, dass tatsächlich läuft auf jene. 1068 00:46:17,707 --> 00:46:19,540 Wir haben eine ganze Reihe von Arduinos, das sind 1069 00:46:19,540 --> 00:46:22,010 winzigen Computern ohne Fällen im Wesentlichen wissen, 1070 00:46:22,010 --> 00:46:25,240 dass Sie über USB anschließen, in der Regel eigene Mac oder PC, 1071 00:46:25,240 --> 00:46:28,810 Code schreiben, die auf diesen physischen läuft Geräte, die oft Sensoren auf sie 1072 00:46:28,810 --> 00:46:30,790 so können Sie mit der realen Welt interagieren. 1073 00:46:30,790 --> 00:46:32,860 Wir haben eine ganze Reihe von Leap Motion-Geräte, 1074 00:46:32,860 --> 00:46:36,500 USB-Geräte, die für Macs sind und PCs, hier wieder in New Haven. 1075 00:46:36,500 --> 00:46:40,080 Und wenn Sie es mit Ihrem Mac verbinden, Sie tatsächlich kontrollieren können Ihren Computer 1076 00:46:40,080 --> 00:46:42,550 durch Schreiben von Software- dass über Infrarotstrahlen, 1077 00:46:42,550 --> 00:46:46,360 findet heraus, wo Ihre menschliche Hände, sogar ohne Berührung der Tastatur. 1078 00:46:46,360 --> 00:46:49,135 Wir dachten, wir würden einen schnellen teilen Einblick in diese, zum Beispiel. 1079 00:46:49,135 --> 00:46:51,428 >> [Musikwiedergabe] 1080 00:46:51,428 --> 00:47:55,840 1081 00:47:55,840 --> 00:47:57,590 Also, wir haben eine ganze Bündel von diesen Dingen, 1082 00:47:57,590 --> 00:48:01,040 Auch genannt Myo Armbinden die Sie über den Unterarm gelegt 1083 00:48:01,040 --> 00:48:04,595 und dann können Sie die wirkliche Kontrolle Welt oder die virtuelle Welt wie diese. 1084 00:48:04,595 --> 00:48:06,471 >> [Musikwiedergabe] 1085 00:48:06,471 --> 00:49:17,580 1086 00:49:17,580 --> 00:49:20,920 Oder haben wir auch einige Google Pappe, die buchstäblich ist, wie, 1087 00:49:20,920 --> 00:49:24,841 ein Karton konnte man am stellen Sie Ihre Gesicht, aber Folie in Ihr Telefon in es 1088 00:49:24,841 --> 00:49:27,590 so dass Sie das Glas legen Sie Ihre Handy wirklich nah an die Augen. 1089 00:49:27,590 --> 00:49:30,190 Und Google Karton ist ziemlich billig bei $ 10 oder $ 20. 1090 00:49:30,190 --> 00:49:32,230 Und es hat wenig Linsen dass etwas weg Verschiebung 1091 00:49:32,230 --> 00:49:35,900 das Bild auf dem Bildschirm für die menschliche Augen, um Ihnen ein Gefühl der Tiefe zu geben 1092 00:49:35,900 --> 00:49:39,550 so dass Sie tatsächlich eine 3D- Umwelt vor Ihnen. 1093 00:49:39,550 --> 00:49:42,927 Wir haben auch einige Samsung Getriebe, das ist das teurere Version davon, 1094 00:49:42,927 --> 00:49:46,010 sondern kann in ähnlicher Weise in ein Schieben Android-Handy und geben Ihnen die Illusion 1095 00:49:46,010 --> 00:49:48,309 von-- oder die Erfahrung der virtuellen Realität. 1096 00:49:48,309 --> 00:49:50,850 Und in unserer letzten zwei Minuten, Wir dachten, wir würden versuchen, dies zu tun. 1097 00:49:50,850 --> 00:49:55,250 Wenn ich zu projizieren, was Colton hat Hier, nur um Ihren Appetit anzuregen, 1098 00:49:55,250 --> 00:49:58,442 lassen Sie mich gehen Sie vor und werfen up auf der großen Leinwand hier. 1099 00:49:58,442 --> 00:49:59,400 Lassen Sie mich das Licht zu töten. 1100 00:49:59,400 --> 00:50:02,290 Colton, möchten Sie weitermachen wollen, und auf Ihr Handy legte für einen Moment 1101 00:50:02,290 --> 00:50:05,171 und kommen auf mehr als auf die Mitte der Bühne? 1102 00:50:05,171 --> 00:50:07,420 Und wissen Sie, um project-- möchten dies ist, was Colton sieht. 1103 00:50:07,420 --> 00:50:10,560 >> Nun, die Wi-Fi in hier nicht so stark für diese Vorrichtung 1104 00:50:10,560 --> 00:50:13,870 dass dies ist super überzeugende, aber Colton ist buchstäblich 1105 00:50:13,870 --> 00:50:15,710 in diesem magischen Ort, futuristisch. 1106 00:50:15,710 --> 00:50:16,796 Er sieht nur ein Bild. 1107 00:50:16,796 --> 00:50:19,920 Sie sah seine linke und rechte Auge dass sein Gehirn zusammen nähen 1108 00:50:19,920 --> 00:50:22,260 in einem dreidimensionalen Umwelt auf seinem Gesicht. 1109 00:50:22,260 --> 00:50:24,319 Er ist gerade ausgewählten Menüoption hier. 1110 00:50:24,319 --> 00:50:27,360 Und so wieder, er trägt dieses Headset mit einem Samsung Handy auf sie, das ist 1111 00:50:27,360 --> 00:50:29,080 drahtlos, unsere Gemein vorsteht. 1112 00:50:29,080 --> 00:50:30,349 Jetzt sind Sie auf dem Mars, ich denke? 1113 00:50:30,349 --> 00:50:31,140 COLTON: Ich denke schon. 1114 00:50:31,140 --> 00:50:32,181 Ich bin nicht sicher [unverständlich]. 1115 00:50:32,181 --> 00:50:34,250 [Gelächter] 1116 00:50:34,250 --> 00:50:36,374 >> DAVID MALAN: Stellt sich heraus, Mars hat diese Menüs. 1117 00:50:36,374 --> 00:50:41,590 >> COLTON: [unverständlich] ein paar coole Orte, wenn wir zu gehen zu-- möchten 1118 00:50:41,590 --> 00:50:43,330 >> DAVID MALAN: Wo wollen wir hin? 1119 00:50:43,330 --> 00:50:45,837 >> COLTON: [unverständlich] 1120 00:50:45,837 --> 00:50:48,170 DAVID MALAN: Und mal sehen, wo Coltons jetzt unter uns. 1121 00:50:48,170 --> 00:50:48,961 COLTON: [unverständlich] 1122 00:50:48,961 --> 00:50:52,830 1123 00:50:52,830 --> 00:50:56,380 >> DAVID MALAN: Also, es gibt so viele verschiedenen Orten können Sie sich selbst zu nehmen. 1124 00:50:56,380 --> 00:51:00,590 Es gibt FAPIs über den Sie Schreiben Spiele oder Wechselwirkungen, 1125 00:51:00,590 --> 00:51:01,950 laufen letztlich auf dem Handy. 1126 00:51:01,950 --> 00:51:03,908 Also, Sie haben wirklich nur Schreiben eines Handy App. 1127 00:51:03,908 --> 00:51:06,380 Aber dank der Software- und die Grafik-Fähigkeiten, 1128 00:51:06,380 --> 00:51:08,765 Jetzt Colton ist in diesem winzig kleine Häuschen. 1129 00:51:08,765 --> 00:51:10,515 Und auf die Gefahr uns überfordern, 1130 00:51:10,515 --> 00:51:13,330 Colton, und ich werde bleiben, um für während am Ende der Klasse heute hier 1131 00:51:13,330 --> 00:51:14,300 wenn Sie möchten, zu kommen und zu spielen. 1132 00:51:14,300 --> 00:51:16,350 Und wir werden sie bringen nächste Woche auch. 1133 00:51:16,350 --> 00:51:18,420 Ohne weitere, ado Das war es für heute. 1134 00:51:18,420 --> 00:51:21,990 Wir sehen uns nächste Woche. 1135 00:51:21,990 --> 00:51:24,140 >> [MUSIC - RAGGA TWINS "schlechter Mensch"] 1136 00:51:24,140 --> 00:55:23,146