[Musikwiedergabe] DOUG LLOYD: In unseren Videos auf Web-Entwicklung Themen, Wir haben das Konzept der genannten eine Datenbank, ein paar Mal, nicht wahr? So eine Datenbank Sie wahrscheinlich von den vertrauten sagen, mit Microsoft Excel oder Google Spreadsheets. Es ist wirklich nur eine organisierte Satz von Tabellen, Zeilen und Spalten. Und eine Datenbank ist, wo unserer Website speichert Informationen, die wichtig ist, für unsere Website, um richtig zu arbeiten. Wieder ein wirklich typisches Beispiel hier speichert Benutzernamen und Passwörter in einer Datenbank, so dass, wenn ein Benutzer an unserer Website, die Datenbank abgefragt werden, um zu sehen wenn der Benutzer in der Datenbank existiert. Und wenn ja, Überprüfen, dass sein Passwort richtig ist. Und wenn ihr Passwort richtig ist, dann können wir sie, was auch immer Seite geben sie anfordert. So sind Sie wahrscheinlich wieder vertraut mit dieser Idee von Excel oder Google Spreadsheets. Wir haben Datenbanken, Tabellen, Zeilen und Spalten. Und das ist wirklich Art der Fundamentalmenge hierarchischer Gliederung hier. Also hier ist eine Excel-Tabelle. Und wenn Sie jemals diese geöffnet haben oder ein anderes ähnliches Programm Sie wissen, dass diese hier rows-- 1, 2, 3, 4, 5, 6, 7. Dies sind Spalten. Vielleicht hier unten, obwohl Sie diese Funktion nicht verwenden furchtbar much-- Ich werde heran in-- wir Diese Idee eines Blattes. Also vielleicht diese Blätter, wenn Ich abwechselnd vor und zurück, sind verschiedene Tabellen, dass existieren in meiner Datenbank. Und wenn wir das Beispiel alle weiter der Weg, den Namen der Datenbank Book 1 ist. Vielleicht habe ich Buch 2 und 3 Buch. So dass jeder Excel-Datei ist eine Datenbank ist jedes Blatt eine Tabelle, und innerhalb jeder Tabelle Ich habe Diese Vorstellung von Zeilen und Spalten. So, wie ich mit dieser Datenbank arbeiten? Wie erhalte ich Informationen von ihm? Nun gibt es eine Sprache namens SQL-- die ich in der Regel nur nennen Sequel-- und es steht für die Strukturierte Abfragesprache. Und es ist eine Programmiersprache, aber es ist eine ziemlich begrenzte Programmier Sprache. Es ist nicht ganz wie andere dass wir mit gearbeitet. Aber der Zweck dieser Programmiersprache ist, eine Datenbank abzufragen, zu fragen Daten von einer Datenbank, finden Sie Informationen in ein Datenbank, und so weiter. Wir haben auch in CS50-- und es ist eine sehr gemeinsame Plattform, es heißt MySQL. Das ist, was wir in den Kurs. Es ist ein Open-Source- Plattform, stellt eine sogenannte relationale database-- eine Datenbank, effektiv. Wir brauchen nicht zu bekommen, zu sehr ins Detail auf welcher eine relationale Datenbank ist. Aber die SQL-Sprache ist sehr geschickt im Arbeits mit MySQL und andere ähnliche Arten von relationalen Datenbanken. Und viele Installationen MySQL etwas einfallen phpMyAdmin aufgerufen, die ist eine grafische Benutzer interface-- eine GUI-- dass macht es ein wenig mehr benutzerfreundlich ausführen Datenbankabfragen, weil Datenbanken werden nicht nur verwendet, durch fortgeschrittene Programmierer, nicht wahr? Manchmal gibt es diese kleinen Unternehmen, und sie nicht sich leisten können, mieten Sie ein Team von Programmierern, aber sie müssen noch zu speichern Informationen in einer Datenbank. So etwas wie phpMyAdmin macht es für jemanden sehr einfach wer noch nie zuvor programmiert abholen und sich mit, wie vertraut um mit einer Datenbank zu arbeiten. Das Problem ist, phpMyAdmin, während es ist ein fantastisches Werkzeug für das Lernen über Datenbanken, ist es Handbuch. Sie werden sich anmelden zu müssen es und Ausführen von Befehlen und geben Sie Dinge in Hand. Und wie wir wissen aus unserer Beispiel für PHP Web-Programmierung, mit manuell zu tun Dinge auf unserer Website, wenn wir wollen, ein dynamisches, aktiv reagiert Website, vielleicht nicht der beste Ansatz. Wir möchten, einen Weg zu finden, vielleicht automatisieren das irgendwie. Und SQL ermöglicht es uns, dies zu tun. Also, wenn wir zu gehen Beginn der Arbeit mit SQL, müssen wir zunächst eine haben Datenbank zu arbeiten. Erstellen einer Datenbank etwas, das Sie wahrscheinlich wird in phpMyAdmin tun, denn Sie werden nur einmal tun müssen, und die Syntax dafür ist viel einfacher. Es ist viel einfacher, es zu tun in einer grafischen Benutzeroberfläche als durch Tippen und es als Befehl. Der Befehl kann ein wenig umständlich zu bekommen. In ähnlicher Weise eine Tabelle erstellen kann bekommen ziemlich umständlich als auch. Und so Dinge wie der Erstellung einer Datenbank und Erstellen einer Tabelle, die Sie wohl nur tun once-- einmal pro Tisch, einmal pro database-- es ist OK, dass in zu tun eine graphische Schnittstelle. Im Verfahren Erstellen einer Tabelle, werden Sie auch auf alle angeben Spalten, die in der Tabelle wird. Welche Art von Informationen zu tun Sie in der Tabelle gespeichert werden sollen? Vielleicht Namen und Geburtsdatum eines Benutzers, Passwort, Benutzer-ID-Nummer, und vielleicht Stadt und Staat, nicht wahr? Und für jedes Mal, wenn wir einen Benutzer hinzufügen möchten, auf die Datenbank, möchten wir alle sechs erhalten dieser Informationsteile. Und wir tun, dass durch Zugabe von Zeilen in der Tabelle. So dass wir zuerst eine Datenbank, dann werden wir eine Tabelle zu erstellen. Im Rahmen der Erstellung eine Tabelle, die wir gefragt werden, jede Spalte festlegen, dass wir würden in dieser Tabelle möchten. Und dann, als wir beginnen, hinzufügen Informationen zur Datenbank und die Datenbank abfragen mehr generally-- nicht nur das Hinzufügen, aber alles, was wir do-- Wir werden tun mit Reihen der Tabelle, die man Benutzerinformation aus dem gesamten Satz. Also jedes SQL-Spalte in der Lage ist, Halten von Daten von einem bestimmten Datentyp. Also haben wir eine Art beseitigt diese Vorstellung von Datentypen in PHP, aber sie sind wieder hier in SQL. Und es gibt eine Menge von Datentypen. Hier ist nur 20 von ihnen, aber es ist nicht einmal alle von ihnen. So haben wir Ideen wie INTs-- Integers-- wir wahrscheinlich wissen, Diese Kolonne kann ganze Zahlen zu halten. Und es gibt Variationen thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. Vielleicht nicht immer müssen wir vier Bissen. Vielleicht brauchen wir acht Bytes, und so haben wir können diese Veränderungen auf ganze Zahlen verwenden ein bisschen mehr Platz effizient. Wir können Dezimalzahlen tun, werden wir tun können Gleitkommazahlen. Diese sind ziemlich ähnlich. Gibt es einige Unterschiede, und wenn Sie möchten Lust zum Nachschlagen der SQL Art von Führung, die Sie kann sehen, was die leichte Unterschiede zwischen ihnen. Vielleicht speichern möchten wir Informationen zu Datum und Uhrzeit. Vielleicht sind wir die Verfolgung von wenn der Benutzer unserer Website verbunden sind, und so vielleicht wollen wir um eine Spalte, die es haben ein Datum, Zeit oder einen Zeitstempel, zeigt an, wenn der Benutzer tatsächlich hat sich registriert. Wir können Geometrien und Linienfolgen zu tun. Das ist eigentlich ziemlich cool. Wir könnten eine Karte geographisches Gebiet mit GIS-Koordinaten des Grundstückes aus einer Fläche. So kann tatsächlich zu speichern diese Art von Informationen in einer SQL Spalte. TEXT ist nur Riesen Blobs von Text, vielleicht. ENUMs sind irgendwie interessant. Sie in C tatsächlich vorhanden Wir tun nicht reden über sie, weil sie nicht furchtbar häufig verwendet, zumindest CS50. Aber es ist ein Aufzählungsdatentyp, der ist fähig, beschränkt Werte. Hier ein wirklich gutes Beispiel wäre, um eine Enumeration zu schaffen, wo die sieben mögliche Werte sind Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, oder? Das Datentyp Tag Woche nicht vorhanden ist, aber wir konnten ein erstellen Aufzählungsdatentyp wie dass diese Spalte immer nur halten einer jener sieben möglichen Werte. Wir haben alle aufgezählt der möglichen Werte. Dann haben wir CHAR und VARCHAR, und ich habe diese Farbe grün weil wir eigentlich gehen, um eine zweite zu nehmen um den Unterschied zu sprechen zwischen diesen beiden Dingen. So CHAR, im Gegensatz zu C, wo CHAR war ein einzelnes Zeichen, in SQL ein CHAR bezieht sich auf eine feste Zeichenfolge. Und wenn wir dies schaffen Spalte, wir tatsächlich können die Länge des Strings angeben. Also in diesem Beispiel, wir könnten CHAR (10) zu sagen. Das bedeutet, daß jedes Element dieser Spalte wird von 10 Bytes an Informationen bestehen. Nicht mehr, nicht weniger. Also, wenn wir versuchen, in einem 15 gesetzt Bit oder eine 15 Zeichen Element oder der Wert in dieser Spalte wir nur bekommen die ersten 10. Wenn wir in den beiden setzen Zeichen langen Wert, wir werden die beiden haben Zeichen und dann acht null Stichen. Wir werden nie effizienter sein als das. Ein VARCHAR ist eine Art, wie unsere Vorstellung von einem String dass wir kennen mit von C oder von PHP. Es ist eine Zeichenfolge variabler Länge. Und wenn Sie zu erstellen diese Spalte, die Sie gerade geben Sie die maximal mögliche Länge. Also vielleicht 99 oder allgemein 255. Das würde die maximale Länge sein. Und so, wenn wir die Speicherung 15 Zeichenkette, wir 15 Byte verwenden würden, vielleicht 16 Byte für den Nullterminator. Wenn wir die Speicherung ein drei Zeichenkette, wir drei oder vier Bytes zu verwenden wäre. Aber wir verwenden würden den vollen 99. Also warum sollten wir beides haben? Nun, wenn wir brauchen, um herauszufinden, wie lange etwas mit einem VARCHAR, wir Art von iterate über sie genau wie wir in C hat und herausfinden, wo sie aufhört. Während, wenn wir wissen, dass alles, was in dieser Spalte ist 10 Byte, vielleicht wir wissen, dass die Informationen, die wir springen 10 Byte, 10 Byte, 10 Byte, 10 Byte, und immer die Anfang der Zeichenfolge. So können wir einige haben verschwendeten Platz mit einem CHAR, aber vielleicht gibt es einen Handel Aus der mit einer besseren Geschwindigkeit Navigation in der Datenbank. Aber vielleicht wollen wir das Flexibilität eines VARCHAR statt having-- Wenn unsere CHAR war 255, aber die meisten von unseren Nutzern wurden nur die Eingabe von drei oder vier Bytes wert von Informationen oder drei oder vier Zeichen im Wert von Informationen. Aber einige Nutzer wurden mit die ganze 255, vielleicht VARCHAR wäre angemessener da sein. Es ist eine Art Kompromiss, und in der Regel für die Zwecke der CS50, Sie brauchen nicht zu viel Sorgen zu machen ob Sie eine CHAR oder VARCHAR verwenden. Aber in der realen Welt, diese Dinge Sie Rolle, weil alle diese Spalten nehmen tatsächlichen physischen Raum. Und physischen Raum, in dem realen Welt, kommt mit einer Prämie. So eine andere Gegenleistung wenn Sie den Aufbau einer Tabelle sind ist es, eine Spalte auswählen, um sein eine so genannte Primärschlüssel. Und ein Primärschlüssel ist eine Spalte wo jeder einzelne Wert ist einzigartig. Und das bedeutet, dass Sie leicht herausgreifen eine einzelne Zeile einfach durch einen Blick an der Primärschlüssel der Zeile. So zum Beispiel, Sie in der Regel, mit den Nutzern, nicht zwei Benutzer, die wollen haben die gleiche Benutzer-ID-Nummer. Und vielleicht haben Sie viele Informationen, und vielleicht zwei Benutzer haben die gleiche name-- Sie John Smith und John Smith. Das ist nicht unbedingt ein Problem, Da es viele Leute in der Welt namens John Smith. Aber wir haben nur eine Benutzer-ID-Nummer 10, eine Benutzer-ID-Nummer 11, 12, 13. Wir haben keine zwei Benutzer mit der gleichen Anzahl, und so vielleicht die Benutzer-ID-Nummern wäre eine gute Primärschlüssel sein. Wir haben keine Vervielfältigung, und wir können nun eindeutig jede einzelne Zeile zu identifizieren gerade Dazu suchen Sie in dieser Spalte. Die Wahl Primärschlüssel kann tatsächlich machen nachfolgenden Tabellenoperationen viel einfacher, weil Sie nutzen können die Tatsache, dass bestimmte Zeilen sein einzigartiges, oder eine bestimmte Spalte Ihrer Datenbank oder Tabelle wird einzigartig zu holen sein aus bestimmten Zeilen. Sie können auch einen gemeinsamen Primär Schlüssel, die Sie gelegentlich feststellen, zu verwenden, die nur eine ist Kombination von zwei Spalten, ist garantiert eindeutig sein. Also vielleicht Sie eine haben Spalte, As und Bs ist, eine Spalte, die ist ein, zwei, und drei, aber Sie werden immer nur eine einzige A1, eine einzige A2, und so weiter und so fort. Aber Sie könnten einen B2 haben, ein C2 oder A1, A2, A3, A4. So haben Sie vielleicht mehrere As, multiple Bs, mehrere diejenigen, mehreren Zweien, aber Sie immer nur kann ein Einzel A1, B2, C3, und so weiter. Also wie gesagt, ist SQL ein Programmiersprache, aber es hat eine ziemlich begrenzten Wortschatz. Es ist nicht ganz so expansiv wie C und PHP und andere Sprachen dass wir sprechen im Verlauf. Es ist ausführlicher ein Sprache als das, was wir sind werde über in sprechen Video-, weil in diesem Video wir werden darüber reden vier Operationen, dass wir kann auf eine Tabelle durchzuführen. Es gibt mehr als dies. Wir können mehr als dies zu tun, aber für unsere Zwecke, wir sind in der Regel zu sein mit nur vier operations-- Einsatz, auszuwählen, zu aktualisieren und zu löschen. Und Sie wahrscheinlich intuitiv erraten was alle vier dieser Dinge zu tun. Aber wir werden in ein bisschen gehen Details auf jeden einzelnen. So für die Zwecke dieser Video, nehmen wir an, Wir haben die folgenden zwei Tabellen in einer Datenbank. Wir haben eine Tabelle namens Benutzer, hat vier columns-- ID-Nummer, Benutzername, das Kennwort und die vollständigen Namen. Und wir haben eine zweite Tabelle in derselben Datenbank genannt Moms, die gerade speichert Informationen über einen Benutzernamen und eine Mutter. So dass für alle Beispiele In diesem Video werden wir werden mit dieser Datenbank und nachfolgende Aktualisierungen zu. Also lassen Sie uns sagen, wir wollen Hinzufügen von Informationen zu einem Tisch. Das ist, was das Einsatzbetrieb tut. Bei der Erklärung alle diese Befehle, ich werde Ihnen eine allgemeine Gerüst zu verwenden, um zu geben. Denn im Grunde, die Abfragen gehen Blick recht ähnlich, wir sind gerade dabei sich zu ändern geringfügig unterschiedlichen Informations um verschiedene Dinge mit der Tabelle zu tun. Also für INSERT, das Skelett sieht irgendwie aus wie diese. Wir wollen in einfügen eine bestimmte Tabelle. Dann haben wir eine öffnende Klammer und eine Liste von Spalten dass wir wollen Werte einfügen kannst. Schließen Klammern, die Folgende Werte, und dann wieder, listen wir die Werte Wir wollen in den Tisch zu legen. So ein Beispiel hierfür würde die folgenden werden. Ich möchte in die Tabelle einfügen Nutzer die folgende columns-- Benutzername, Passwort und Fullname. So eine neue Zeile, wo ich Putting in diesen drei Spalten und wir sind gehen, um in den Werten setzen Newman, USMAIL und Newman. Also in diesem Fall, ich bin Inbetriebnahme der Klein newman in den Benutzernamen Säule, das Passwort USMAIL, und der vollständige Name der Hauptstadt N Newman in die Fullname Spalte. Also hier ist was die Datenbank sah aus wie zuvor. Hier ist, was die Benutzer auf die Tabelle top aussah, bevor wir dies taten. Nachdem wir dies ausführen Abfrage, bekommen wir diese. Wir haben eine neue Zeile in die Tabelle aufgenommen. Aber beachten Sie diese eine Sache dass ich nicht geben, aber irgendwie habe ich einen Wert hat für die, die diese 12 ist hier richtig. Ich habe nicht gesagt, ich wollte setzen ID-Nummer drin. Ich wollte Benutzernamen setzen, Kennwort Fullname. Und ich tat, das ist in Ordnung. Aber ich bekam auch dieses 12. Warum habe ich diese 12? Nun stellt sich heraus, dass wenn Sie definieren eine Spalte, die gehen, zu sein Ihre Primärschlüssel, die in der Regel, wie ich schon sagte, eine ID-Nummer. Es ist nicht immer notwendig gehen, um eine ID-Nummer zu sein, aber es ist in der Regel eine gute Idee, ist eine Art von Integer-Wert. Sie haben die Möglichkeit in phpMyAdmin wenn Sie Ihre Datenbank zu schaffen oder Ihren Tisch zu setzen Spalte als automatische Inkrementierung. Das ist eine wirklich gute Idee, wenn Sie mit einem Primärschlüssel arbeiten, weil Sie jeden Wert wollen in dieser Spalte, einzigartig zu sein. Und wenn Sie vergessen haben, geben Sie es für mehr als eine Person, Sie haben jetzt eine Situation, in der diese Spalte ist nicht mehr einzigartig. Sie haben zwei Rohlinge, so können Sie keine mehr eindeutig zu identifizieren eine column-- oder Sie können nicht mehr eindeutig identifizieren eine Zeile basierend auf dieser Spalte. Es ist alles verloren ihre Wert als Primärschlüssel. Und so offensichtlich, was ich getan habe, Hier ist die Benutzer-ID konfiguriert Spalte zur Autoinkrement so dass jeder Mal, wenn ich Informationen zur Tabelle hinzufügen, es wird mir automatisch zu geben ein Wert für den Primärschlüssel. So kann ich nie vergessen, es zu tun, weil die Datenbank wird es für mich tun. Also das ist ganz nett. Und damit ist, warum wir bekommen 12 drin, weil ich gesetzt, dass die Säule bis zum Auto-Inkrement. Wenn ich jemand anderes hinzugefügt es wäre 13, wenn ich hinzugefügt jemand anderes, es würde 14 usw. sein, und. Lassen Sie uns also nur eine weitere Insertion zu tun. Wir werden in die Mütter Tabelle einfügen, in insbesondere die Benutzernamen und Mutter Spalte die Werte Kramer und Babs Kramer. Und so hatten wir das schon. Nachdem wir führen Sie, dass SQL-Abfrage, haben wir diese. Wir haben Kramer und Babs hinzugefügt Kramer auf die Mütter Tisch. Das ist also das Einfügen. SELECT ist, was wir verwenden, um zu extrahieren Informationen aus der Tabelle. Das ist also, wie wir bekommen Informationen aus der Datenbank. Und so SELECT-Befehle sein werden bei der Programmierung sehr häufig verwendet. Die allgemeine framework-- die allgemeine Skelett sieht wie folgt aus. Wählen Sie eine Gruppe von Spalten aus ein Tisch, und dann gegebenenfalls können Sie eine Zustand- angeben oder was wir in der Regel ein Prädikat nennen, ist in der Regel der Begriff verwenden wir in SQL. Aber es ist im Grunde, was insbesondere Zeilen, die Sie wollen zu bekommen. Wenn Sie, statt sich wünschen alles, einzugrenzen, Dieses ist, wo Sie das tun würde. Und dann gegebenenfalls können Sie auch bestellen nach einer bestimmten Spalte. Also vielleicht haben Sie die Dinge sortiert haben wollen alphabetisch auf eine Spalte auf der Basis oder alphabetisch auf einer anderen basiert. Wieder ORDER BY, wo und optional. Aber sie werden wahrscheinlich useful-- besonders Wo werden, nützlich zu sein einzugrenzen, so dass Sie nicht tun, erhalten Sie Ihre gesamte Datenbank und zurück haben, um es zu bearbeiten, erhalten Sie gerade die Stücke von ihm, dass Sie interessieren. So zum Beispiel, ich möchten Sie vielleicht wählen ID-Nummer und fullname von den Benutzern. Also, was könnte diese aussehen? Also hier ist meine Benutzer-Tabelle. Ich möchte idnum wählen fullname und von den Benutzern. Was soll ich bekommen? Ich werde diese. Ich habe nicht weiter einzugrenzen, also bin ich immer die ID-Nummer für jede Zeile und ich bin immer die volle Namen aus jeder Zeile. OK. Was, wenn ich das Passwort wählen Nutzer WHERE-- so jetzt Ich füge eine Bedingung, eine predicate-- wobei idnum weniger als 12. Also hier ist meine Datenbank wieder, meine Benutzer-Tabelle oben. Was soll ich nur, wenn ich will Wählen Sie diese Informationen, das Passwort, wobei die Benutzer-ID oder idnum weniger als 12? Ich werde dies zu umgehen Information zurück, nicht wahr? Es passiert, dass idnum 10 ist, weniger als 12, ID-Nummer 11 von weniger als 12. Ich bekomme das Passwort für die Zeilen. Das ist, was ich bat. Was ist das? Was ist, wenn ich will Sterne aus der SELECT- Mütter Tisch, an dem Benutzernamen entspricht Jerry? OK, wählen Sie die Sterne Sonder Art Platzhalter sogenannte dass wir verwenden, um alles zu bekommen. Also sie sagen wählen Benutzername Komma Mutter, die passiert das einzige zu sein, zwei Spalten dieser Tabelle, Ich kann einfach wählen star und erhalten Sie alles, was wo der Benutzername gleich Jerry. Und so das ist, was ich bekommen würde wenn ich diese bestimmte Abfrage. Jetzt sind Datenbanken groß, weil sie uns, Informationen vielleicht organisieren ein wenig effizienter als wir vielleicht anders. Wir nicht unbedingt zu speichern jede relevante Information zu einem Benutzer in der gleichen Tabelle. Wir hatten zwei Tabellen gibt. Wir müssen zu speichern jedermanns Mutter Name, und vielleicht haben wir nicht die soziale Sicherheit Zahl, haben wir ihr Geburtsdatum. Das muss nicht immer in der gleichen Tabelle. Solange wir definieren können, Beziehungen zwischen dem tables-- und das ist, wo das relationale Datenbank tige Art kommt in play-- solange wir definieren können, Beziehungen zwischen den Tabellen, wir Art compartmentalize oder abstrakte Dinge, ein Weg, wo wir nur die wirklich wichtigen Informationen wir kümmern uns um in der Tabelle des Benutzers. Und dann haben wir Zusatzinformationen oder zusätzliche Informationen in anderen Tabellen dass wir mit der Hauptrück verbinden Benutzer-Tabelle in einer bestimmten Weise. Hier haben wir also diese beiden Tabellen, aber es gibt eine Beziehung zwischen ihnen, Recht? Es scheint, wie Benutzernamen könnte etwas sein, dass die gemeinsam zwischen existiert Diese zwei verschiedenen Tabellen. So was, wenn wir jetzt haben, eine Situation, wo wir wollen den vollständigen Namen des Benutzers aus zu bekommen des Benutzers Tisch, und ihre Mutter Namen von der Mutter-Tabelle? Wir haben nicht einen Weg, um dass, wie es steht, nicht wahr? Es gibt keinen einzigen Tabelle, die enthält sowohl den vollständigen Namen und den Namen der Mutter. Wir haben nicht die entsprechende Option von dem, was wir bisher gesehen haben. Und so haben wir die Einführung Die Idee einer JOIN. Und schließt sich wahrscheinlich die complex-- es ist wirklich die meisten komplexen Operation wir gehen über in dem Video zu sprechen. Sie sind ein wenig kompliziert, aber wenn man einmal den Dreh raus, sie sind eigentlich nicht so schlimm. Es ist nur ein Spezialfall einer SELECT. Wir werden eine Reihe von Auswahl Spalten einer Tabelle Füge in einer zweiten Tabelle auf irgendeinem Prädikat. In diesem Fall darüber nachdenken mag this-- Tisch man einen Kreis hier, Tabelle zwei ist ein weiterer Kreis hier. Und das Prädikat Teil in der Mitte, ist es ein bisschen wie wenn Sie denken, etwa als ein Venn-Diagramm, was haben sie gemeinsam? Wir wollen diese zwei Tabellen verknüpfen basierend auf, was sie gemeinsam haben und diese hypothetische Tabelle erstellen das ist die Fusion der beiden zusammen. Also werden wir dies in einem zu sehen Beispiel und vielleicht helfe Deaktivieren Sie es ein wenig. Also vielleicht die Sie auswählen möchten user.fullname und moms.mother Nutzer-Beitritt in die Mütter Tabelle in jeder Situation wo der Benutzername Spalte ist die gleiche zwischen ihnen. Und dies ist ein neuer Syntax hier, diesen Benutzer. und Mütter .. Wenn ich tue, mehrere Tabellen zusammen, kann ich eine Tabelle anzugeben. Ich kann insbesondere zu unterscheiden , dass auf zumin dort unten. Ich kann den Benutzernamen unterscheiden Spalte der Tabelle users aus dem Benutzernamen Spalte der Mütter Tabelle, die otherwise-- sind wenn wir nur die Benutzernamen entspricht Benutzernamen, der nicht wirklich alles bedeuten. Wir wollen, es zu tun, wenn sie übereinstimmen. So kann ich die Tabelle und die angeben, Spaltennamen im Fall einer Situation wo es wäre unklar, was ich rede. Also das ist alles, was ich tue, ist, ich bin sagen diese Spalte aus dieser Tabelle, und sehr explizit. Also noch einmal, ich bin der Auswahl der vollständigen Namen und der Name der Mutter von der Benutzer-Tabelle miteinander verknüpft mit dem Mütter Tabelle in jeder Situation wo sie teilen diese column-- sie teilen diese Benutzernamen Begriff. Also hier sind die Tische wir vorher hatten. Dies ist der Zustand unserer Datenbank, wie es jetzt existiert. Die Informationen die wir Extrahieren ist dies für den Anfang. Dies ist die neue Tabelle werden wir zu schaffen kombiniert diese zusammen. Und beachten Sie, dass wir nicht Hervorhebung Newmans Zeile in Tabelle des Benutzers, und wir sind nicht Hervorhebung Kramers Zeile in der Tabelle Mütter da weder eine existiert in sowohl sets-- in beiden Tabellen. Die einzige Information, die gemeinsam ist, zwischen ihnen ist Jerry ist in beiden Tabellen und gcostanza ist in beiden Tabellen. Und so, wenn wir die SQL-JOIN, was wir get-- und tun wir tatsächlich bekommen diese. Es ist eine Art einer temporären Variablen. Es ist wie ein hypothetischer Fusion der beiden Tabellen. Wir etwas wirklich erhalten wie diese, in denen wir zusammen die Tabellen auf die fusionierte Informationen, die sie gemeinsam haben. So bemerken, dass users.username und moms.username Spalte es ist genau das gleiche. Das war die Informationen, entsprach der Nutzer Tabelle und die Mütter Tisch. Und so sie verschmolzen wir zusammen. Wir verworfen Kramer, weil er nicht in der Benutzer-Tabelle vorhanden sind, und wir verworfen Newman, weil er nicht in der Tabelle vorhanden sind Mütter. Das ist also der hypothetischen Fusions mit dem JOIN-Operation von SELECT. Und dann waren wir auf der Suche vollständigen Namen des Benutzers und der Mutter des Benutzers, und so ist die Information, daß würden wir aus dem Gesamt Abfrage zu erhalten dass wir mit SELECT gemacht. So schlossen wir uns die Tabellen zusammen Wir extrahierten diese beiden Säulen, und so, dass das, was wir bekommen würde. Aber SQL reiht sich in eine Art von komplizierter. Sie werden wahrscheinlich nicht tun, ihnen zu viel, sondern nur eine Vorstellung des Skeletts dass Sie verwenden, um zwei zusammenführen Tische zusammen, wenn Sie benötigt werden. Die letzten beiden sind ein etwas einfacher das verspreche ich. So aktualisieren, können wir UPDATE verwenden um Informationen in einer Tabelle ändern. Das allgemeine Format ist UPDATE einige Tisch, setzen einige Spalte auf einen Wert Wo einige Prädikat erfüllt ist. So zum Beispiel, wir möchten Sie vielleicht um die Benutzer-Tabelle zu aktualisieren und legen Sie das Kennwort, um yada bla, wobei die ID-Nummer 10. Also in diesem Fall, wir sind Aktualisieren der Benutzer-Tabelle. Die ID-Nummer 10 für dass erste Zeile gibt, und wir, die aktualisiert werden soll Kennwort Blabla. Und so ist das, was passieren würde. Es ist ziemlich einfach, nicht wahr? Es ist nur eine sehr einfache Modifikation der Tabelle. DELETE wird die Operation, die wir verwendet Informationen zu entfernen aus einer Tabelle. DELETE FROM Tabelle WHERE einige Prädikat erfüllt ist. Wir wollen von dem Löschen Benutzer-Tabelle beispiels wo der Benutzername ist Newman. Sie können sich wahrscheinlich vorstellen, was mit gehen passieren hier, nachdem wir führen Sie, dass SQL Abfrage, Newman ist vom Tisch weg. Also alle diese Vorgänge, wie ich schon sagte, sind sehr einfach zu in phpMyAdmin tun. Es ist eine sehr benutzerfreundliche Schnittstelle. Aber es erfordert manuellen Aufwand. Wir wollen nicht, um den manuellen Aufwand zu beschäftigen. Wir wollen, dass unsere Programme zur tun dies für uns, nicht wahr? So dass wir vielleicht wollen dies programmgesteuert. Wir wollen die SQL übernehmen und haben etwas anderes, dies für uns tun. Aber was haben wir gesehen, dass erlaubt wir programmatisch etwas zu tun? Wir haben PHP gesehen, oder? Es werden einige Dynamik in unsere Programme. Und so glücklich, SQL und PHP spielen sehr schön zusammen. Es gibt eine Funktion in PHP genannte Abfrage, die verwendet werden können. Und Sie können die geben Parameter oder das Argument um eine SQL-Abfrage-Abfrage, Sie möchten, um auszuführen. Und PHP wird es für Sie tun. So, nachdem Sie angeschlossen haben Ihre Datenbank mit PHP, es gibt zwei Vorwahlen Sie dies tun. Es gibt etwas namens MySQLi und so genannte PDO. Wir werden nicht in einen riesigen gehen Menge Detail gibt. In CS50 verwenden wir PDO. Nachdem Sie angeschlossen haben zu Ihrer Datenbank, die Sie können dann Ihre Datenbank-Abfragen indem man die Abfragen als Argumente PHP-Funktionen. Und wenn Sie das tun, speichern Sie die Ergebnis in einem assoziativen Array festlegen. Und wir wissen, wie die Arbeit mit assoziative Arrays in PHP. So könnte ich etwas zu sagen wie this-- $ results-- dies ist in PHP-- gleich Abfrage. Und dann in der Abfragefunktion Dieses Argument dass ich vorbei abfragen das sieht aus wie SQL. Und in der Tat, auf dem SQL ist. Das ist die Abfrage-String, dass ich gerne auf meiner Datenbank auszuführen. Und so in rot, das ist PHP. Dies ist SQL, die ich Integration in PHP, indem sie es das Argument auf die Abfrage-Funktion. Ich möchte Fullname aus wählen Benutzer-ID-Nummer, wo gleich 10. Und dann vielleicht, nachdem ich das getan haben, Ich könnte so etwas wie dies zu sagen. Ich will aus dem Druck Nachricht Danke für die Anmeldung. Und ich will es interpolate-- Ich möchte interpolieren $ fullname Ergebnisse. Und so das ist, wie ich mit, dass assoziatives Array, das ich zurück. $ fullname Ergebnisse würden im Grunde am Ende Ausdrucken, Dank für Anmeldung, Jerry Seinfeld. Das war der vollständige Name wo idnum entspricht 10. Und so alles, was ich tue, wird ich now-- I gespeichert meine Frage, die Ergebnisse meiner Abfrage und die Ergebnisse in einem assoziativen Array, und fullname ist der Name des die Spalte Ich war immer für. Also das ist mein Schlüssel in den Ergebnissen assoziatives Array, die ich will. Also Vielen Dank für Anmeldung, $ Ergebnisse, fullname druckt, wird bleiben direkt zwischen diesen geschweiften Hosenträger, Jerry Seinfeld. Und ich werde gerne aus der Nachricht drucken Vielen Dank für Anmeldung Jerry Seinfeld. Nun, wir wollen wahrscheinlich nicht zu schwer Code Dinge wie, dass in, oder? Wir möchten vielleicht so etwas wie Druck zu tun f, wo wir ersetzen und vielleicht sammeln verschiedene Informationen, oder vielleicht haben die Abfrage-Prozess unterschiedliche Informationen. Und so Abfrage hat der Abfragefunktion dieser Begriff der Art von Substitutionen sehr ähnlich f Prozent s drucken und Prozent c, Fragezeichen. Und wir können Frage verwenden Noten sehr analog bis f, um Ersatzgrößen drucken. Also vielleicht Ihren Benutzer früher angemeldet, und Sie ihre Benutzer-ID-Nummer gespeichert in $ _SESSION von PHP Super global in der Schlüssel-ID. Also vielleicht, nachdem sie eingeloggt sind, Sie setzen $ _SESSION ID = 10, Extrapolieren aus dem Beispiel wir gerade gesehen haben vor einer Sekunde. Und so, wenn wir tatsächlich auszuführen Diese Abfrage die Ergebnisse jetzt, es wäre in 10-Stecker, oder was auch immer $ _SESSION ID-Wert ist. Und damit können wir ein bisschen mehr Dynamik. Wir sind nicht harte Kodierung Dinge mehr. Wir sparen Informationen irgendwo und dann Wir können diese Informationen wieder zu verwenden, Art verallgemeinern, was wir tun wollen, und nur Plug-in und Wandel das Verhalten von unserer Seite basierend auf, was ID-Nummer des Benutzers tatsächlich ist, nachdem sie sich angemeldet haben. Es ist auch möglich, wenn auch, dass Ihre Ergebnisse festgelegt kann dagegen aus mehreren Zeilen bestehen. In dem Fall müssen Sie ein Array von arrays-- ein Array von assoziativen Arrays. Und man muss nur durchlaufen. Und wir wissen, wie man durchlaufen durch ein Array in PHP, nicht wahr? So, hier ist wohl die komplexe Sache, die wir bisher gesehen haben. Es tatsächlich integriert drei Sprachen zusammen. Hier in rot, ist dies einige HTML. Ich bin anscheinend starting-- dies ein Ausschnitt einiger HTML, die ich habe. Ich fange einen neuen Absatz, dass sagt, die Mütter des Fernsehers Seinfeld. Und dann unmittelbar danach Ich fange an einen Tisch. Und dann nach, dass ich haben einige PHP, nicht wahr? Ich habe alle diese PHP-Code in es. Ich bin offenbar werde eine Abfrage machen. Und, um die Abfrage zu machen, ich bin zu gehen werden mit SELECT Mütter Mütter. Also das ist getting-- das ist SQL. Also das der blaue ist SQL. Die rote wir vor einer Sekunde sah, war HTML. Und die grüne hier PHP. Also ich mache eine Abfrage zu meiner Datenbank, ich bin Auswahl aller Mütter in der Mütter-Tabelle. Nicht nur eine Reduktion auf bestimmte Reihe, frage ich für alle von ihnen. Dann überprüfe ich, wenn Resultat Gleichen nicht gleich falsch. Dies ist nur meine Möglichkeit der Überprüfung sort der, wenn die Ergebnisse nicht gleich null, dass wir sehen, c zum Beispiel. Im Grunde ist dies nur die Überprüfung zu machen, sicher, dass es tatsächlich bekam Daten zurück. Denn ich will nicht, um den Druckvorgang zu starten von Daten, wenn ich nicht alle Daten zu erhalten. Dann für jeden Ergebnisse als Folge der foreach-Syntax von PHP, alles, was ich tue, ist Ausdruck von $ result Mütter. Und so werde ich, um einen Satz zu erhalten aller Mütter von each-- es ist ein Array von assoziativen arrays-- und ich Ausdrucken jede als eigene Zeile einer Tabelle. Und das ist wirklich schön viel alles dort ist zu ihm. Ich weiß, es ist ein wenig wenig los hier in diesem letzten Beispiel mit Arrays von arrays-- Arrays von assoziativen Arrays. Aber es ist wirklich einfach zu kochen hat in SQL zur Erstellung einer Abfrage, in der Regel die Auswahl, nachdem wir bereits haben legte Informationen in der Tabelle, und dann einfach herausziehen. Und das ist wir es schaffen würden in diesem speziellen Fall. Wir würden alle Einzel extrahieren Mütter aus der Mütter Tisch. Wir haben eine ganze Reihe von ihnen, und wir wollen durch laufen und ausdrucken Jeder. Also noch einmal, dies ist wahrscheinlich die komplizierteste Beispiel wir haben gesehen, weil wir Mischen von drei verschiedenen Sprachen zusammen, nicht wahr? Auch HTML haben wir hier in rot, mit einigen SQL hier in Blau gemischt, mit einigen PHP in grün gemischt. Aber alle diese spielen gut zusammen, es ist nur eine Frage der Entwicklung gute Gewohnheiten, so dass Sie bekommen können sie, zusammen zu arbeiten, wie Sie wollen. Und der einzige Weg, um wirklich das tun, ist zu üben, üben, üben. Ich bin Doug Lloyd, ist dies CS50.