1 00:00:00,000 --> 00:00:03,493 >> [Musikwiedergabe] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: In unseren Videos auf Web-Entwicklung Themen, 4 00:00:07,100 --> 00:00:10,560 Wir haben das Konzept der genannten eine Datenbank, ein paar Mal, nicht wahr? 5 00:00:10,560 --> 00:00:12,700 So eine Datenbank Sie wahrscheinlich von den vertrauten 6 00:00:12,700 --> 00:00:15,780 sagen, mit Microsoft Excel oder Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Es ist wirklich nur eine organisierte Satz von Tabellen, Zeilen und Spalten. 8 00:00:20,650 --> 00:00:23,140 >> Und eine Datenbank ist, wo unserer Website speichert 9 00:00:23,140 --> 00:00:26,760 Informationen, die wichtig ist, für unsere Website, um richtig zu arbeiten. 10 00:00:26,760 --> 00:00:30,150 Wieder ein wirklich typisches Beispiel hier speichert Benutzernamen und Passwörter 11 00:00:30,150 --> 00:00:32,824 in einer Datenbank, so dass, wenn ein Benutzer an unserer Website, 12 00:00:32,824 --> 00:00:36,690 die Datenbank abgefragt werden, um zu sehen wenn der Benutzer in der Datenbank existiert. 13 00:00:36,690 --> 00:00:39,260 Und wenn ja, Überprüfen, dass sein Passwort richtig ist. 14 00:00:39,260 --> 00:00:43,420 Und wenn ihr Passwort richtig ist, dann können wir sie, was auch immer Seite geben 15 00:00:43,420 --> 00:00:45,370 sie anfordert. 16 00:00:45,370 --> 00:00:48,590 >> So sind Sie wahrscheinlich wieder vertraut mit dieser Idee von Excel oder Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheets. 18 00:00:49,430 --> 00:00:52,980 Wir haben Datenbanken, Tabellen, Zeilen und Spalten. 19 00:00:52,980 --> 00:00:56,450 Und das ist wirklich Art der Fundamentalmenge 20 00:00:56,450 --> 00:00:58,470 hierarchischer Gliederung hier. 21 00:00:58,470 --> 00:00:59,800 Also hier ist eine Excel-Tabelle. 22 00:00:59,800 --> 00:01:02,640 Und wenn Sie jemals diese geöffnet haben oder ein anderes ähnliches Programm 23 00:01:02,640 --> 00:01:06,780 Sie wissen, dass diese hier rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Dies sind Spalten. 25 00:01:08,760 --> 00:01:11,790 >> Vielleicht hier unten, obwohl Sie diese Funktion nicht verwenden furchtbar much-- 26 00:01:11,790 --> 00:01:15,370 Ich werde heran in-- wir Diese Idee eines Blattes. 27 00:01:15,370 --> 00:01:17,930 Also vielleicht diese Blätter, wenn Ich abwechselnd vor und zurück, 28 00:01:17,930 --> 00:01:21,600 sind verschiedene Tabellen, dass existieren in meiner Datenbank. 29 00:01:21,600 --> 00:01:25,210 Und wenn wir das Beispiel alle weiter der Weg, den Namen der Datenbank 30 00:01:25,210 --> 00:01:26,940 Book 1 ist. 31 00:01:26,940 --> 00:01:28,710 Vielleicht habe ich Buch 2 und 3 Buch. 32 00:01:28,710 --> 00:01:33,270 So dass jeder Excel-Datei ist eine Datenbank ist jedes Blatt eine Tabelle, 33 00:01:33,270 --> 00:01:39,530 und innerhalb jeder Tabelle Ich habe Diese Vorstellung von Zeilen und Spalten. 34 00:01:39,530 --> 00:01:41,900 >> So, wie ich mit dieser Datenbank arbeiten? 35 00:01:41,900 --> 00:01:43,630 Wie erhalte ich Informationen von ihm? 36 00:01:43,630 --> 00:01:47,540 Nun gibt es eine Sprache namens SQL-- die ich in der Regel nur nennen Sequel-- 37 00:01:47,540 --> 00:01:50,010 und es steht für die Strukturierte Abfragesprache. 38 00:01:50,010 --> 00:01:52,981 Und es ist eine Programmiersprache, aber es ist eine ziemlich begrenzte Programmier 39 00:01:52,981 --> 00:01:53,480 Sprache. 40 00:01:53,480 --> 00:01:56,407 Es ist nicht ganz wie andere dass wir mit gearbeitet. 41 00:01:56,407 --> 00:01:58,240 Aber der Zweck dieser Programmiersprache 42 00:01:58,240 --> 00:02:01,570 ist, eine Datenbank abzufragen, zu fragen Daten von einer Datenbank, 43 00:02:01,570 --> 00:02:04,480 finden Sie Informationen in ein Datenbank, und so weiter. 44 00:02:04,480 --> 00:02:08,449 >> Wir haben auch in CS50-- und es ist eine sehr gemeinsame Plattform, es heißt MySQL. 45 00:02:08,449 --> 00:02:10,600 Das ist, was wir in den Kurs. 46 00:02:10,600 --> 00:02:12,880 Es ist ein Open-Source- Plattform, stellt 47 00:02:12,880 --> 00:02:16,732 eine sogenannte relationale database-- eine Datenbank, effektiv. 48 00:02:16,732 --> 00:02:18,440 Wir brauchen nicht zu bekommen, zu sehr ins Detail 49 00:02:18,440 --> 00:02:20,930 auf welcher eine relationale Datenbank ist. 50 00:02:20,930 --> 00:02:24,650 Aber die SQL-Sprache ist sehr geschickt im Arbeits 51 00:02:24,650 --> 00:02:29,760 mit MySQL und andere ähnliche Arten von relationalen Datenbanken. 52 00:02:29,760 --> 00:02:34,010 >> Und viele Installationen MySQL etwas einfallen 53 00:02:34,010 --> 00:02:37,760 phpMyAdmin aufgerufen, die ist eine grafische Benutzer 54 00:02:37,760 --> 00:02:40,970 interface-- eine GUI-- dass macht es ein wenig mehr 55 00:02:40,970 --> 00:02:44,410 benutzerfreundlich ausführen Datenbankabfragen, 56 00:02:44,410 --> 00:02:48,980 weil Datenbanken werden nicht nur verwendet, durch fortgeschrittene Programmierer, nicht wahr? 57 00:02:48,980 --> 00:02:51,510 Manchmal gibt es diese kleinen Unternehmen, 58 00:02:51,510 --> 00:02:53,900 und sie nicht sich leisten können, mieten Sie ein Team von Programmierern, 59 00:02:53,900 --> 00:02:56,700 aber sie müssen noch zu speichern Informationen in einer Datenbank. 60 00:02:56,700 --> 00:02:59,300 >> So etwas wie phpMyAdmin macht es für jemanden sehr einfach 61 00:02:59,300 --> 00:03:03,630 wer noch nie zuvor programmiert abholen und sich mit, wie vertraut 62 00:03:03,630 --> 00:03:07,710 um mit einer Datenbank zu arbeiten. 63 00:03:07,710 --> 00:03:11,800 Das Problem ist, phpMyAdmin, während es ist ein fantastisches Werkzeug für das Lernen 64 00:03:11,800 --> 00:03:14,850 über Datenbanken, ist es Handbuch. 65 00:03:14,850 --> 00:03:18,050 Sie werden sich anmelden zu müssen es und Ausführen von Befehlen und geben Sie 66 00:03:18,050 --> 00:03:19,910 Dinge in Hand. 67 00:03:19,910 --> 00:03:23,160 >> Und wie wir wissen aus unserer Beispiel für PHP Web-Programmierung, 68 00:03:23,160 --> 00:03:26,550 mit manuell zu tun Dinge auf unserer Website, 69 00:03:26,550 --> 00:03:30,970 wenn wir wollen, ein dynamisches, aktiv reagiert Website, vielleicht nicht der beste Ansatz. 70 00:03:30,970 --> 00:03:33,980 Wir möchten, einen Weg zu finden, vielleicht automatisieren das irgendwie. 71 00:03:33,980 --> 00:03:37,864 Und SQL ermöglicht es uns, dies zu tun. 72 00:03:37,864 --> 00:03:39,780 Also, wenn wir zu gehen Beginn der Arbeit mit SQL, 73 00:03:39,780 --> 00:03:41,220 müssen wir zunächst eine haben Datenbank zu arbeiten. 74 00:03:41,220 --> 00:03:42,510 Erstellen einer Datenbank etwas, das Sie wahrscheinlich 75 00:03:42,510 --> 00:03:45,350 wird in phpMyAdmin tun, denn Sie werden nur einmal tun müssen, 76 00:03:45,350 --> 00:03:49,690 und die Syntax dafür ist viel einfacher. 77 00:03:49,690 --> 00:03:51,940 Es ist viel einfacher, es zu tun in einer grafischen Benutzeroberfläche 78 00:03:51,940 --> 00:03:53,520 als durch Tippen und es als Befehl. 79 00:03:53,520 --> 00:03:55,186 Der Befehl kann ein wenig umständlich zu bekommen. 80 00:03:55,186 --> 00:03:58,889 In ähnlicher Weise eine Tabelle erstellen kann bekommen ziemlich umständlich als auch. 81 00:03:58,889 --> 00:04:01,930 Und so Dinge wie der Erstellung einer Datenbank und Erstellen einer Tabelle, die Sie 82 00:04:01,930 --> 00:04:06,270 wohl nur tun once-- einmal pro Tisch, einmal pro database-- 83 00:04:06,270 --> 00:04:09,040 es ist OK, dass in zu tun eine graphische Schnittstelle. 84 00:04:09,040 --> 00:04:11,570 Im Verfahren Erstellen einer Tabelle, werden Sie 85 00:04:11,570 --> 00:04:14,840 auch auf alle angeben Spalten, die in der Tabelle wird. 86 00:04:14,840 --> 00:04:18,149 Welche Art von Informationen zu tun Sie in der Tabelle gespeichert werden sollen? 87 00:04:18,149 --> 00:04:24,520 Vielleicht Namen und Geburtsdatum eines Benutzers, Passwort, Benutzer-ID-Nummer, und vielleicht 88 00:04:24,520 --> 00:04:26,170 Stadt und Staat, nicht wahr? 89 00:04:26,170 --> 00:04:30,080 >> Und für jedes Mal, wenn wir einen Benutzer hinzufügen möchten, auf die Datenbank, möchten wir alle sechs erhalten 90 00:04:30,080 --> 00:04:31,890 dieser Informationsteile. 91 00:04:31,890 --> 00:04:34,840 Und wir tun, dass durch Zugabe von Zeilen in der Tabelle. 92 00:04:34,840 --> 00:04:37,800 So dass wir zuerst eine Datenbank, dann werden wir eine Tabelle zu erstellen. 93 00:04:37,800 --> 00:04:40,100 Im Rahmen der Erstellung eine Tabelle, die wir gefragt werden, 94 00:04:40,100 --> 00:04:44,280 jede Spalte festlegen, dass wir würden in dieser Tabelle möchten. 95 00:04:44,280 --> 00:04:47,247 Und dann, als wir beginnen, hinzufügen Informationen zur Datenbank 96 00:04:47,247 --> 00:04:49,580 und die Datenbank abfragen mehr generally-- nicht nur das Hinzufügen, 97 00:04:49,580 --> 00:04:51,610 aber alles, was wir do-- Wir werden tun 98 00:04:51,610 --> 00:04:58,870 mit Reihen der Tabelle, die man Benutzerinformation aus dem gesamten Satz. 99 00:04:58,870 --> 00:05:03,210 >> Also jedes SQL-Spalte in der Lage ist, Halten von Daten von einem bestimmten Datentyp. 100 00:05:03,210 --> 00:05:06,560 Also haben wir eine Art beseitigt diese Vorstellung von Datentypen in PHP, 101 00:05:06,560 --> 00:05:08,747 aber sie sind wieder hier in SQL. 102 00:05:08,747 --> 00:05:10,080 Und es gibt eine Menge von Datentypen. 103 00:05:10,080 --> 00:05:13,420 Hier ist nur 20 von ihnen, aber es ist nicht einmal alle von ihnen. 104 00:05:13,420 --> 00:05:16,240 So haben wir Ideen wie INTs-- Integers-- wir wahrscheinlich wissen, 105 00:05:16,240 --> 00:05:17,760 Diese Kolonne kann ganze Zahlen zu halten. 106 00:05:17,760 --> 00:05:21,077 Und es gibt Variationen thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Vielleicht nicht immer müssen wir vier Bissen. 108 00:05:22,660 --> 00:05:26,800 Vielleicht brauchen wir acht Bytes, und so haben wir können diese Veränderungen auf ganze Zahlen verwenden 109 00:05:26,800 --> 00:05:28,510 ein bisschen mehr Platz effizient. 110 00:05:28,510 --> 00:05:31,899 Wir können Dezimalzahlen tun, werden wir tun können Gleitkommazahlen. 111 00:05:31,899 --> 00:05:32,940 Diese sind ziemlich ähnlich. 112 00:05:32,940 --> 00:05:34,773 Gibt es einige Unterschiede, und wenn Sie möchten 113 00:05:34,773 --> 00:05:37,330 Lust zum Nachschlagen der SQL Art von Führung, die Sie 114 00:05:37,330 --> 00:05:40,670 kann sehen, was die leichte Unterschiede zwischen ihnen. 115 00:05:40,670 --> 00:05:43,250 >> Vielleicht speichern möchten wir Informationen zu Datum und Uhrzeit. 116 00:05:43,250 --> 00:05:47,047 Vielleicht sind wir die Verfolgung von wenn der Benutzer unserer Website verbunden sind, 117 00:05:47,047 --> 00:05:48,880 und so vielleicht wollen wir um eine Spalte, die es haben 118 00:05:48,880 --> 00:05:52,820 ein Datum, Zeit oder einen Zeitstempel, zeigt an, wenn der Benutzer tatsächlich 119 00:05:52,820 --> 00:05:54,130 hat sich registriert. 120 00:05:54,130 --> 00:05:56,132 Wir können Geometrien und Linienfolgen zu tun. 121 00:05:56,132 --> 00:05:57,340 Das ist eigentlich ziemlich cool. 122 00:05:57,340 --> 00:06:01,410 Wir könnten eine Karte geographisches Gebiet mit 123 00:06:01,410 --> 00:06:05,110 GIS-Koordinaten des Grundstückes aus einer Fläche. 124 00:06:05,110 --> 00:06:08,580 So kann tatsächlich zu speichern diese Art von Informationen in einer SQL Spalte. 125 00:06:08,580 --> 00:06:11,390 >> TEXT ist nur Riesen Blobs von Text, vielleicht. 126 00:06:11,390 --> 00:06:12,840 ENUMs sind irgendwie interessant. 127 00:06:12,840 --> 00:06:16,080 Sie in C tatsächlich vorhanden Wir tun nicht reden über sie, weil sie nicht 128 00:06:16,080 --> 00:06:19,110 furchtbar häufig verwendet, zumindest CS50. 129 00:06:19,110 --> 00:06:22,680 Aber es ist ein Aufzählungsdatentyp, der ist fähig, beschränkt Werte. 130 00:06:22,680 --> 00:06:25,940 >> Hier ein wirklich gutes Beispiel wäre, um eine Enumeration zu schaffen, wo die sieben 131 00:06:25,940 --> 00:06:29,394 mögliche Werte sind Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, 132 00:06:29,394 --> 00:06:30,060 Samstag, oder? 133 00:06:30,060 --> 00:06:33,311 Das Datentyp Tag Woche nicht vorhanden ist, 134 00:06:33,311 --> 00:06:35,310 aber wir konnten ein erstellen Aufzählungsdatentyp wie 135 00:06:35,310 --> 00:06:39,400 dass diese Spalte immer nur halten einer jener sieben möglichen Werte. 136 00:06:39,400 --> 00:06:44,300 Wir haben alle aufgezählt der möglichen Werte. 137 00:06:44,300 --> 00:06:47,630 >> Dann haben wir CHAR und VARCHAR, und ich habe diese Farbe grün 138 00:06:47,630 --> 00:06:49,505 weil wir eigentlich gehen, um eine zweite zu nehmen 139 00:06:49,505 --> 00:06:51,950 um den Unterschied zu sprechen zwischen diesen beiden Dingen. 140 00:06:51,950 --> 00:06:55,780 So CHAR, im Gegensatz zu C, wo CHAR war ein einzelnes Zeichen, 141 00:06:55,780 --> 00:07:00,730 in SQL ein CHAR bezieht sich auf eine feste Zeichenfolge. 142 00:07:00,730 --> 00:07:02,620 Und wenn wir dies schaffen Spalte, wir tatsächlich 143 00:07:02,620 --> 00:07:05,070 können die Länge des Strings angeben. 144 00:07:05,070 --> 00:07:08,080 >> Also in diesem Beispiel, wir könnten CHAR (10) zu sagen. 145 00:07:08,080 --> 00:07:11,190 Das bedeutet, daß jedes Element dieser Spalte 146 00:07:11,190 --> 00:07:13,910 wird von 10 Bytes an Informationen bestehen. 147 00:07:13,910 --> 00:07:15,770 Nicht mehr, nicht weniger. 148 00:07:15,770 --> 00:07:21,780 Also, wenn wir versuchen, in einem 15 gesetzt Bit oder eine 15 Zeichen Element 149 00:07:21,780 --> 00:07:25,340 oder der Wert in dieser Spalte wir nur bekommen die ersten 10. 150 00:07:25,340 --> 00:07:27,290 Wenn wir in den beiden setzen Zeichen langen Wert, 151 00:07:27,290 --> 00:07:30,700 wir werden die beiden haben Zeichen und dann acht null Stichen. 152 00:07:30,700 --> 00:07:34,990 Wir werden nie effizienter sein als das. 153 00:07:34,990 --> 00:07:37,727 >> Ein VARCHAR ist eine Art, wie unsere Vorstellung von einem String 154 00:07:37,727 --> 00:07:39,560 dass wir kennen mit von C oder von PHP. 155 00:07:39,560 --> 00:07:40,830 Es ist eine Zeichenfolge variabler Länge. 156 00:07:40,830 --> 00:07:42,560 Und wenn Sie zu erstellen diese Spalte, die Sie gerade 157 00:07:42,560 --> 00:07:44,860 geben Sie die maximal mögliche Länge. 158 00:07:44,860 --> 00:07:49,065 Also vielleicht 99 oder allgemein 255. 159 00:07:49,065 --> 00:07:50,440 Das würde die maximale Länge sein. 160 00:07:50,440 --> 00:07:52,890 Und so, wenn wir die Speicherung 15 Zeichenkette, 161 00:07:52,890 --> 00:07:56,157 wir 15 Byte verwenden würden, vielleicht 16 Byte für den Nullterminator. 162 00:07:56,157 --> 00:07:57,990 Wenn wir die Speicherung ein drei Zeichenkette, 163 00:07:57,990 --> 00:08:01,120 wir drei oder vier Bytes zu verwenden wäre. 164 00:08:01,120 --> 00:08:03,050 Aber wir verwenden würden den vollen 99. 165 00:08:03,050 --> 00:08:05,190 >> Also warum sollten wir beides haben? 166 00:08:05,190 --> 00:08:08,210 Nun, wenn wir brauchen, um herauszufinden, wie lange etwas mit einem VARCHAR, 167 00:08:08,210 --> 00:08:10,680 wir Art von iterate über sie genau wie wir in C hat 168 00:08:10,680 --> 00:08:12,230 und herausfinden, wo sie aufhört. 169 00:08:12,230 --> 00:08:15,920 Während, wenn wir wissen, dass alles, was in dieser Spalte ist 10 Byte, vielleicht 170 00:08:15,920 --> 00:08:19,220 wir wissen, dass die Informationen, die wir springen 10 Byte, 10 Byte, 10 Byte, 10 Byte, 171 00:08:19,220 --> 00:08:21,790 und immer die Anfang der Zeichenfolge. 172 00:08:21,790 --> 00:08:25,210 >> So können wir einige haben verschwendeten Platz mit einem CHAR, 173 00:08:25,210 --> 00:08:28,510 aber vielleicht gibt es einen Handel Aus der mit einer besseren Geschwindigkeit 174 00:08:28,510 --> 00:08:30,160 Navigation in der Datenbank. 175 00:08:30,160 --> 00:08:32,330 Aber vielleicht wollen wir das Flexibilität eines VARCHAR 176 00:08:32,330 --> 00:08:36,710 statt having-- Wenn unsere CHAR war 255, aber die meisten von unseren Nutzern 177 00:08:36,710 --> 00:08:40,537 wurden nur die Eingabe von drei oder vier Bytes wert von Informationen oder drei oder vier 178 00:08:40,537 --> 00:08:41,870 Zeichen im Wert von Informationen. 179 00:08:41,870 --> 00:08:44,324 >> Aber einige Nutzer wurden mit die ganze 255, vielleicht 180 00:08:44,324 --> 00:08:45,990 VARCHAR wäre angemessener da sein. 181 00:08:45,990 --> 00:08:49,840 Es ist eine Art Kompromiss, und in der Regel für die Zwecke der CS50, 182 00:08:49,840 --> 00:08:54,107 Sie brauchen nicht zu viel Sorgen zu machen ob Sie eine CHAR oder VARCHAR verwenden. 183 00:08:54,107 --> 00:08:57,190 Aber in der realen Welt, diese Dinge Sie Rolle, weil alle diese Spalten 184 00:08:57,190 --> 00:08:59,300 nehmen tatsächlichen physischen Raum. 185 00:08:59,300 --> 00:09:04,150 Und physischen Raum, in dem realen Welt, kommt mit einer Prämie. 186 00:09:04,150 --> 00:09:06,800 >> So eine andere Gegenleistung wenn Sie den Aufbau einer Tabelle sind 187 00:09:06,800 --> 00:09:09,840 ist es, eine Spalte auswählen, um sein eine so genannte Primärschlüssel. 188 00:09:09,840 --> 00:09:14,350 Und ein Primärschlüssel ist eine Spalte wo jeder einzelne Wert ist einzigartig. 189 00:09:14,350 --> 00:09:19,980 Und das bedeutet, dass Sie leicht herausgreifen eine einzelne Zeile einfach durch einen Blick 190 00:09:19,980 --> 00:09:22,450 an der Primärschlüssel der Zeile. 191 00:09:22,450 --> 00:09:24,580 So zum Beispiel, Sie in der Regel, mit den Nutzern, 192 00:09:24,580 --> 00:09:27,210 nicht zwei Benutzer, die wollen haben die gleiche Benutzer-ID-Nummer. 193 00:09:27,210 --> 00:09:28,960 Und vielleicht haben Sie viele Informationen, 194 00:09:28,960 --> 00:09:30,793 und vielleicht zwei Benutzer haben die gleiche name-- 195 00:09:30,793 --> 00:09:32,650 Sie John Smith und John Smith. 196 00:09:32,650 --> 00:09:34,520 Das ist nicht unbedingt ein Problem, Da es viele Leute 197 00:09:34,520 --> 00:09:35,830 in der Welt namens John Smith. 198 00:09:35,830 --> 00:09:40,766 Aber wir haben nur eine Benutzer-ID-Nummer 10, eine Benutzer-ID-Nummer 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Wir haben keine zwei Benutzer mit der gleichen Anzahl, 200 00:09:42,640 --> 00:09:46,010 und so vielleicht die Benutzer-ID-Nummern wäre eine gute Primärschlüssel sein. 201 00:09:46,010 --> 00:09:48,610 >> Wir haben keine Vervielfältigung, und wir können nun eindeutig 202 00:09:48,610 --> 00:09:52,619 jede einzelne Zeile zu identifizieren gerade Dazu suchen Sie in dieser Spalte. 203 00:09:52,619 --> 00:09:55,410 Die Wahl Primärschlüssel kann tatsächlich machen nachfolgenden Tabellenoperationen 204 00:09:55,410 --> 00:09:59,710 viel einfacher, weil Sie nutzen können die Tatsache, dass bestimmte Zeilen 205 00:09:59,710 --> 00:10:02,720 sein einzigartiges, oder eine bestimmte Spalte Ihrer Datenbank oder Tabelle 206 00:10:02,720 --> 00:10:06,030 wird einzigartig zu holen sein aus bestimmten Zeilen. 207 00:10:06,030 --> 00:10:08,790 >> Sie können auch einen gemeinsamen Primär Schlüssel, die Sie gelegentlich feststellen, 208 00:10:08,790 --> 00:10:11,720 zu verwenden, die nur eine ist Kombination von zwei Spalten, 209 00:10:11,720 --> 00:10:13,280 ist garantiert eindeutig sein. 210 00:10:13,280 --> 00:10:16,410 Also vielleicht Sie eine haben Spalte, As und Bs ist, 211 00:10:16,410 --> 00:10:19,290 eine Spalte, die ist ein, zwei, und drei, aber Sie werden immer nur 212 00:10:19,290 --> 00:10:23,660 eine einzige A1, eine einzige A2, und so weiter und so fort. 213 00:10:23,660 --> 00:10:28,980 Aber Sie könnten einen B2 haben, ein C2 oder A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 So haben Sie vielleicht mehrere As, multiple Bs, mehrere diejenigen, mehreren Zweien, 215 00:10:32,840 --> 00:10:38,567 aber Sie immer nur kann ein Einzel A1, B2, C3, und so weiter. 216 00:10:38,567 --> 00:10:40,400 Also wie gesagt, ist SQL ein Programmiersprache, 217 00:10:40,400 --> 00:10:42,024 aber es hat eine ziemlich begrenzten Wortschatz. 218 00:10:42,024 --> 00:10:44,880 Es ist nicht ganz so expansiv wie C und PHP und andere Sprachen 219 00:10:44,880 --> 00:10:46,350 dass wir sprechen im Verlauf. 220 00:10:46,350 --> 00:10:49,960 Es ist ausführlicher ein Sprache als das, was wir sind 221 00:10:49,960 --> 00:10:52,789 werde über in sprechen Video-, weil in diesem Video 222 00:10:52,789 --> 00:10:54,830 wir werden darüber reden vier Operationen, dass wir 223 00:10:54,830 --> 00:10:55,720 kann auf eine Tabelle durchzuführen. 224 00:10:55,720 --> 00:10:56,761 >> Es gibt mehr als dies. 225 00:10:56,761 --> 00:10:58,730 Wir können mehr als dies zu tun, aber für unsere Zwecke, 226 00:10:58,730 --> 00:11:02,250 wir sind in der Regel zu sein mit nur vier operations-- Einsatz, 227 00:11:02,250 --> 00:11:05,360 auszuwählen, zu aktualisieren und zu löschen. 228 00:11:05,360 --> 00:11:08,750 Und Sie wahrscheinlich intuitiv erraten was alle vier dieser Dinge zu tun. 229 00:11:08,750 --> 00:11:12,520 Aber wir werden in ein bisschen gehen Details auf jeden einzelnen. 230 00:11:12,520 --> 00:11:15,780 >> So für die Zwecke dieser Video, nehmen wir an, 231 00:11:15,780 --> 00:11:18,870 Wir haben die folgenden zwei Tabellen in einer Datenbank. 232 00:11:18,870 --> 00:11:23,460 Wir haben eine Tabelle namens Benutzer, hat vier columns-- ID-Nummer, Benutzername, 233 00:11:23,460 --> 00:11:25,350 das Kennwort und die vollständigen Namen. 234 00:11:25,350 --> 00:11:27,430 Und wir haben eine zweite Tabelle in derselben Datenbank 235 00:11:27,430 --> 00:11:32,129 genannt Moms, die gerade speichert Informationen über einen Benutzernamen und eine Mutter. 236 00:11:32,129 --> 00:11:33,920 So dass für alle Beispiele In diesem Video werden wir 237 00:11:33,920 --> 00:11:37,945 werden mit dieser Datenbank und nachfolgende Aktualisierungen zu. 238 00:11:37,945 --> 00:11:40,070 Also lassen Sie uns sagen, wir wollen Hinzufügen von Informationen zu einem Tisch. 239 00:11:40,070 --> 00:11:44,460 Das ist, was das Einsatzbetrieb tut. 240 00:11:44,460 --> 00:11:46,550 Bei der Erklärung alle diese Befehle, ich werde 241 00:11:46,550 --> 00:11:48,860 Ihnen eine allgemeine Gerüst zu verwenden, um zu geben. 242 00:11:48,860 --> 00:11:51,661 Denn im Grunde, die Abfragen gehen Blick recht ähnlich, 243 00:11:51,661 --> 00:11:54,660 wir sind gerade dabei sich zu ändern geringfügig unterschiedlichen Informations 244 00:11:54,660 --> 00:11:56,750 um verschiedene Dinge mit der Tabelle zu tun. 245 00:11:56,750 --> 00:11:59,200 >> Also für INSERT, das Skelett sieht irgendwie aus wie diese. 246 00:11:59,200 --> 00:12:02,230 Wir wollen in einfügen eine bestimmte Tabelle. 247 00:12:02,230 --> 00:12:05,290 Dann haben wir eine öffnende Klammer und eine Liste von Spalten 248 00:12:05,290 --> 00:12:08,070 dass wir wollen Werte einfügen kannst. 249 00:12:08,070 --> 00:12:10,974 Schließen Klammern, die Folgende Werte, und dann 250 00:12:10,974 --> 00:12:13,390 wieder, listen wir die Werte Wir wollen in den Tisch zu legen. 251 00:12:13,390 --> 00:12:15,950 >> So ein Beispiel hierfür würde die folgenden werden. 252 00:12:15,950 --> 00:12:19,170 Ich möchte in die Tabelle einfügen Nutzer die folgende columns-- 253 00:12:19,170 --> 00:12:21,010 Benutzername, Passwort und Fullname. 254 00:12:21,010 --> 00:12:25,282 So eine neue Zeile, wo ich Putting in diesen drei Spalten und wir sind 255 00:12:25,282 --> 00:12:30,030 gehen, um in den Werten setzen Newman, USMAIL und Newman. 256 00:12:30,030 --> 00:12:32,730 Also in diesem Fall, ich bin Inbetriebnahme der Klein newman 257 00:12:32,730 --> 00:12:38,710 in den Benutzernamen Säule, das Passwort USMAIL, und der vollständige Name der Hauptstadt N 258 00:12:38,710 --> 00:12:41,940 Newman in die Fullname Spalte. 259 00:12:41,940 --> 00:12:44,240 >> Also hier ist was die Datenbank sah aus wie zuvor. 260 00:12:44,240 --> 00:12:48,250 Hier ist, was die Benutzer auf die Tabelle top aussah, bevor wir dies taten. 261 00:12:48,250 --> 00:12:50,760 Nachdem wir dies ausführen Abfrage, bekommen wir diese. 262 00:12:50,760 --> 00:12:54,790 Wir haben eine neue Zeile in die Tabelle aufgenommen. 263 00:12:54,790 --> 00:12:56,810 Aber beachten Sie diese eine Sache dass ich nicht geben, 264 00:12:56,810 --> 00:12:59,880 aber irgendwie habe ich einen Wert hat für die, die diese 12 ist hier richtig. 265 00:12:59,880 --> 00:13:02,820 Ich habe nicht gesagt, ich wollte setzen ID-Nummer drin. 266 00:13:02,820 --> 00:13:04,900 Ich wollte Benutzernamen setzen, Kennwort Fullname. 267 00:13:04,900 --> 00:13:06,440 Und ich tat, das ist in Ordnung. 268 00:13:06,440 --> 00:13:07,760 >> Aber ich bekam auch dieses 12. 269 00:13:07,760 --> 00:13:09,490 Warum habe ich diese 12? 270 00:13:09,490 --> 00:13:12,904 Nun stellt sich heraus, dass wenn Sie definieren 271 00:13:12,904 --> 00:13:15,570 eine Spalte, die gehen, zu sein Ihre Primärschlüssel, die in der Regel, 272 00:13:15,570 --> 00:13:16,510 wie ich schon sagte, eine ID-Nummer. 273 00:13:16,510 --> 00:13:18,718 Es ist nicht immer notwendig gehen, um eine ID-Nummer zu sein, 274 00:13:18,718 --> 00:13:22,380 aber es ist in der Regel eine gute Idee, ist eine Art von Integer-Wert. 275 00:13:22,380 --> 00:13:25,950 Sie haben die Möglichkeit in phpMyAdmin wenn Sie Ihre Datenbank zu schaffen 276 00:13:25,950 --> 00:13:31,130 oder Ihren Tisch zu setzen Spalte als automatische Inkrementierung. 277 00:13:31,130 --> 00:13:34,520 >> Das ist eine wirklich gute Idee, wenn Sie mit einem Primärschlüssel arbeiten, 278 00:13:34,520 --> 00:13:39,330 weil Sie jeden Wert wollen in dieser Spalte, einzigartig zu sein. 279 00:13:39,330 --> 00:13:43,310 Und wenn Sie vergessen haben, geben Sie es für mehr als eine Person, 280 00:13:43,310 --> 00:13:46,240 Sie haben jetzt eine Situation, in der diese Spalte ist nicht mehr einzigartig. 281 00:13:46,240 --> 00:13:50,200 Sie haben zwei Rohlinge, so können Sie keine mehr eindeutig zu identifizieren eine column-- 282 00:13:50,200 --> 00:13:54,150 oder Sie können nicht mehr eindeutig identifizieren eine Zeile basierend auf dieser Spalte. 283 00:13:54,150 --> 00:13:57,010 Es ist alles verloren ihre Wert als Primärschlüssel. 284 00:13:57,010 --> 00:14:02,010 >> Und so offensichtlich, was ich getan habe, Hier ist die Benutzer-ID konfiguriert 285 00:14:02,010 --> 00:14:07,790 Spalte zur Autoinkrement so dass jeder Mal, wenn ich Informationen zur Tabelle hinzufügen, 286 00:14:07,790 --> 00:14:12,220 es wird mir automatisch zu geben ein Wert für den Primärschlüssel. 287 00:14:12,220 --> 00:14:15,570 So kann ich nie vergessen, es zu tun, weil die Datenbank wird es für mich tun. 288 00:14:15,570 --> 00:14:16,587 Also das ist ganz nett. 289 00:14:16,587 --> 00:14:18,670 Und damit ist, warum wir bekommen 12 drin, weil ich 290 00:14:18,670 --> 00:14:21,772 gesetzt, dass die Säule bis zum Auto-Inkrement. 291 00:14:21,772 --> 00:14:23,730 Wenn ich jemand anderes hinzugefügt es wäre 13, wenn ich hinzugefügt 292 00:14:23,730 --> 00:14:27,890 jemand anderes, es würde 14 usw. sein, und. 293 00:14:27,890 --> 00:14:30,190 >> Lassen Sie uns also nur eine weitere Insertion zu tun. 294 00:14:30,190 --> 00:14:34,530 Wir werden in die Mütter Tabelle einfügen, in insbesondere die Benutzernamen und Mutter 295 00:14:34,530 --> 00:14:37,390 Spalte die Werte Kramer und Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 Und so hatten wir das schon. 297 00:14:39,140 --> 00:14:41,800 Nachdem wir führen Sie, dass SQL-Abfrage, haben wir diese. 298 00:14:41,800 --> 00:14:47,290 Wir haben Kramer und Babs hinzugefügt Kramer auf die Mütter Tisch. 299 00:14:47,290 --> 00:14:48,350 >> Das ist also das Einfügen. 300 00:14:48,350 --> 00:14:51,850 SELECT ist, was wir verwenden, um zu extrahieren Informationen aus der Tabelle. 301 00:14:51,850 --> 00:14:54,390 Das ist also, wie wir bekommen Informationen aus der Datenbank. 302 00:14:54,390 --> 00:14:59,589 Und so SELECT-Befehle sein werden bei der Programmierung sehr häufig verwendet. 303 00:14:59,589 --> 00:15:02,130 Die allgemeine framework-- die allgemeine Skelett sieht wie folgt aus. 304 00:15:02,130 --> 00:15:06,550 Wählen Sie eine Gruppe von Spalten aus ein Tisch, und dann gegebenenfalls 305 00:15:06,550 --> 00:15:11,090 können Sie eine Zustand- angeben oder was wir in der Regel ein Prädikat nennen, 306 00:15:11,090 --> 00:15:13,010 ist in der Regel der Begriff verwenden wir in SQL. 307 00:15:13,010 --> 00:15:16,490 >> Aber es ist im Grunde, was insbesondere Zeilen, die Sie wollen zu bekommen. 308 00:15:16,490 --> 00:15:19,100 Wenn Sie, statt sich wünschen alles, einzugrenzen, 309 00:15:19,100 --> 00:15:20,060 Dieses ist, wo Sie das tun würde. 310 00:15:20,060 --> 00:15:22,777 Und dann gegebenenfalls können Sie auch bestellen nach einer bestimmten Spalte. 311 00:15:22,777 --> 00:15:25,860 Also vielleicht haben Sie die Dinge sortiert haben wollen alphabetisch auf eine Spalte auf der Basis 312 00:15:25,860 --> 00:15:27,540 oder alphabetisch auf einer anderen basiert. 313 00:15:27,540 --> 00:15:30,610 >> Wieder ORDER BY, wo und optional. 314 00:15:30,610 --> 00:15:32,681 Aber sie werden wahrscheinlich useful-- besonders 315 00:15:32,681 --> 00:15:34,680 Wo werden, nützlich zu sein einzugrenzen, so dass Sie nicht tun, 316 00:15:34,680 --> 00:15:37,460 erhalten Sie Ihre gesamte Datenbank und zurück haben, um es zu bearbeiten, erhalten Sie gerade 317 00:15:37,460 --> 00:15:39,300 die Stücke von ihm, dass Sie interessieren. 318 00:15:39,300 --> 00:15:44,932 So zum Beispiel, ich möchten Sie vielleicht wählen ID-Nummer und fullname von den Benutzern. 319 00:15:44,932 --> 00:15:46,140 Also, was könnte diese aussehen? 320 00:15:46,140 --> 00:15:48,270 Also hier ist meine Benutzer-Tabelle. 321 00:15:48,270 --> 00:15:51,080 Ich möchte idnum wählen fullname und von den Benutzern. 322 00:15:51,080 --> 00:15:52,300 Was soll ich bekommen? 323 00:15:52,300 --> 00:15:53,580 Ich werde diese. 324 00:15:53,580 --> 00:15:56,930 Ich habe nicht weiter einzugrenzen, also bin ich immer die ID-Nummer für jede Zeile 325 00:15:56,930 --> 00:16:00,850 und ich bin immer die volle Namen aus jeder Zeile. 326 00:16:00,850 --> 00:16:02,210 >> OK. 327 00:16:02,210 --> 00:16:05,640 Was, wenn ich das Passwort wählen Nutzer WHERE-- so jetzt 328 00:16:05,640 --> 00:16:10,370 Ich füge eine Bedingung, eine predicate-- wobei idnum weniger als 12. 329 00:16:10,370 --> 00:16:13,660 Also hier ist meine Datenbank wieder, meine Benutzer-Tabelle oben. 330 00:16:13,660 --> 00:16:17,030 Was soll ich nur, wenn ich will Wählen Sie diese Informationen, das Passwort, 331 00:16:17,030 --> 00:16:21,550 wobei die Benutzer-ID oder idnum weniger als 12? 332 00:16:21,550 --> 00:16:24,910 Ich werde dies zu umgehen Information zurück, nicht wahr? 333 00:16:24,910 --> 00:16:29,170 Es passiert, dass idnum 10 ist, weniger als 12, ID-Nummer 11 von weniger als 12. 334 00:16:29,170 --> 00:16:32,160 Ich bekomme das Passwort für die Zeilen. 335 00:16:32,160 --> 00:16:33,914 Das ist, was ich bat. 336 00:16:33,914 --> 00:16:34,580 Was ist das? 337 00:16:34,580 --> 00:16:39,170 Was ist, wenn ich will Sterne aus der SELECT- Mütter Tisch, an dem Benutzernamen entspricht Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, wählen Sie die Sterne Sonder Art Platzhalter sogenannte 339 00:16:43,780 --> 00:16:45,670 dass wir verwenden, um alles zu bekommen. 340 00:16:45,670 --> 00:16:48,620 Also sie sagen wählen Benutzername Komma Mutter, die 341 00:16:48,620 --> 00:16:51,060 passiert das einzige zu sein, zwei Spalten dieser Tabelle, 342 00:16:51,060 --> 00:16:53,260 Ich kann einfach wählen star und erhalten Sie alles, was 343 00:16:53,260 --> 00:16:55,030 wo der Benutzername gleich Jerry. 344 00:16:55,030 --> 00:16:59,380 Und so das ist, was ich bekommen würde wenn ich diese bestimmte Abfrage. 345 00:16:59,380 --> 00:17:01,810 >> Jetzt sind Datenbanken groß, weil sie 346 00:17:01,810 --> 00:17:06,074 uns, Informationen vielleicht organisieren ein wenig effizienter als wir 347 00:17:06,074 --> 00:17:06,740 vielleicht anders. 348 00:17:06,740 --> 00:17:10,240 Wir nicht unbedingt zu speichern jede relevante Information 349 00:17:10,240 --> 00:17:12,230 zu einem Benutzer in der gleichen Tabelle. 350 00:17:12,230 --> 00:17:13,730 Wir hatten zwei Tabellen gibt. 351 00:17:13,730 --> 00:17:15,734 >> Wir müssen zu speichern jedermanns Mutter Name, 352 00:17:15,734 --> 00:17:18,900 und vielleicht haben wir nicht die soziale Sicherheit Zahl, haben wir ihr Geburtsdatum. 353 00:17:18,900 --> 00:17:21,819 Das muss nicht immer in der gleichen Tabelle. 354 00:17:21,819 --> 00:17:25,339 Solange wir definieren können, Beziehungen zwischen dem tables-- 355 00:17:25,339 --> 00:17:28,440 und das ist, wo das relationale Datenbank tige Art kommt 356 00:17:28,440 --> 00:17:32,130 in play-- solange wir definieren können, Beziehungen zwischen den Tabellen, 357 00:17:32,130 --> 00:17:35,545 wir Art compartmentalize oder abstrakte Dinge, ein Weg, 358 00:17:35,545 --> 00:17:37,670 wo wir nur die wirklich wichtigen Informationen 359 00:17:37,670 --> 00:17:39,270 wir kümmern uns um in der Tabelle des Benutzers. 360 00:17:39,270 --> 00:17:43,220 Und dann haben wir Zusatzinformationen oder zusätzliche Informationen in anderen Tabellen 361 00:17:43,220 --> 00:17:48,260 dass wir mit der Hauptrück verbinden Benutzer-Tabelle in einer bestimmten Weise. 362 00:17:48,260 --> 00:17:52,200 >> Hier haben wir also diese beiden Tabellen, aber es gibt eine Beziehung zwischen ihnen, 363 00:17:52,200 --> 00:17:53,010 Recht? 364 00:17:53,010 --> 00:17:55,070 Es scheint, wie Benutzernamen könnte etwas sein, 365 00:17:55,070 --> 00:17:59,909 dass die gemeinsam zwischen existiert Diese zwei verschiedenen Tabellen. 366 00:17:59,909 --> 00:18:01,700 So was, wenn wir jetzt haben, eine Situation, wo wir 367 00:18:01,700 --> 00:18:06,046 wollen den vollständigen Namen des Benutzers aus zu bekommen des Benutzers Tisch, und ihre Mutter 368 00:18:06,046 --> 00:18:07,170 Namen von der Mutter-Tabelle? 369 00:18:07,170 --> 00:18:10,960 Wir haben nicht einen Weg, um dass, wie es steht, nicht wahr? 370 00:18:10,960 --> 00:18:17,790 Es gibt keinen einzigen Tabelle, die enthält sowohl den vollständigen Namen und den Namen der Mutter. 371 00:18:17,790 --> 00:18:20,400 Wir haben nicht die entsprechende Option von dem, was wir bisher gesehen haben. 372 00:18:20,400 --> 00:18:22,950 >> Und so haben wir die Einführung Die Idee einer JOIN. 373 00:18:22,950 --> 00:18:24,857 Und schließt sich wahrscheinlich die complex-- 374 00:18:24,857 --> 00:18:27,940 es ist wirklich die meisten komplexen Operation wir gehen über in dem Video zu sprechen. 375 00:18:27,940 --> 00:18:30,040 Sie sind ein wenig kompliziert, aber wenn man einmal den Dreh raus, 376 00:18:30,040 --> 00:18:31,248 sie sind eigentlich nicht so schlimm. 377 00:18:31,248 --> 00:18:32,820 Es ist nur ein Spezialfall einer SELECT. 378 00:18:32,820 --> 00:18:37,120 Wir werden eine Reihe von Auswahl Spalten einer Tabelle Füge 379 00:18:37,120 --> 00:18:40,650 in einer zweiten Tabelle auf irgendeinem Prädikat. 380 00:18:40,650 --> 00:18:45,340 >> In diesem Fall darüber nachdenken mag this-- Tisch man einen Kreis hier, 381 00:18:45,340 --> 00:18:47,530 Tabelle zwei ist ein weiterer Kreis hier. 382 00:18:47,530 --> 00:18:49,410 Und das Prädikat Teil in der Mitte, ist es 383 00:18:49,410 --> 00:18:51,701 ein bisschen wie wenn Sie denken, etwa als ein Venn-Diagramm, was 384 00:18:51,701 --> 00:18:52,670 haben sie gemeinsam? 385 00:18:52,670 --> 00:18:55,960 Wir wollen diese zwei Tabellen verknüpfen basierend auf, was sie gemeinsam haben 386 00:18:55,960 --> 00:19:01,230 und diese hypothetische Tabelle erstellen das ist die Fusion der beiden zusammen. 387 00:19:01,230 --> 00:19:03,480 Also werden wir dies in einem zu sehen Beispiel und vielleicht helfe 388 00:19:03,480 --> 00:19:04,521 Deaktivieren Sie es ein wenig. 389 00:19:04,521 --> 00:19:09,260 Also vielleicht die Sie auswählen möchten user.fullname und moms.mother 390 00:19:09,260 --> 00:19:13,220 Nutzer-Beitritt in die Mütter Tabelle in jeder Situation 391 00:19:13,220 --> 00:19:16,790 wo der Benutzername Spalte ist die gleiche zwischen ihnen. 392 00:19:16,790 --> 00:19:19,240 Und dies ist ein neuer Syntax hier, diesen Benutzer. 393 00:19:19,240 --> 00:19:20,460 und Mütter .. 394 00:19:20,460 --> 00:19:26,697 Wenn ich tue, mehrere Tabellen zusammen, kann ich eine Tabelle anzugeben. 395 00:19:26,697 --> 00:19:29,530 Ich kann insbesondere zu unterscheiden , dass auf zumin dort unten. 396 00:19:29,530 --> 00:19:33,220 Ich kann den Benutzernamen unterscheiden Spalte der Tabelle users 397 00:19:33,220 --> 00:19:36,010 aus dem Benutzernamen Spalte der Mütter Tabelle, die otherwise-- sind 398 00:19:36,010 --> 00:19:38,070 wenn wir nur die Benutzernamen entspricht Benutzernamen, der nicht wirklich 399 00:19:38,070 --> 00:19:38,970 alles bedeuten. 400 00:19:38,970 --> 00:19:41,440 Wir wollen, es zu tun, wenn sie übereinstimmen. 401 00:19:41,440 --> 00:19:46,080 >> So kann ich die Tabelle und die angeben, Spaltennamen im Fall einer Situation 402 00:19:46,080 --> 00:19:48,370 wo es wäre unklar, was ich rede. 403 00:19:48,370 --> 00:19:51,880 Also das ist alles, was ich tue, ist, ich bin sagen diese Spalte aus dieser Tabelle, 404 00:19:51,880 --> 00:19:54,020 und sehr explizit. 405 00:19:54,020 --> 00:19:56,810 Also noch einmal, ich bin der Auswahl der vollständigen Namen und der Name der Mutter 406 00:19:56,810 --> 00:20:00,950 von der Benutzer-Tabelle miteinander verknüpft mit dem Mütter Tabelle in jeder Situation 407 00:20:00,950 --> 00:20:05,960 wo sie teilen diese column-- sie teilen diese Benutzernamen Begriff. 408 00:20:05,960 --> 00:20:08,580 >> Also hier sind die Tische wir vorher hatten. 409 00:20:08,580 --> 00:20:12,210 Dies ist der Zustand unserer Datenbank, wie es jetzt existiert. 410 00:20:12,210 --> 00:20:16,390 Die Informationen die wir Extrahieren ist dies für den Anfang. 411 00:20:16,390 --> 00:20:19,820 Dies ist die neue Tabelle werden wir zu schaffen kombiniert diese zusammen. 412 00:20:19,820 --> 00:20:23,585 Und beachten Sie, dass wir nicht Hervorhebung Newmans Zeile in Tabelle des Benutzers, 413 00:20:23,585 --> 00:20:25,960 und wir sind nicht Hervorhebung Kramers Zeile in der Tabelle Mütter 414 00:20:25,960 --> 00:20:31,250 da weder eine existiert in sowohl sets-- in beiden Tabellen. 415 00:20:31,250 --> 00:20:36,260 >> Die einzige Information, die gemeinsam ist, zwischen ihnen ist Jerry ist in beiden Tabellen 416 00:20:36,260 --> 00:20:39,100 und gcostanza ist in beiden Tabellen. 417 00:20:39,100 --> 00:20:42,620 Und so, wenn wir die SQL-JOIN, was wir get-- und tun wir tatsächlich bekommen diese. 418 00:20:42,620 --> 00:20:44,830 Es ist eine Art einer temporären Variablen. 419 00:20:44,830 --> 00:20:47,330 Es ist wie ein hypothetischer Fusion der beiden Tabellen. 420 00:20:47,330 --> 00:20:49,930 Wir etwas wirklich erhalten wie diese, in denen 421 00:20:49,930 --> 00:20:54,730 wir zusammen die Tabellen auf die fusionierte Informationen, die sie gemeinsam haben. 422 00:20:54,730 --> 00:20:58,334 >> So bemerken, dass users.username und moms.username Spalte 423 00:20:58,334 --> 00:20:59,250 es ist genau das gleiche. 424 00:20:59,250 --> 00:21:01,820 Das war die Informationen, entsprach der Nutzer 425 00:21:01,820 --> 00:21:02,890 Tabelle und die Mütter Tisch. 426 00:21:02,890 --> 00:21:04,270 Und so sie verschmolzen wir zusammen. 427 00:21:04,270 --> 00:21:06,919 Wir verworfen Kramer, weil er nicht in der Benutzer-Tabelle vorhanden sind, 428 00:21:06,919 --> 00:21:09,710 und wir verworfen Newman, weil er nicht in der Tabelle vorhanden sind Mütter. 429 00:21:09,710 --> 00:21:16,450 Das ist also der hypothetischen Fusions mit dem JOIN-Operation von SELECT. 430 00:21:16,450 --> 00:21:21,250 >> Und dann waren wir auf der Suche vollständigen Namen des Benutzers und der Mutter des Benutzers, 431 00:21:21,250 --> 00:21:24,999 und so ist die Information, daß würden wir aus dem Gesamt Abfrage zu erhalten 432 00:21:24,999 --> 00:21:26,040 dass wir mit SELECT gemacht. 433 00:21:26,040 --> 00:21:28,873 So schlossen wir uns die Tabellen zusammen Wir extrahierten diese beiden Säulen, 434 00:21:28,873 --> 00:21:31,610 und so, dass das, was wir bekommen würde. 435 00:21:31,610 --> 00:21:33,370 Aber SQL reiht sich in eine Art von komplizierter. 436 00:21:33,370 --> 00:21:36,770 Sie werden wahrscheinlich nicht tun, ihnen zu viel, sondern nur eine Vorstellung des Skeletts 437 00:21:36,770 --> 00:21:41,992 dass Sie verwenden, um zwei zusammenführen Tische zusammen, wenn Sie benötigt werden. 438 00:21:41,992 --> 00:21:43,700 Die letzten beiden sind ein etwas einfacher das verspreche ich. 439 00:21:43,700 --> 00:21:48,040 So aktualisieren, können wir UPDATE verwenden um Informationen in einer Tabelle ändern. 440 00:21:48,040 --> 00:21:53,880 Das allgemeine Format ist UPDATE einige Tisch, setzen einige Spalte auf einen Wert 441 00:21:53,880 --> 00:21:55,540 Wo einige Prädikat erfüllt ist. 442 00:21:55,540 --> 00:21:57,850 So zum Beispiel, wir möchten Sie vielleicht um die Benutzer-Tabelle zu aktualisieren 443 00:21:57,850 --> 00:22:04,400 und legen Sie das Kennwort, um yada bla, wobei die ID-Nummer 10. 444 00:22:04,400 --> 00:22:06,400 >> Also in diesem Fall, wir sind Aktualisieren der Benutzer-Tabelle. 445 00:22:06,400 --> 00:22:08,275 Die ID-Nummer 10 für dass erste Zeile gibt, 446 00:22:08,275 --> 00:22:10,690 und wir, die aktualisiert werden soll Kennwort Blabla. 447 00:22:10,690 --> 00:22:12,170 Und so ist das, was passieren würde. 448 00:22:12,170 --> 00:22:13,628 Es ist ziemlich einfach, nicht wahr? 449 00:22:13,628 --> 00:22:17,990 Es ist nur eine sehr einfache Modifikation der Tabelle. 450 00:22:17,990 --> 00:22:22,250 >> DELETE wird die Operation, die wir verwendet Informationen zu entfernen aus einer Tabelle. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM Tabelle WHERE einige Prädikat erfüllt ist. 452 00:22:24,817 --> 00:22:26,900 Wir wollen von dem Löschen Benutzer-Tabelle beispiels 453 00:22:26,900 --> 00:22:28,254 wo der Benutzername ist Newman. 454 00:22:28,254 --> 00:22:31,420 Sie können sich wahrscheinlich vorstellen, was mit gehen passieren hier, nachdem wir führen Sie, dass SQL 455 00:22:31,420 --> 00:22:35,790 Abfrage, Newman ist vom Tisch weg. 456 00:22:35,790 --> 00:22:40,460 >> Also alle diese Vorgänge, wie ich schon sagte, sind sehr einfach zu in phpMyAdmin tun. 457 00:22:40,460 --> 00:22:43,020 Es ist eine sehr benutzerfreundliche Schnittstelle. 458 00:22:43,020 --> 00:22:45,930 Aber es erfordert manuellen Aufwand. 459 00:22:45,930 --> 00:22:47,840 Wir wollen nicht, um den manuellen Aufwand zu beschäftigen. 460 00:22:47,840 --> 00:22:51,280 Wir wollen, dass unsere Programme zur tun dies für uns, nicht wahr? 461 00:22:51,280 --> 00:22:53,190 So dass wir vielleicht wollen dies programmgesteuert. 462 00:22:53,190 --> 00:22:56,410 Wir wollen die SQL übernehmen und haben etwas anderes, dies für uns tun. 463 00:22:56,410 --> 00:23:02,710 >> Aber was haben wir gesehen, dass erlaubt wir programmatisch etwas zu tun? 464 00:23:02,710 --> 00:23:03,690 Wir haben PHP gesehen, oder? 465 00:23:03,690 --> 00:23:05,760 Es werden einige Dynamik in unsere Programme. 466 00:23:05,760 --> 00:23:10,430 Und so glücklich, SQL und PHP spielen sehr schön zusammen. 467 00:23:10,430 --> 00:23:13,230 Es gibt eine Funktion in PHP genannte Abfrage, die verwendet werden können. 468 00:23:13,230 --> 00:23:15,870 Und Sie können die geben Parameter oder das Argument 469 00:23:15,870 --> 00:23:19,210 um eine SQL-Abfrage-Abfrage, Sie möchten, um auszuführen. 470 00:23:19,210 --> 00:23:23,250 Und PHP wird es für Sie tun. 471 00:23:23,250 --> 00:23:25,564 >> So, nachdem Sie angeschlossen haben Ihre Datenbank mit PHP, 472 00:23:25,564 --> 00:23:26,980 es gibt zwei Vorwahlen Sie dies tun. 473 00:23:26,980 --> 00:23:29,230 Es gibt etwas namens MySQLi und so genannte PDO. 474 00:23:29,230 --> 00:23:31,063 Wir werden nicht in einen riesigen gehen Menge Detail gibt. 475 00:23:31,063 --> 00:23:32,957 In CS50 verwenden wir PDO. 476 00:23:32,957 --> 00:23:34,790 Nachdem Sie angeschlossen haben zu Ihrer Datenbank, die Sie 477 00:23:34,790 --> 00:23:40,980 können dann Ihre Datenbank-Abfragen indem man die Abfragen als Argumente 478 00:23:40,980 --> 00:23:42,730 PHP-Funktionen. 479 00:23:42,730 --> 00:23:46,460 Und wenn Sie das tun, speichern Sie die Ergebnis in einem assoziativen Array festlegen. 480 00:23:46,460 --> 00:23:50,290 >> Und wir wissen, wie die Arbeit mit assoziative Arrays in PHP. 481 00:23:50,290 --> 00:23:52,630 So könnte ich etwas zu sagen wie this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 dies ist in PHP-- gleich Abfrage. 483 00:23:55,470 --> 00:23:57,660 Und dann in der Abfragefunktion Dieses Argument 484 00:23:57,660 --> 00:24:00,130 dass ich vorbei abfragen das sieht aus wie SQL. 485 00:24:00,130 --> 00:24:01,160 Und in der Tat, auf dem SQL ist. 486 00:24:01,160 --> 00:24:05,700 Das ist die Abfrage-String, dass ich gerne auf meiner Datenbank auszuführen. 487 00:24:05,700 --> 00:24:09,250 >> Und so in rot, das ist PHP. 488 00:24:09,250 --> 00:24:11,890 Dies ist SQL, die ich Integration in PHP, indem sie 489 00:24:11,890 --> 00:24:15,020 es das Argument auf die Abfrage-Funktion. 490 00:24:15,020 --> 00:24:19,640 Ich möchte Fullname aus wählen Benutzer-ID-Nummer, wo gleich 10. 491 00:24:19,640 --> 00:24:22,560 Und dann vielleicht, nachdem ich das getan haben, Ich könnte so etwas wie dies zu sagen. 492 00:24:22,560 --> 00:24:25,550 Ich will aus dem Druck Nachricht Danke für die Anmeldung. 493 00:24:25,550 --> 00:24:32,530 >> Und ich will es interpolate-- Ich möchte interpolieren $ fullname Ergebnisse. 494 00:24:32,530 --> 00:24:36,280 Und so das ist, wie ich mit, dass assoziatives Array, das ich zurück. 495 00:24:36,280 --> 00:24:39,730 $ fullname Ergebnisse würden im Grunde am Ende Ausdrucken, 496 00:24:39,730 --> 00:24:42,870 Dank für Anmeldung, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Das war der vollständige Name wo idnum entspricht 10. 498 00:24:46,570 --> 00:24:48,850 >> Und so alles, was ich tue, wird ich now-- I gespeichert 499 00:24:48,850 --> 00:24:52,780 meine Frage, die Ergebnisse meiner Abfrage und die Ergebnisse in einem assoziativen Array, 500 00:24:52,780 --> 00:24:56,330 und fullname ist der Name des die Spalte Ich war immer für. 501 00:24:56,330 --> 00:25:01,010 Also das ist mein Schlüssel in den Ergebnissen assoziatives Array, die ich will. 502 00:25:01,010 --> 00:25:05,930 Also Vielen Dank für Anmeldung, $ Ergebnisse, fullname druckt, wird bleiben 503 00:25:05,930 --> 00:25:08,654 direkt zwischen diesen geschweiften Hosenträger, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 Und ich werde gerne aus der Nachricht drucken Vielen Dank für Anmeldung Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Nun, wir wollen wahrscheinlich nicht zu schwer Code Dinge wie, dass in, oder? 506 00:25:16,652 --> 00:25:19,860 Wir möchten vielleicht so etwas wie Druck zu tun f, wo wir ersetzen und vielleicht 507 00:25:19,860 --> 00:25:22,443 sammeln verschiedene Informationen, oder vielleicht haben die Abfrage-Prozess 508 00:25:22,443 --> 00:25:23,370 unterschiedliche Informationen. 509 00:25:23,370 --> 00:25:27,920 Und so Abfrage hat der Abfragefunktion dieser Begriff der Art von Substitutionen 510 00:25:27,920 --> 00:25:32,310 sehr ähnlich f Prozent s drucken und Prozent c, Fragezeichen. 511 00:25:32,310 --> 00:25:34,290 >> Und wir können Frage verwenden Noten sehr analog 512 00:25:34,290 --> 00:25:38,400 bis f, um Ersatzgrößen drucken. 513 00:25:38,400 --> 00:25:44,120 Also vielleicht Ihren Benutzer früher angemeldet, und Sie ihre Benutzer-ID-Nummer gespeichert 514 00:25:44,120 --> 00:25:51,710 in $ _SESSION von PHP Super global in der Schlüssel-ID. 515 00:25:51,710 --> 00:25:55,947 Also vielleicht, nachdem sie eingeloggt sind, Sie setzen $ _SESSION ID = 10, 516 00:25:55,947 --> 00:25:58,280 Extrapolieren aus dem Beispiel wir gerade gesehen haben vor einer Sekunde. 517 00:25:58,280 --> 00:26:01,960 >> Und so, wenn wir tatsächlich auszuführen Diese Abfrage die Ergebnisse jetzt, 518 00:26:01,960 --> 00:26:08,440 es wäre in 10-Stecker, oder was auch immer $ _SESSION ID-Wert ist. 519 00:26:08,440 --> 00:26:10,790 Und damit können wir ein bisschen mehr Dynamik. 520 00:26:10,790 --> 00:26:12,699 Wir sind nicht harte Kodierung Dinge mehr. 521 00:26:12,699 --> 00:26:14,490 Wir sparen Informationen irgendwo und dann 522 00:26:14,490 --> 00:26:18,924 Wir können diese Informationen wieder zu verwenden, Art verallgemeinern, was wir tun wollen, 523 00:26:18,924 --> 00:26:21,090 und nur Plug-in und Wandel das Verhalten von unserer Seite 524 00:26:21,090 --> 00:26:26,489 basierend auf, was ID-Nummer des Benutzers tatsächlich ist, nachdem sie sich angemeldet haben. 525 00:26:26,489 --> 00:26:28,530 Es ist auch möglich, wenn auch, dass Ihre Ergebnisse festgelegt 526 00:26:28,530 --> 00:26:30,840 kann dagegen aus mehreren Zeilen bestehen. 527 00:26:30,840 --> 00:26:33,990 In dem Fall müssen Sie ein Array von arrays-- 528 00:26:33,990 --> 00:26:35,334 ein Array von assoziativen Arrays. 529 00:26:35,334 --> 00:26:37,000 Und man muss nur durchlaufen. 530 00:26:37,000 --> 00:26:41,950 Und wir wissen, wie man durchlaufen durch ein Array in PHP, nicht wahr? 531 00:26:41,950 --> 00:26:45,600 So, hier ist wohl die komplexe Sache, die wir bisher gesehen haben. 532 00:26:45,600 --> 00:26:49,640 Es tatsächlich integriert drei Sprachen zusammen. 533 00:26:49,640 --> 00:26:52,920 >> Hier in rot, ist dies einige HTML. 534 00:26:52,920 --> 00:26:56,872 Ich bin anscheinend starting-- dies ein Ausschnitt einiger HTML, die ich habe. 535 00:26:56,872 --> 00:26:59,580 Ich fange einen neuen Absatz, dass sagt, die Mütter des Fernsehers Seinfeld. 536 00:26:59,580 --> 00:27:02,350 Und dann unmittelbar danach Ich fange an einen Tisch. 537 00:27:02,350 --> 00:27:06,060 Und dann nach, dass ich haben einige PHP, nicht wahr? 538 00:27:06,060 --> 00:27:08,229 Ich habe alle diese PHP-Code in es. 539 00:27:08,229 --> 00:27:09,645 Ich bin offenbar werde eine Abfrage machen. 540 00:27:09,645 --> 00:27:14,180 Und, um die Abfrage zu machen, ich bin zu gehen werden mit SELECT Mütter Mütter. 541 00:27:14,180 --> 00:27:15,970 >> Also das ist getting-- das ist SQL. 542 00:27:15,970 --> 00:27:17,300 Also das der blaue ist SQL. 543 00:27:17,300 --> 00:27:19,680 Die rote wir vor einer Sekunde sah, war HTML. 544 00:27:19,680 --> 00:27:21,360 Und die grüne hier PHP. 545 00:27:21,360 --> 00:27:23,400 Also ich mache eine Abfrage zu meiner Datenbank, ich bin 546 00:27:23,400 --> 00:27:26,040 Auswahl aller Mütter in der Mütter-Tabelle. 547 00:27:26,040 --> 00:27:30,710 Nicht nur eine Reduktion auf bestimmte Reihe, frage ich für alle von ihnen. 548 00:27:30,710 --> 00:27:33,290 >> Dann überprüfe ich, wenn Resultat Gleichen nicht gleich falsch. 549 00:27:33,290 --> 00:27:37,410 Dies ist nur meine Möglichkeit der Überprüfung sort der, wenn die Ergebnisse nicht gleich null, 550 00:27:37,410 --> 00:27:40,260 dass wir sehen, c zum Beispiel. 551 00:27:40,260 --> 00:27:44,000 Im Grunde ist dies nur die Überprüfung zu machen, sicher, dass es tatsächlich bekam Daten zurück. 552 00:27:44,000 --> 00:27:47,041 Denn ich will nicht, um den Druckvorgang zu starten von Daten, wenn ich nicht alle Daten zu erhalten. 553 00:27:47,041 --> 00:27:50,690 Dann für jeden Ergebnisse als Folge der foreach-Syntax von PHP, alles, was ich tue, 554 00:27:50,690 --> 00:27:53,399 ist Ausdruck von $ result Mütter. 555 00:27:53,399 --> 00:27:55,940 Und so werde ich, um einen Satz zu erhalten aller Mütter von each-- 556 00:27:55,940 --> 00:27:59,980 es ist ein Array von assoziativen arrays-- und ich Ausdrucken 557 00:27:59,980 --> 00:28:03,649 jede als eigene Zeile einer Tabelle. 558 00:28:03,649 --> 00:28:05,690 Und das ist wirklich schön viel alles dort ist zu ihm. 559 00:28:05,690 --> 00:28:07,750 Ich weiß, es ist ein wenig wenig los hier 560 00:28:07,750 --> 00:28:13,210 in diesem letzten Beispiel mit Arrays von arrays-- Arrays von assoziativen Arrays. 561 00:28:13,210 --> 00:28:17,340 Aber es ist wirklich einfach zu kochen hat in SQL zur Erstellung einer Abfrage, 562 00:28:17,340 --> 00:28:21,102 in der Regel die Auswahl, nachdem wir bereits haben legte Informationen in der Tabelle, 563 00:28:21,102 --> 00:28:22,310 und dann einfach herausziehen. 564 00:28:22,310 --> 00:28:25,710 >> Und das ist wir es schaffen würden in diesem speziellen Fall. 565 00:28:25,710 --> 00:28:31,120 Wir würden alle Einzel extrahieren Mütter aus der Mütter Tisch. 566 00:28:31,120 --> 00:28:35,970 Wir haben eine ganze Reihe von ihnen, und wir wollen durch laufen und ausdrucken 567 00:28:35,970 --> 00:28:37,630 Jeder. 568 00:28:37,630 --> 00:28:40,510 Also noch einmal, dies ist wahrscheinlich die komplizierteste Beispiel 569 00:28:40,510 --> 00:28:44,510 wir haben gesehen, weil wir Mischen von drei verschiedenen Sprachen zusammen, nicht wahr? 570 00:28:44,510 --> 00:28:50,100 >> Auch HTML haben wir hier in rot, mit einigen SQL hier in Blau gemischt, 571 00:28:50,100 --> 00:28:52,049 mit einigen PHP in grün gemischt. 572 00:28:52,049 --> 00:28:53,840 Aber alle diese spielen gut zusammen, es ist 573 00:28:53,840 --> 00:28:57,060 nur eine Frage der Entwicklung gute Gewohnheiten, so dass Sie bekommen können 574 00:28:57,060 --> 00:28:58,780 sie, zusammen zu arbeiten, wie Sie wollen. 575 00:28:58,780 --> 00:29:03,790 Und der einzige Weg, um wirklich das tun, ist zu üben, üben, üben. 576 00:29:03,790 --> 00:29:06,740 Ich bin Doug Lloyd, ist dies CS50. 577 00:29:06,740 --> 00:29:08,647