Hallo, und willkommen zu unserem Vortrag über SQL.
Dies ist also eine sehr,
sehr kurze Einführung in SQL.
Ich liebe SQL.
Ich habe
neulich mit einem Schüler gesprochen und sie sagten
: „SQL ist meine Lieblingssprache.“
Und ich sagte: „Ich muss zustimmen, dass
SQL auch meine Lieblingssprache ist.“
Da SQL so schön ist,
müssen Sie nicht einmal Schleifen in SQL schreiben,
schreiben wir Schleifen in Sprachen wie
Python, nur weil wir müssen.
Das Problem ist, dass SQL perfekt ist,
aber es ist nicht die Art, wie wir
etwas so Komplexes wie Linux oder Python schreiben könnten.
Und so ist SQL nicht wirklich die Art, wie Computer denken,
wir haben diese Dinge genannt Datenbank-Engines,
und diese Datenbank-Engines machen
die Dinge wirklich, wirklich gut funktionieren.
Und so ist SQL eine gute Möglichkeit, Daten zu organisieren,
aber eine Menge Arbeit ist daran gegangen
, diese Daten organisiert zu halten und es einfach zu machen.
Es ist also, als gäbe es diese Abstraktion,
und es ist eine Menge Arbeit, um diese Abstraktion funktionieren zu lassen.
Also möchte ich mit ein wenig
Geschichte vor Datenbanken beginnen,
und Sie denken vielleicht: „Nun, vor
Datenbanken, wie könnte das sein?“
Nun, in den alten Tagen,
und wenn Sie alte Filme mit Computern sehen,
sehen Sie Bilder, die
diese Bandmaschinen
im Hintergrund haben und sich drehen.
Und das Drehen der Bandmaschine ist die
Art physischer Manifestation einer Berechnung.
Und es hatte damit zu tun, dass
Computer in den alten Tagen nicht genügend Daten hatten,
um alle ihre Daten im Speicher oder auf einer Festplatte zu speichern,
wir hatten nicht einmal Festplatten in den frühen Tagen.
In den frühen Tagen waren Bänder das, was wir hatten,
und wir benutzten eine Art Variation von Audiobändern,
und anstelle von Audio
enthielten sie Daten, Nullen und Einsen.
Die Art und Weise, wie die Dinge in den alten Tagen funktionieren würden
, so dass Sie sozusagen eine Datenbank haben konnten,
war, dass die Datenbank all
Ihre Daten auf einem Band aufgezeichnet wurden.
Und das Wichtigste für ein Band ist, dass
es eine physische Sache war,
und so musste man es zurückspulen,
vorwärts und rückwärts gehen.
Und die meisten von Ihnen
haben wahrscheinlich noch nie ein Kassettenband oder ein achtspuriges Band
oder ein Rollenband gesehen,
aber es ist ein physisches, langes Stück Plastik,
und um die Daten am Ende zu erhalten,
musste man es drehen, bis man dort ankam.
Und so war es nicht das, was wir Random Access nennen,
was bedeutet, dass bei einem zufälligen Zugriff,
egal ob es sich um Speicher oder das Laufwerk handelt, der
zufällige Zugriff ermöglicht, an
jedem Ort ungefähr in einer bestimmten Zeit zu gelangen.
Wenn Sie sich in der Nähe von etwas auf einem Band befinden,
können Sie es sehr schnell erreichen.
Wenn du weit weg bist, musst du gehen
und dann warten und dann wieder kommen.
Das führte also zu einem Muster
, bei dem wir jede Nacht
das Band von den gestrigen Kontoguthaben abnahmen.
Sagen wir einfach, wir sind eine Bank,
und wir haben Leute, die zum Fenster kommen, Geld
einpacken, Geld herausnehmen.
Und dann würden wir alle
Transaktionen machen, manchmal auf physisch gestanzte Karten,
und dann würden wir sie sortieren, richtig?
Und sagen wir einfach, wir haben 26 Konten und Person C
auftaucht addiert $10 und Person F
erscheint und subtrahiert $10, usw. usw.
Und dann, was wir in der Nacht haben würden,
würden wir diese alle sortieren,
und es gab physische Maschinen, die
diese in den frühesten von sortieren würden Tage,
und dann würden wir die alte Balance,
A, B, C, D,
E, F, sitzen auf einem Band in der Reihenfolge, sortiert.
Und wir würden einen Prozess starten, nachdem die Bank geschlossen hatte,
wo wir die erste Platte vom Band wie A
lesen würden, wir würden die erste Transaktion von den Karten lesen
und sie vergleichen.
Und wenn das Band
früher war als die Transaktion
oder niedriger, würden wir es einfach kopieren, damit wir es kopieren.
Und dann würde das B mit dem C vergleichen,
und B würde kopiert werden,
und dann würde C stoßen,
und dann würden wir erkennen, dass die C-Daten,
wir müssten die C-Daten aktualisieren
und $10 zur Waage hinzufügen, und dann würden wir das schreiben.
Und Sie werden bemerken, wie wir das schreiben,
wir sortieren, es ist in sortierter Reihenfolge.
Dann würden wir D kopieren, wir haben nichts für D,
und es würde nur kopiert werden.
Wir würden E kopieren, wir haben nichts für E,
und es würde nur kopiert werden,
und dann hätten wir vergessen, F auf dieses Bild zu setzen,
wir hätten F und wir würden 10 subtrahieren, und wir würden es kopieren.
Und dann wären wir mit
der Art von Sachen fertig, die wir in dieser Nacht tun mussten,
und dann würden wir
diese neuen aktualisierten Daten haben, die
alle in der Kontoreihenfolge sortiert wurden.
Und dann in der nächsten Nacht
würden wir das Band bewegen,
das neue Band wäre das alte Band,
und wir würden es immer und immer wieder machen.
Und manchmal würden diese Prozesse
vier oder fünf Stunden laufen, weil die Bänder lang waren oder
mehrere Bänder waren,
und so wurde viel Rechenleistung
durchgeführt, nachdem die Banken um fünf Uhr geschlossen
hatten, dann kam eine Gruppe von Leuten rein, wir nannten sie Betreiber,
und sie würde diese Bänder montieren und
diese Aufträge ausführen und einfach da sitzen und beobachten,
wie sich diese Bänder drehen, während die Daten
von einem zum anderen kopiert wurden.
Also ja, das ist ziemlich cool.
Glücklicherweise machen wir das nicht mehr.
Die Sache, die es so gemacht hat, dass wir das nicht
tun müssen, ist die Erfindung von Festplattenlaufwerken.
Und Festplattenlaufwerke sind magnetische Medien,
genau wie Bandlaufwerke,
aber der Unterschied war, dass sie
auf diesen sich drehenden Platten waren.
Und was Sie tun könnten, ist, dass die Daten
in einer Reihe von konzentrischen Kreisen auf diesen Platten waren,
und dann hatten Sie einen Kopf
, der schnell ein- und ausziehen konnte.
Und so war die Geschwindigkeit, mit der Sie auf Daten zugreifen konnten,
eine Kombination mit der Geschwindigkeit, mit
der sich der Kopf zu einem bestimmten Zylinder bewegen konnte,
und Sie mussten warten, bis die Daten kamen.
Und so haben Sie manchmal 5.400 Umdrehungen pro Minute.
Das bedeutet also, dass 5.400,
5.000 Mal pro Minute,
das ist 100 Mal pro Sekunde.
Du würdest 100stel Sekunde darauf warten.
Und so ist das viel besser, als wie eineinhalb Minuten,
zwei Minuten, sogar 10 Minuten zu warten, um ein Band hochzudrehen.
Das Problem war also:
„Okay,
jetzt, wo wir diese wunderbare Technologie haben,
können wir all unsere nächtlichen Daten
auf einer Festplatte speichern, weil es genug Platz ist,
wie bauen wir
Technologie auf, um das wirklich gut zu nutzen?“
Und eine Menge Forschung,
eine Menge Informatik,
eine Menge von Anbieterforschung ging zu
verstehen, wie man diese neue Disketten-Sache am besten nutzen kann.
Ich erinnere mich, wie mit Leuten gesprochen
zu haben, weil wir eine Diskette benutzt haben,
die viel langsamer war,
also gingen sie nicht 5.400.
Es könnte also eine Viertelsekunde dauern, um
den Kopf zu bewegen, und es könnte
fast eine Sekunde dauern, um ihn herum zu drehen,
was immer noch viel schneller als 10 Minuten war, oder?
Es ist also ungefähr eine Sekunde, um
irgendwo auf der Diskette zu gelangen.
Und wir würden Ansätze zum Speichern von Daten aufbauen,
und wir würden mit dieser physischen Sache beginnen,
und Sie würden hören, wie es grunzen
und sich bewegen und grunzen und bewegen,
und dann würden Sie einen besseren Weg finden,
die Daten zu speichern,
und dann grunzen und bewegten sich weniger,
und Ihr Ding würde schneller gehen.
Das war also eine Forschungssache.
Es waren gute alte Zeiten, als Computer tatsächlich Geräusche machten,
und Sie konnten Ihren Code innerhalb von Computern ändern.
Und das erste, was wir natürlich taten,
war, diese sequentiellen Master-Updates zu nehmen und sie anzulegen,
aber das stellte sich heraus, dass es nicht das Beste war.
Und das war eine Art der Forschung ist,
nicht nur, wie können wir tun, was wir
früher für Daten tun, auf die nicht
zufällig zugegriffen werden konnte, und stattdessen,
sagen wir, dass wir es nutzen.
Und so viele Recherchen, viele Anbieter,
es gab eine Menge sehr teurer Software,
die Leute gekauft haben, um zu sagen:
„Sieh mal, du bist eine Bank,
und du willst wirklich wissen, wie das funktioniert.“
Was also passierte, war in den 60er und 70er Jahren,
die Computer-Anbieter kämpften,
und sie kamen mit einer Technik,
die im Vergleich zu unserer aktuellen Datenbanktechnik
einfach trivial einfach war,
aber es dauerte damals viel Arbeit,
und sie würden mit all den anderen kämpfen. Computer-Anbieter,
und sie würden sagen: „Unser Index
sequentieller Mechanismus ist besser.“
Und Vendor 2 würde sagen:
„Unser Netzwerkansatz ist besser.“
Und dann würden sie sitzen, und sie
würden irgendwie miteinander kämpfen,
und dann würden die armen Kunden sagen:
„Ich weiß nicht mal, wovon du redest.“
Und dann kauften sie einfach
das Zeug von dem Verkäufer, der sie
zum Golf oder zum
besten Mittagessen mitnahm oder sie auf eine Reise nach Florida mitnahm.
Und dann würden sie sich einfach
an das anpassen, was dieser Anbieter tat.
Und so war es wirklich irgendwie beängstigend, weil wir
an einen Ort gezogen waren, an dem du in einen Verkäufer eingesperrt wurdest,
und wenn du dann in
einen Verkäufer eingesperrt bist, bist du in schlechter Verfassung.
Und so
hatte insbesondere die US-Regierung eine Tonne
Geld und kaufte Tonnen von Computern,
sowohl für die normale Datenverarbeitung als auch für
strategische Dinge wie militärische Sachen,
und so kauften sie Tonnen von Computern und
sie wussten, dass diese Anbieter,
wenn sie auf den Punkt kamen wo sie
sie in einem einzigen Anbieter gesperrt haben,
dass der Anbieter nur in der Lage wäre, den Preis zu diktieren.
Und so
entschied die Bundesregierung über NIST, das Nationale Institut für Standards und Technologie, dass Datenbanken einen Standard benötigen.
Sie brauchten einen Weg, damit wir mit
jeder Datenbank von jedem Anbieter mit
der gleichen Technik sprechen konnten und nicht einen Anbieter tun müssen.
Wenn Sie dann den Anbieter wechseln,
mussten Sie Ihre Software komplett neu schreiben.
Also hat NIST nicht angegeben, wie diese Abstraktion
, dieser Standard, funktionieren würde.
Sie brachten gerade die Anbieter rein und sagten:
„Wir werden aufhören,
Ihre Software zu verwenden, wenn Sie keinen Standard haben.“
Und es war eine perfekte Zeit, denn obwohl
die Anbieter dachten, dass alles perfekt und wunderbar
war, gab es eine Menge von oben.
Und insbesondere gab es
dieses Konzept von relationalen Datenbanken,
die damals eher
eine mathematische Theorie von einem besseren Weg zum Speichern
und Abrufen von Daten war, als es
eine praktisch implementierte verfügbare Technologie war.
Und so SQL, und das ist Liz Fong,
die ich ging und ich habe ein Interview bei NIST gemacht,
sie spricht über die frühen Tage,
es ist ein großartiges Interview,
die frühen Tage, wie dieser SQL-Standard wirklich
so viel Sinn gemacht hat und
die Branche wirklich repariert hat und die Industrie wirklich gut funktioniert hat.
Und ich empfehle, dass Sie sich
dieses Video ansehen, nur damit Sie irgendwie sehen können.
Nun, was SQL im Grunde gesagt hat, war, dass
wir uns nicht so sehr
darum kümmern, wo diese Daten tatsächlich auf der Festplatte sind, weil die
früheren Datenbankansätze waren
wir Programmierer wissen würden, dass es
Zylinder und Positionen gab,
und wir würden Dinge auf bestimmte Weise platzieren,
und wir würden machen Indizes
und wir würden uns die Indizes selbst ansehen,
alle Arten von verschiedenen Dingen,
oder wir würden an einen Ort auf der Festplatte lesen und das würde
eine Adresse des nächsten Ortes haben, den
wir auf der Festplatte lesen sollen.
Und sie sagten, Sie wissen was,
lassen Sie uns nicht so viel über
die physische Speicherstruktur auf dem Schreibtisch kümmern, aber stattdessen,
lassen Sie uns eine Sprache, mit der
wir ausdrücken können, was wir
lesen, schreiben, aktualisieren
und löschen wollen, auf der Festplatte in einer wirklich einfachen Sprache,
und dann haben wir kann ein Stück Software erstellen
, dass es viele Disk-Formate darunter geben könnte.
Und dann könnten wir alle diese Sprache benutzen und Sie könnten
Vendor A kaufen und
diese Sprache und Vendor B benutzen und diese Sprache benutzen,
und dann könnten Sie sie sogar vergleichen und sagen:
„Hier ist ein Haufen Zeug in dieser Sprache.
Welcher Anbieter kann dies schneller ausführen?“
Und so hatte der NIST auch eine Reihe von Benchmarks,
TPC war einige der Benchmarks.
Und was sie taten, ist, dass sie
es im Grunde so gemacht haben, dass dies wie eine schöne und einfache Sprache war,
und es ist, was wir SQL nennen.
Ich denke, irgendwann wurde es
die Simple Query Language genannt,
und es ist die Sprache, die wir verwenden, um mit Datenbanken zu sprechen.
Und das Interessante ist, was SQL uns erlaubt hat,
wirklich in den 60er und 70er Jahren zu tun, als es
zum ersten Mal herauskam, war es, mit den alten Datenbanken wie Index-
, sequentielle und Netzwerk-ähnliche Datenbanken zu sprechen,
und als diese neue Form namens relationale Datenbanken,
die so genial hatten mathematische Untermauerung,
aber wurde schlecht in der ersten Zeit umgesetzt,
konnten wir einfach sagen: „Oh komisch.“
Wenn die Leistung von relationalen Datenbanken zu
dem Punkt kam, wo es so gut war wie die anderen Datenbanken,
dann konnten wir einfach wechseln und wir konnten dasselbe SQL sprechen.
So ermöglichte es eine erstaunliche Innovation
über einen Zeitraum von 10 oder sogar 15 Jahren,
wo die Abstraktion es uns ermöglichte, Datenbanken auf
wunderbare Weise zu verbessern,
ohne wirklich ändern zu müssen, wie wir als Programmierer sie benutzt haben.
Ziemlich genial, ich werde ehrlich sein.
Und so habe ich über diese Idee von
relationalen Datenbanken und relationalen Datenbanken gesprochen,
und ich werde zugeben, dass, als ich
relationale Datenbanken in den frühen 1980er Jahren zum ersten Mal sah, ich wie,
das ist Mist, denn wieder,
ich konnte Disketten hören und ich wusste, dass
wir etwas bewegen und Ich hatte
so viel Bewusstsein für das, was vor sich ging,
und ich liebte dieses Bewusstsein.
Und die relationalen Datenbanken verbargen,
was hinter dieser Schicht vor sich ging,
und es stellte sich heraus, dass, wenn ich es benutzte,
es langsamer war, weil es noch nicht clever war.
Und so begann relationale Datenbanken
als eine mathematische Idee als
der theoretische beste Weg,
Netzwerke von Daten mit Spalten
, Zeilen und Verbindungen und Verknüpfungen darzustellen,
und wir werden darüber schließlich sprechen.
Und es war eine schöne Idee und die Mathematik hatte Recht.
Es dauerte nur eine lange Zeit, um an
den Punkt zu gelangen, an dem die überlegene Mathematik
relationaler Datenbanken
besser funktionierte als die hochgeschickt
optimierten Datenbanksysteme der vorherigen Generation.
Es gibt also viele gängige Datenbanksysteme
, über die Sie laufen werden.
Einige von ihnen sind Open Source,
einige von ihnen sind kommerziell.
Postgres und MySQL sind Open Source.
Postgres ist wahrscheinlich die
kompliziertere und komplexere und reichhaltige,
Oracle ist eine komplizierte, komplexe
und reichhaltige Datenbank, die
für viel und viel Geld verfügbar ist,
und Microsoft hat eine Datenbank namens SQL Server.
Und all diese Datenbanken, die wir sehen, haben sich in
gewissem Sinne entwickelt, nachdem die SQL-Spezifikation existiert hat,
also haben sie nur eine Art von SQL erstellt.
Es gab Legacy-Datenbanken, die SQL gelernt haben.
Und es gibt viele andere Datenbanken.
SQLite ist das, was wir eigentlich
mit diesem Kurs verwenden werden,
und es ist super cool, super schnell.
Auf Ihrem Handy
haben Sie wahrscheinlich 40 Kopien von SQLite,
und in Ihrem Auto haben Sie wahrscheinlich 40 Kopien von
SQLite, weil es eine echte winzige eingebettete Datenbank ist.
Es ist nicht wirklich gut für den Produktionsmaßstab.
Wenn Sie 100 Benutzer
gleichzeitig auf eine Website treffen,
sind Postgres, MySQL oder Oracle oder SQL Server wirklich eine Art von Online-echten Multiprocessing-Datenbanken.
Aber SQLite ist großartig, weil es wirklich einfach ist.
Es speichert alles in einer Datei,
wir können die Datei bewegen, usw.
Also ich liebe SQLite,
und in dieser Klasse und in dieser Sache
werden wir über SQLite sprechen.
Aber alles, worüber wir sprechen
, gilt für all diese unterschiedlichen Datenbanksysteme.
Das erste, was Sie tun müssen, wenn
Sie mit der Datenbank arbeiten, ist, dass Sie
einen Vertrag
zwischen Ihnen und der Datenbank haben müssen,
was die Form
der Spalten ist, wie breit die Spalten sind,
welche Art von Daten Sie darin speichern werden.
Und es informiert dann, wie
die Datenbanksoftware
diese Datenbank wie auf der Festplatte strukturieren wird.
Und ein Teil dessen, was Sie tun, ist,
dass Sie der Datenbanksoftware, MySQL
oder Postgres, oder SQLite, erlauben, den Speicher zu optimieren.
Es ist so viel klüger als du.
Etwas wie Oracle oder MySQL
oder Postgres stellt wahrscheinlich eine Milliarde Dollar dar,
wenn nicht mehr, Forschung und
Entwicklung über den besten Weg
zum Speichern und Abrufen von Daten.
Und du musst nichts davon wissen.
Du sagst nur, schau, ich werde diese Spalten haben,
es wird 100 Zeichen Text haben,
dann werde ich eine ganze
Zahl und eine Fließkommazahl haben, dann 3.000 Zeichen Text,
und du machst dir Sorgen um all das Detail.
Aber der Schlüssel ist, wenn Sie einfach sagen:
„Ich werde alles speichern, was ich will“, dann kann es nicht optimieren,
und so gibt es diese Sache
, wo Sie am Anfang einen Vertrag machen müssen und sagen:
„Genau so werde ich
die Daten auslegen, während ich mit dem Datenbanksystem spreche.
und dann können Sie herausfinden, wie Sie
die Daten auf der tatsächlichen Festplatte auslegen.“
Und so wird das Schema oder das Datenbankmodell genannt,
und das Erstellen eines Datenbankmodells ist selbst eine coole Sache.
Wenn Sie also eine komplexe Anwendung erstellen,
haben Sie diese Modelle und sie haben Verbindungen,
und wir werden schließlich über all diese Dinge sprechen.
Aber es ist eine entscheidende Sache zu sagen
, dass dies ein Vertrag zwischen Ihnen und
der Datenbanksoftware ist, damit
die Datenbanksoftware
die Speicherung der Datenbank optimieren kann.
Sobald Sie das Schema angegeben haben,
können Sie Abfragen schreiben, die von diesem Schema abhängen.
Sie können also eine Spalte namens
email und eine Spalte namens name haben,
und dann können Sie Daten
mit diesem Schema in die Datenbank einfügen,
Sie können Daten mithilfe des Schemas abrufen,
Sie können die Datenart irgendwo tief in der Datenbank ändern,
und dann können Sie Daten löschen.
Hang auf eine Sekunde. Whoa. Hallo da.
Was machst du da unten? Oh, hab es gemacht.
Entschuldigung, Entschuldigung Du bist eine schlechte Kreatur.
Sieh dir das an. Ich habe mich gefragt, was das für ein Geräusch ist.
Komm her. Ich muss euch all diesen Leuten vorstellen.
Komm her.
Du benimmst dich nicht.
Das ist Shelby.
Hallo Shelby. Das ist Shelby. Das ist mein Welpe.
Ich versuche, sie aus
dem Käfig zu halten, sie sitzen zu lassen und an meinen Füßen zu kommen,
und sie hat ein paar Kauspielzeuge.
Hallo Shelby. Das ist Shelby.
Sie unterbricht.
Du unterbrechst meinen Vortrag. Aber du bist süß.
Also hör auf, auf den Stift zu
kauen, kaue auf dein Kauspielzeug, das ich dir gegeben habe, okay?
Lassen Sie mich durch diesen Vortrag kommen.
Okay, du kannst runter.
Hör einfach auf, darauf zu kauen.
Tut mir Leid wegen dieser Unterbrechung.
Ich hörte nur Kaugeräusche und dachte,
ich nahm alles, aber dann
war ein Stift auf dem Boden,
und so trifft der Stift, der arme Stift Mr. Puppy.
Oh, na ja. Okay, wo war ich?
SQL. CRUD,
Daten erstellen, lesen, aktualisieren und löschen.
Und so ist unser nächster Schritt,
tatsächlich etwas SQL zu tun und eine Datenbank zu erstellen.
( MUSIK)