SQL ist die strukturierte Abfragesprache. Es wurde speziell für die Verwaltung und den Zugriff auf Daten in relationalen Datenbanken entwickelt. Das erste kommerzielle Unternehmen, das SQL einsetzte, war Oracle, dessen SQL * Plus-Abfragesprache immer noch die Grundlage aller relationalen Datenbankverwaltungssysteme (RDMS) ist..
Heute verwenden MySQL, SQL Server, SAP und Sybase SQL für den Datenbankzugriff. In diesem Handbuch geben wir Ihnen die Standardversion von SQL-Befehlen mit besonderem Augenmerk auf die Oracle-Implementierung in SQL * Plus.
AUSWAHL DES HERAUSGEBERS: Wir empfehlen die SolarWinds-Tools zur Infrastrukturverwaltung, um alle Ihre Microsoft-Tools, einschließlich SQL Server, zu überwachen. Sie benötigen eine Reihe von Überwachungsdienstprogrammen, die interagieren können, um alle Funktionen abzudecken, die Ihre relationale Datenbank unterstützen.
Relationale Datenbanken
SQL verwaltet relationale Datenbanken. Eine relationale Datenbank enthält Tabellen, die getrennt sind, um die Wiederholung von Daten zu reduzieren. Der Prozess der Entscheidung über die richtigen Gruppierungen von Datenkategorien heißtNormalisierung.”In einigen Fällen können Leistungsanforderungen vorschreiben, dass Tabellen besser funktionieren, wenn sie nicht vollständig normalisiert sind. Dieser Vorgang wird als „Denormalisierung“ bezeichnet und kommt nur selten vor.
Jede Tabelle benötigt eine Spalte, die jede Zeile eindeutig identifiziert. Dies nennt man die “Primärschlüssel.”Die anderen Tabellen, die mit dieser Entität verknüpft werden können, müssen in jedem Datensatz einen Verweis auf den Primärschlüssel enthalten. Diese Referenz nennt man “Unbekannter Schlüssel.” Du beitreten Tabellen zusammen, indem der Fremdschlüssel in einer Tabelle mit dem Primärschlüssel in einer anderen Tabelle abgeglichen wird. Diese Aktion wird mit SQL ausgeführt. Das Entity-Relationship-Diagramm ist eine nützliche Referenz, wenn Sie sich für die Strukturierung Ihrer SQL-Anweisung entscheiden.
Um den Zugriff zu beschleunigen, ist es normal, eine zu platzieren Index auf jedem Primärschlüssel in der Datenbank. Es ist auch möglich, häufig verwendete Joins zu speichern, um virtuelle Tabellen zu erstellen, die alsAnsichten.”
Ein weiteres Datenbankobjekt ist a auslösen. Dies ist ein Stück SQL, das immer dann gestartet wird, wenn ein Wert zu einer Spalte hinzugefügt oder geändert wird. Ein Trigger aktualisiert Werte in einer Spalte in einer anderen Tabelle oder in anderen Spalten in derselben Tabelle. Dies geschieht, wenn in der Spalte, in der der Trigger platziert ist, ein Wert hinzugefügt oder geändert wird. Es kann auch die Werte einschränken, die in eine Spalte eingegeben werden können.
DQL, DDL, DCL und DML
SQL enthält vier Befehlsteilmengen. Diese sind Datenabfragesprache (DQL), Datenbeschreibungssprache (DDL), Datensteuerungssprache (DCL), und Datenmanipulierungssprache (DML).
Bei den meisten Projekten ist die Datenbankadministrator (DBA) ist das einzige Teammitglied, das über die erforderlichen Berechtigungen verfügt DDL. Diese Befehlsgruppe erstellt, ändert und löscht Tabellen, Indizes, Trigger und Ansichten.
DML wird verwendet, um Datensätze zu Tabellen in der Datenbank hinzuzufügen, zu ändern oder zu entfernen. Der Zugriff auf diese SQL-Funktionen ist normalerweise auf Support-Mitarbeiter oder leitende, verantwortliche Mitglieder der Benutzergemeinschaft beschränkt.
DQL wird verwendet, um Berichte aus der Datenbank zu generieren. Diese Befehlsuntermenge wird von Programmierern verwendet und kann auch Endbenutzern zur Verfügung gestellt werden, damit diese ihre eigenen Abfragen durchführen können.
Die Verwaltung der Benutzerrechte wird in derselben Datenbank wie die Daten gespeichert. Der Zugriff auf diese Tabellen ist jedoch in der Regel auf den DBA beschränkt. Die Verwaltung des Benutzerzugriffs erfolgt durch DCL.
Es gibt einen nützlichen SQL-Befehl, der nicht in die Klassifikationen von DQL, DDL, DCL oder DML fällt. Das ist “beschreiben”Was normalerweise implementiert wird als DESC. Dies zeigt die Struktur eines Objekts in der Datenbank. Im Fall einer Tabelle wird eine Liste mit Spalten sowie deren Datentyp und Größe angezeigt. Es zeigt die SQL, die eine Ansicht oder einen Trigger erstellt hat, und die Spalten, die an einem bestimmten Index beteiligt sind.
Vergleichsoperatoren
Die Theorie hinter relationalen Datenbanken wurde von definiert E. F. Codd In Codds Definition liegt eine Anforderung an ein Abfragetool, das acht wesentliche relationale Operationen implementieren muss. Diese sind:
- WÄHLEN
- PROJEKT
- BEITRETEN
- PRODUKT
- UNION
- SICH SCHNEIDEN
- UNTERSCHIED
- TEILEN
Sie müssen jede dieser Operationen beherrschen, um effektiv auf Daten aus einer relationalen Datenbank zugreifen zu können. Diese werden weiter unten erläutert.
WÄHLEN
SELECT wurde ursprünglich aufgerufen BESCHRÄNKEN. Es ist die Möglichkeit, einen Datensatz oder eine Gruppe übereinstimmender Datensätze aus einer Tabelle in der Datenbank zu extrahieren. Sowie eine theoretische Operation, WÄHLEN ist der Name des Hauptbefehls in einer SQL-Implementierung. Tatsächlich wird der gesamte Datenabruf mit einem SELECT ausgeführt. Der Befehl ist so mächtig, dass er auf viele verschiedene Arten geändert werden kann. Die meisten SQL-Anweisungen, die Sie lernen müssen, sind die “Klauseln” in einer SELECT-Anweisung.
PROJEKT
PROJECT ist die Fähigkeit, eine Spalte (oder ein Attribut) in einer Tabelle zu isolieren. Dies wird immer mit einer SELECT-Anweisung implementiert.
BEITRETEN
JOIN verknüpft Tabellen zu einem gemeinsamen Attribut. Sie verwenden den Fremdschlüssel in einer Tabelle, um mit den Primärschlüsselwerten in einer anderen Tabelle übereinzustimmen. Das Gesetz vereint effektiv zwei Tabellen vorübergehend. Dies wird als Klausel in einer SELECT-Anweisung implementiert. Bei einem Join zwischen zwei Tabellen werden automatisch alle Datensätze ausgelassen, die nicht in beiden unterstützenden Tabellen enthalten sind. Ein “äußere Verbindung”Zeigt Datensätze an, die nicht mit der anderen Tabelle übereinstimmen, und lässt die Felder, die von der anderen Tabelle hätten geliefert werden sollen, leer.
PRODUKT
PRODUKT ist auch bekannt alsmal.”Dies wird als SELECT-Anweisung implementiert, die Daten aus zwei Tabellen bezieht, jedoch nicht die Verknüpfung zwischen ihnen angibt. Im wirklichen Leben gibt es nur sehr wenige praktische Gründe, warum jemals jemand an zwei Tischen auftreten würde. Es ist normalerweise ein Warnsignal, dass Sie eine JOIN-Klausel falsch geschrieben haben. Das Ergebnis eines PRODUKTS ist, dass jeder qualifizierende Datensatz in einer Tabelle mit jedem qualifizierenden Datensatz in der anderen Tabelle übereinstimmt. Wenn Sie also eine SELECT-Anweisung aus zwei Tabellen mit jeweils zehn Datensätzen erstellen, ergeben sich insgesamt 100 Datensätze.
UNION
UNION ist ein allgemeiner Operator in der Mengenlehre. Wenn Sie zwei Gruppen haben, kombiniert die Vereinigung alle Mitglieder beider Gruppen. Die Duplizierung wird aus den Ergebnissen entfernt. In SQL wird dies von der implementiert ODER Boolescher Operator.
SICH SCHNEIDEN
INTERSECT ist der andere Hauptoperator der Mengenlehre. Wenn Sie zwei Mengen haben, beschreibt der Schnittpunkt die Themen, die Mitglieder beider Mengen sind. Jedes Subjekt, das nur Mitglied einer der beiden Gruppen ist, wird von den Ergebnissen ausgeschlossen. In SQL wird dies von der implementiert UND Boolescher Operator.
UNTERSCHIED
UNTERSCHIED ist auch bekannt alsMinus“Und in der Notation wird durch das Minuszeichen (” – “) dargestellt. Es gibt verschiedene Möglichkeiten, einen UNTERSCHIED zu implementieren. Sie kann durch Einfügen eines Booleschen Werts erstellt werden NICHT in den Auswahlkriterien und es kann auch durch eine implementiert werden MINUS Operator gefolgt von einer Unterabfrage.
TEILEN
DIVIDE ist eine ungewöhnliche Operation, die wie PRODUCT nur sehr wenige praktische Anwendungen hat. Codd betrachtete DIVIDE als den Härtetest eines relationalen Systems und seines Abfragetools, sodass jede SQL-Implementierung diese Fähigkeit enthält, nur um sich für den Titel “relational” zu qualifizieren. In Wirklichkeit werden Sie es niemals verwenden. Die Implementierung von DIVIDE erfordert eine Reihe von Unterabfragen, die an a übergeben werden MINUS in Oracle SQL * Plus und einem AUSSER Operator in einigen anderen SQL-Implementierungen, z. B. SQL Server und PostgreSQL.
boolesche Operatoren
George Boole war ein britischer Mathematiker, der 1864 starb. Er erfand die Boolesche Algebra, die bis zum Aufkommen der Bereiche Informatik und relationale Datenbanken im späten 20. Jahrhundert keine praktische Anwendung fand. Boolesche Algebra ist für die Operationen von SQL von zentraler Bedeutung – Sie könnten nur die grundlegendste SQL-Abfrage schreiben, ohne die Boolesche Logik zu verwenden. Boolesche Logik untermauert auch alle Suchmaschinen. Die wichtigsten Booleschen Operatoren in SQL sind:
- UND
- ODER
- NICHT
Ein anderer schrulliger viktorianischer Brite, den Sie kennen müssen, ist Augustus de Morgan. Er entwickelte eine Beobachtung zur Transformation in der Booleschen Mengenlehre, die jeder SQL-Programmierer kennen muss. Dies ist, dass ein NICHT ändern kann, wie ein UND und ein ODER funktionieren. Die kurze Version ist, dass Sie vorsichtig sein müssen, wie Sie Klammern in Ihren Anweisungen verwenden, um unbeabsichtigte Konsequenzen zu vermeiden. Daher sollten “und” und “oder” auch als wichtige Boolesche Operatoren in SQL betrachtet werden.
UND
AND implementiert das SICH SCHNEIDEN in der Mengenlehre. Wenn Sie Datensätze aus einer Datenbank abrufen möchten, die nur zwei Anforderungen und nicht nur einem dieser zusammengesetzten Kriterien entsprechen, müssen Sie ein UND verwenden. Beispielsweise können Sie ein Saatgutgeschäft betreiben und Ihre Datenbank enthält eine Tabelle, in der alle Ihre Saatgüter mit ihren Attributen gespeichert sind. Ein Kunde ruft an und möchte nur gelbe Begonien. Also würden Sie Ihre Datenbank nach durchsuchen Spezies = “Begonie” UND Farbe = “Gelb” um den richtigen Saatgutkatalog zu erhalten.
ODER
ODER gibt Ihnen alle Mitglieder von zwei Sätzen – es ist die UNION in der Mengenlehre. Wenn Sie also in Ihrer Seed-Datenbank eine Abfrage ausgeführt haben: Spezies = “Begonie” ODER Farbe = “Gelb”, Sie würden Ergebnisse erhalten, die gelbe Rosen, gelbe Begonien, rosa Begonien und gelbe Narzissen enthalten. In diesem Beispiel qualifizieren sich gelbe Begonien zweimal. In der relationalen Theorie sollte nur ein Datensatz zurückgegeben werden. Glücklicherweise enthält SQL das Qualifikationsmerkmal AUSGEZEICHNET, also durch Eingabe AUSWAHL UNTERSCHEIDBAR * VON BLUMEN, WO ART = “BEGONIE” ODER FARBE = “GELB”, diese gelbe Begonienaufzeichnung würde nur einmal erscheinen.
NICHT
NOT ist leicht zu verstehen. Es schließt die Ergebnisse aus, die die folgende Anweisung erzeugen würde: AND NOT, OR NOT. In der Praxis werden Sie in einer Abfrage so gut wie nie “OR NOT” verwenden. Wenn Ihr Saatgutkunde eine andere Begonienfarbe als Gelb haben möchte, würden Sie verwenden Spezies = “Begonie” UND NICHT Farbe = “Gelb” Produkte zum Anbieten auswählen.
Klammern
Nach dem Gesetz von De Morgan:
„Die Verneinung einer Disjunktion ist die Konjunktion der Verneinungen; und die Verneinung einer Konjunktion ist die Disjunktion der Verneinungen. “.
Verwenden Sie im Klartext Klammern in Ihrer SQL-Anweisung, wenn Sie auch ein NICHT einschließen, um zu verhindern, dass sich Ihre ANDs in ORs und umgekehrt verwandeln. Durch das Zusammenfassen von Belichtungsreihen können Sie auch Ihre Auswahlkriterien verkürzen. Beispielsweise, NICHT (Art = “Begonie” UND Farbe = “Gelb”) ist das gleiche wie NICHT Spezies = “Begonie” ODER NICHT Farbe = “Gelb”.
Datensätze extrahieren
Verschiedene SQL-Implementierungen verwenden unterschiedliche Syntax. In diesem Handbuch folgen wir jedoch dem SQL * Plus von Oracle. Die Grundstruktur einer SQL-Datenauswahl ist:
WÄHLEN
VON
ellt werden, um Daten aus der Datenbank abzurufen. DCL wird verwendet, um die Zugriffsrechte auf die Datenbank zu steuern und zu verwalten. Vergleichsoperatoren SQL bietet verschiedene Vergleichsoperatoren, um Daten in der Datenbank abzufragen. Die häufigsten Vergleichsoperatoren sind =, , = und . WÄHLEN Die SELECT-Anweisung wird verwendet, um Daten aus der Datenbank abzurufen. Mit dieser Anweisung können Sie bestimmte Spalten auswählen, nach bestimmten Bedingungen filtern und die Ergebnisse sortieren. PROJEKT Die Projektion wird verwendet, um bestimmte Spalten aus einer Tabelle auszuwählen. BEITRETEN JOIN wird verwendet, um Daten aus zwei oder mehr Tabellen zu kombinieren, indem der Primärschlüssel einer Tabelle mit dem Fremdschlüssel einer anderen Tabelle abgeglichen wird. PRODUKT Das Produkt wird verwendet, um alle möglichen Kombinationen von Zeilen aus zwei oder mehr Tabellen zu generieren. UNION UNION wird verwendet, um die Ergebnisse von zwei oder mehr SELECT-Anweisungen zu kombinieren. SICH SCHNEIDEN Der Schnitt wird verwendet, um die gemeinsamen Zeilen aus zwei SELECT-Anweisungen zu finden. UNTERSCHIED Der Unterschied wird verwendet, um die Zeilen aus der ersten SELECT-Anweisung zu finden, die nicht in der zweiten SELECT-Anweisung enthalten sind. TEILEN Die Division wird verwendet, um die Zeilen aus der ersten SELECT-Anweisung zu finden, die mit allen Zeilen in der zweiten SELECT-Anweisung übereinstimmen. boolesche Operatoren SQL bietet auch boolesche Operatoren wie AND, OR und NOT, um komplexe Abfragen zu erstellen. Klammern können verwendet werden, um die Reihenfolge der Ausführung von Operatoren zu steuern. Datensätze extrahieren Mit der WHERE-Klausel können Sie Daten aus einer Tabelle basierend auf bestimmten Bedingungen filtern. Die Bedingungen können Vergleichsoperatoren, boolesche Operatoren und Funktionen enthalten. Tabellen verbinden JOIN wird verwendet, um Daten aus zwei