Abfragen in sql select query. Transact-SQL – Ändern und Löschen von Daten
Jede Tabelle hat ihren logischen Anfang und ihr logisches Ende. Außerdem besteht jede Tabelle aus Daten, die oft und im Fall von Datenbanken in größerem Umfang verstreut sind. Wie im ersten Eintrag zu SQL und Datenbanken erwähnt, können während des gesamten Lebenszyklus von Datenbanken regelmäßig Daten hinzugefügt werden. In dieser Zeit können mehr als ein Dutzend Daten eingegeben werden. In SQL, wie in allem anderen und in allem Computerprogramme, können Sie die Daten sortieren. Dies geschieht per Befehl SORTIEREN NACH. Es gibt zwei Argumente für diesen Befehl.
- ASC setzt die Reihenfolge in aufsteigender Reihenfolge (vom kleinsten zum größten)
- DESC - absteigend (vom größten zum kleinsten)
Versuchen wir, die Tabelle der Schuldner nach Nachnamen - Spalte Sname - in absteigender Reihenfolge zu sortieren
Schuldner
Anz | Monat | Jahr | Name | Stadt | Adresse | Strafe | Schulden |
0001 | Juli | 2012 | Iwanow | Stawropol | Stawropolskaja, 1 | 4891.00 | 50000 |
0002 | Dezember | 2019 | Kononow | Tatarisch | Sagorodnaja, 254 | 19565.00 | 684068 |
0003 | Dürfen | 2013 | Yamshin | Michailowsk | Ländlich, 48 | 9868.00 | 165840 |
0004 | August | 2012 | preny | Stawropol | Zentral, 16 | 4659.00 | 46580 |
... | ... | ... | ... | ... | ... | ... | ... |
9564 | Marsch | 2015 | Uliev | Demino | International, 156 | 6846.00 | 435089 |
9565 | Oktober | 2012 | Pawlowa | Stawropol | Haltestelle, 37 | 685.00 | 68059 |
9566 | Januar | 2012 | Uryupa | Michailowsk | Fontannaja, 19 | 1235.00 | 51238 |
9567 | November | 2017 | Waletow | Tatarisch | Ausgang, 65 | 13698.00 | 789654 |
Führen Sie die Anfrage aus
WÄHLEN*
VON Schuldnern
ORDER BY Sname DESC ;
Schuldner
Anz | Monat | Jahr | Name | Stadt | Adresse | Strafe | Schulden |
0003 | Dürfen | 2013 | Yamshin | Michailowsk | Ländlich, 48 | 9868.00 | 165840 |
9566 | Januar | 2012 | Uryupa | Michailowsk | Fontannaja, 19 | 1235.00 | 51238 |
9564 | Marsch | 2015 | Uliev | Demino | International, 156 | 6846.00 | 435089 |
0004 | August | 2012 | preny | Stawropol | Zentral, 16 | 4659.00 | 46580 |
9565 | Oktober | 2012 | Pawlowa | Stawropol | Haltestelle, 37 | 685.00 | 68059 |
0002 | Dezember | 2019 | Kononow | Tatarisch | Sagorodnaja, 254 | 19565.00 | 684068 |
0001 | Juli | 2012 | Iwanow | Stawropol | Stawropolskaja, 1 | 4891.00 | 50000 |
9567 | November | 2017 | Waletow | Tatarisch | Ausgang, 65 | 13698.00 | 789654 |
Die Bestellung kann auch in gruppierten Daten mit dem Befehl durchgeführt werden. Aber in diesem Fall sollte der ORDER BY-Befehl in der Abfrage der letzte sein
WÄHLEN*
VON Schuldnern
GRUPPE NACH Name
ORDER BY Sname DESC ;
Wenn in den geordneten Feldern Zellen mit leeren Werten (NULL) vorhanden sind, können sich diese Zellen je nach Programm, das mit der Datenbank arbeitet, entweder am Ende der Liste oder am Anfang befinden.
Es gibt noch einen weiteren Trick, um die Datenreihenfolge durchzuführen. Betrachten Sie eine Abfrage
WÄHLEN Sie Nummer, Jahr, Sname
VON Schuldnern
ORDER BY 2 DESC ;
Zwei bedeutet hier die Ordnungszahl der Spalte aus dem String „SELECT Num, Year, Sname“ und es ist diese Spalte, die am Ende verwendet wird, um in absteigender Reihenfolge zu ranken
Schuldner
Wie Sie sehen können, sind die Werte nach der Spalte Jahr sortiert, wobei das neueste Datum am Anfang der Liste steht.
Das Sortieren in SQL hat also die gleichen Rangordnungsprinzipien wie in jedem Computerprogramm. Es hängt alles vom Datenbankadministrator und seinen Anforderungen an diese oder jene Informationen ab, die er erhalten möchte.
SQL - SELECT-Anweisung
Der Name SQL (Structured Query Language) spiegelt die Tatsache wider, dass Abfragen das am häufigsten verwendete Element von SQL sind. Eine Abfrage ist eine Anweisung, die einen Befehl an ein Datenbankverwaltungssystem (DBMS) sendet, um bestimmte Informationen zu bearbeiten oder anzuzeigen. Alle Datenauswahlabfragen in SQL werden mithilfe der SELECT-Anweisung erstellt. Damit können Sie recht komplexe Prüfungen und Datenverarbeitungen durchführen.
Eine Abfrage kann Daten aus einer bestimmten Spalte oder aus allen Spalten einer Tabelle anzeigen. Um die einfachste SELECT-Abfrage zu erstellen, müssen Sie den Spaltennamen und den Tabellennamen angeben.
Syntax der SELECT-Anweisung
SELECT Spaltenliste FROM TabellennameWÄHLEN Ein Schlüsselwort, das der Datenbank mitteilt, dass es sich bei der Anweisung um eine Abfrage handelt. Alle Abfragen beginnen mit diesem Wort, gefolgt von einem Leerzeichen.
Spaltenliste Liste der Tabellenspalten, die von der Abfrage ausgewählt werden. Spalten, die nicht in der Anweisung angegeben sind, werden nicht in das Ergebnis aufgenommen. Wenn Sie die Daten aller Spalten anzeigen müssen, können Sie die abgekürzte Notation verwenden. Ein Sternchen (*) bedeutet die vollständige Spaltenliste.
FROM Tabellenname Schlüsselwort, das in jeder Anfrage vorhanden sein muss. Darauf folgt ein Leerzeichen, das durch den Namen der Tabelle getrennt ist, die die Datenquelle ist.
Der Code in Klammern ist in einer SELECT-Anweisung optional. Es ist für eine genauere Definition des Antrags erforderlich.
Es muss auch erwähnt werden, dass beim SQL-Code die Groß- und Kleinschreibung nicht beachtet wird. Das bedeutet, dass der SELECT-Eintrag als select geschrieben werden kann. Das DBMS unterscheidet nicht zwischen diesen beiden Einträgen, es wird jedoch empfohlen, alle SQL-Anweisungen in Großbuchstaben zu schreiben, damit sie leicht von anderem Code unterschieden werden können.
Sehen wir uns als Beispiele die Salespeople-Tabelle aus Martin Grabers klassischem SQL-Tutorial an.
Hier ist der MySQL-Code zum Erstellen einer Testtabelle:
CREATE TABLE `salespeople` (`snum` INTEGER(11) NOT NULL AUTO_INCREMENT, `sname` VARCHAR(20) COLLATE cp1251_general_ci DEFAULT NULL, `city` VARCHAR(20) COLLATE cp1251_general_ci DEFAULT NULL, `comm` DOUBLE(15,3) STANDARD NULL, PRIMARY KEY (`snum`))ENGINE=InnoDB CHARACTER SET "cp1251" COLLATE "cp1251_general_ci" COMMENT="InnoDB free: 5120 kB"; INSERT INTO `salespeople` (`snum`, `sname`, `city`, `comm`) WERTE (1001, „Peel“, „London“, 0,120), (1002, „Serres“, „San Jose“, 0,130 ), (1003, „Axelrod“, „New York“, 0,100), (1004, „Motika“, „London“, 0,110), (1007, „Rifkin“, „Barcelona“, 0,150); BEGEHEN;
Die Tabelle sieht so aus:
Beispiel für eine SELECT-Anweisung
1. Es ist notwendig, eine Liste der Verkäufer anzuzeigen und ihre Namen (sname) anzuzeigen
WÄHLEN Sie den Namen VON Verkäufern
Ergebnis:
Hier werden nach der SELECT-Anweisung die anzuzeigenden Spalten aufgelistet. Spaltennamen werden durch Kommas getrennt.3. Es ist notwendig, die gesamte Tabelle anzuzeigen
Dazu können Sie eine andere Syntax zum Schreiben von Abfragen verwenden. Wir listen jede Spalte nach der SELECT-Anweisung auf:
WÄHLEN Sie snum , sname , city , comm VON Vertriebsmitarbeitern
Oder Sie können das gleiche Ergebnis mit der Kurzschreibweise erreichen:
AUSWÄHLEN * VON Verkäufern Ergebnis:
snum | Name | Stadt | Komm |
---|---|---|---|
1001 | Schälen | London | 0,12 |
1002 | Serres | San Jose | 0,13 |
1003 | Axelrod | New York | 0,1 |
1004 | Motika | London | 0,11 |
1007 | Rifkin | Barcelona | 0,15 |
Dadurch werden 4 Spalten angezeigt, aber bei einem solchen Datensatz können Sie eine unnötige Spalte einfach auskommentieren. Zum Beispiel so:
SELECT /* snum , */ sname , city , comm VON Verkäufern
Jetzt wird die snum-Spalte nicht angezeigt, da sie auskommentiert ist. Sehr schnell und bequem. Wie Sie SQL-Code schreiben, liegt natürlich bei Ihnen, aber solche Dinge zu wissen, ist manchmal nützlich.
Verwenden von Ausdrücken in einer SELECT-Anweisung
Viele DBMS bieten spezielle Funktionen für die Verarbeitung von Abfrageergebnissen. Der Satz solcher Einrichtungen in verschiedenen DBMS ist unterschiedlich, aber es gibt einige Standardfunktionen, wie z. B. Ausdrücke. Beispielsweise möchten Sie möglicherweise einfache mathematische Operationen mit den Daten ausführen, um sie bequemer darzustellen, oder zusätzlichen Text in das Ergebnis einer Abfrage einfügen. Mit SQL können Sie skalare Ausdrücke und Konstanten zwischen ausgewählten Spalten platzieren, die Spalten in SELECT-Klauseln ergänzen oder ersetzen können. Betrachten Sie ein Beispiel.
4. Es ist notwendig, die Provisionen (comm) der Verkäufer als Prozentsätze anzuzeigen, nicht als Dezimalzahlen
SELECT snum, sname, city, comm * 100 VON Verkäufern
Ergebnis:
snum | Name | Stadt | Komm |
---|---|---|---|
1001 | Schälen | London | 12 |
1002 | Serres | San Jose | 13 |
1003 | Axelrod | New York | 10 |
1004 | Motika | London | 11 |
1007 | Rifkin | Barcelona | 15 |
Diese Spalte hat keinen Namen, da sie keine modifizierten Daten enthält und daher nach freiem Ermessen des DBMS benannt wird (z. B. benennt MySQL die Spalte comm * 100, in den Beispielen von M. Grabber hat die Spalte den Namen 4, d.h. seine Nummer).
In solchen Fällen ist es bequem zu verwenden Spaltenbenennung. Beispielsweise können Sie die letzte Spalte Prozent nennen. Dazu müssen Sie nach dem Spaltennamen das Schlüsselwort AS und dann den Namen der Spalte in der resultierenden Seite angeben.
SELECT snum, sname, city, comm * 100 AS "Prozent" VON Verkäufern Ergebnis:
snum | Name | Stadt | Prozent |
---|---|---|---|
1001 | Schälen | London | 12 |
1002 | Serres | San Jose | 13 |
1003 | Axelrod | New York | 10 |
1004 | Motika | London | 11 |
1007 | Rifkin | Barcelona | 15 |
Als Ergebnis der Abfrage erhält die letzte Spalte den Namen der Zeichenfolge "Prozent", was das Verständnis erleichtert.
Da die Zahl in Prozent angezeigt wird, wäre es schön, dies im Ergebnis anzugeben. SQL-Fähigkeit kommt zur Rettung Text zum Ergebnis hinzufügen. Es sieht aus wie das:
SELECT snum, sname, city, comm * 100 AS percent , "%" FROM Salespeople Ergebnis:
snum | Name | Stadt | Prozent | % |
---|---|---|---|---|
1001 | Schälen | London | 12 | % |
1002 | Serres | San Jose | 13 | % |
1003 | Axelrod | New York | 10 | % |
1004 | Motika | London | 11 | % |
1007 | Rifkin | Barcelona | 15 | % |
Es ist zu erkennen, dass nach der Ausgabe der Zeile aus der Datenbank eine neue Spalte erschien, gefüllt mit einem Prozentzeichen (%).
Wenn Sie mit der Ausgabe von Daten und ergänzendem Text in verschiedenen Spalten nicht zufrieden sind, können Sie die speziellen Funktionen Ihres DBMS nutzen, um sie zu einer Spalte zusammenzuführen.
MySQL verwendet die Funktion KONKAT . Hier ist die Definition aus dem Handbuch:
CONCAT(str1,str2,...)
Gibt eine Zeichenfolge zurück, die sich aus der Verkettung der Argumente ergibt. Wenn mindestens eines der Argumente NULL ist, wird NULL zurückgegeben. Kann mehr als 2 Argumente annehmen. Das numerische Argument wird in seine entsprechende Zeichenkettenform konvertiert.
Beispiel: SELECT snum, sname, city , CONCAT(comm * 100, "%") AS "persent" FROM salespeople Ergebnis:
snum | Name | Stadt | anwesend |
---|---|---|---|
1001 | Schälen | London | 12.000% |
1002 | Serres | San Jose | 13.000% |
1003 | Axelrod | New York | 10.000% |
1004 | Motika | London | 11.000% |
1007 | Rifkin | Barcelona | 15.000% |
In dieser Abfrage nimmt die CONCAT-Funktion 2 Argumente entgegen, dies sind comm * 100 und das Prozentzeichen ("%"). Wir benennen die Spalte dann mit AS.
Es ist wichtig zu wissen, dass die Verwendung von Funktionen die Leistung beeinträchtigt. Dies ist nicht der einzige Nachteil, aber ein sehr wichtiger. Wenn Sie also mit Standard-SQL-Code davonkommen, ist es besser, keine Funktionen zu verwenden. Sie sollten nur in extremen Fällen erinnert werden.
Ausschluss redundanter Daten
Häufig ist es notwendig, doppelte Werte aus Abfrageergebnissen auszuschließen. Dazu wird das Schlüsselwort DISTINCT verwendet. Den gegenteiligen Effekt erzielt man mit dem Wort ALL, das standardmäßig verwendet wird (also nicht angegeben werden muss).
5. Es ist notwendig, die Städte (Stadt) anzuzeigen, in denen es Verkäufer gibt
Anfrage ausnahmslos:
WÄHLEN SIE STADT VON Verkäufern Ergebnis:
Doppelte London-Werte werden nach Bedarf aus dem Ergebnis ausgeschlossen.
Sortieren Sie das Ergebnis nach Werten pro Spalte
Die SELECT-Anweisung gibt Daten in beliebiger Reihenfolge aus. Um das Ergebnis nach einer bestimmten Spalte zu sortieren, verwendet SQL den ORDER BY-Operator (d. h. order by...). Mit dieser Anweisung können Sie die Reihenfolge ändern, in der Daten ausgegeben werden. ORDER BY ordnet das Abfrageergebnis nach den Werten einer oder mehrerer Spalten, die in der SELECT-Klausel ausgewählt wurden. In diesem Fall können Sie für jede Spalte die Sortierung in aufsteigender Reihenfolge - aufsteigend (ASC) (dieser Parameter wird standardmäßig verwendet) oder in absteigender Reihenfolge - absteigend (DESC) einstellen.
Sortieren Sie das Ergebnis nach der Spalte sname. Nach dem ORDER BY-Operator geben wir an, nach welcher Spalte sortiert werden soll, dann müssen Sie die Sortiermethode angeben
Beispiel - Sortierung in aufsteigender Reihenfolge:
AUSWÄHLEN * VON Verkäufern BESTELLUNG NACH sname ASC
Ergebnis:
Beispiel - Sortierung nach mehreren Spalten:
SELECT snum, sname, city FROM Salespeople ORDER BY sname DESC, city DESC Ergebnis:
snum | Name | Stadt |
---|---|---|
1002 | Serres | San Jose |
1007 | Rifkin | Barcelona |
1001 | Schälen | London |
1004 | Motika | London |
1003 | Axelrod | New York |
Ein paar wichtige Hinweise:
- die Spalte, nach der sortiert wird, muss in SELECT angegeben werden (Sie können * verwenden)
- Der Operator ORDER BY wird immer am Ende der Abfrage geschrieben
Willkommen auf meiner Blog-Seite. Heute werden wir über SQL-Abfragen für Anfänger sprechen. Einige Webmaster haben vielleicht eine Frage. Warum SQL lernen? Du kommst nicht weiter?
Es stellt sich heraus, dass dies nicht ausreicht, um ein professionelles Internetprojekt zu erstellen. Sql wird verwendet, um mit der Datenbank zu arbeiten und Anwendungen für WordPress zu erstellen. Schauen wir uns genauer an, wie Abfragen verwendet werden.
Was ist das
SQL ist eine strukturierte Abfragesprache. Erstellt, um die Art der Daten zu bestimmen, Zugriff darauf zu gewähren und Informationen in kurzer Zeit zu verarbeiten. Es beschreibt die Komponenten oder einige Ergebnisse, die Sie im Internetprojekt sehen möchten.
Einfach ausgedrückt ermöglicht Ihnen diese Programmiersprache das Hinzufügen, Ändern, Suchen und Anzeigen von Informationen in der Datenbank. Die Popularität von mysql beruht auf der Tatsache, dass es verwendet wird, um dynamische Internetprojekte zu erstellen, die auf einer Datenbank basieren. Daher müssen Sie diese Sprache lernen, um einen funktionierenden Blog zu entwickeln.
Was kann
Die SQL-Sprache erlaubt:
- Tabellen erstellen;
- unterschiedliche Daten ändern, empfangen und speichern;
- Informationen zu Blöcken kombinieren;
- Daten schützen;
- Anfragen im Zugriff erstellen.
Wichtig! Nachdem Sie sich mit SQL befasst haben, können Sie Anwendungen für WordPress beliebiger Komplexität schreiben.
Welche Struktur
Die Datenbank besteht aus Tabellen, die als Excel-Datei dargestellt werden können.
Sie hat einen Namen, Spalten und eine Zeile mit einigen Informationen. Sie können solche Tabellen mit SQL-Abfragen erstellen.
Was du wissen musst
Wichtige Punkte beim Erlernen von Sql
Wie oben erwähnt, werden Abfragen verwendet, um neue Informationen zu verarbeiten und in eine Datenbank einzugeben, die aus Tabellen besteht. Jede Zeile ist ein separater Eintrag. Lassen Sie uns also eine Datenbank erstellen. Schreiben Sie dazu den Befehl:
Datenbank 'bazaname' erstellen
In Anführungszeichen schreiben wir den Namen der Datenbank in lateinischer Sprache. Versuche, dir einen aussagekräftigen Namen für sie auszudenken. Erstellen Sie keine Datenbank wie „111“, „www“ und dergleichen.
Installieren Sie nach dem Erstellen der Datenbank:
SATZNAMEN ‘utf-8’
Dies ist notwendig, damit die Inhalte auf der Seite korrekt angezeigt werden.
Jetzt erstellen wir eine Tabelle:
CREATE TABLE 'bazaname' . 'Tisch' (
id INT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
log VARCHAR(10),
VARCHAR(10) übergeben,
Datum datum
In die zweite Zeile haben wir drei Attribute geschrieben. Mal sehen, was sie bedeuten:
- Das Attribut NOT NULL bedeutet, dass die Zelle nicht leer ist (das Feld ist erforderlich);
- Der Wert von AUTO_INCREMENT ist Autocomplete;
- PRIMARY KEY ist der Primärschlüssel.
So fügen Sie Informationen hinzu
Um die Felder der erstellten Tabelle mit Werten zu füllen, wird die INSERT-Anweisung verwendet. Wir schreiben die folgenden Codezeilen:
IN 'Tabelle' EINFÜGEN
(Login, Pass, Datum) WERTE
('Vasa', '87654321', '2017-06-21 18:38:44');
In Klammern geben wir den Namen der Spalten an und im nächsten - die Werte.
Wichtig! Folgen Sie der Reihenfolge der Spaltennamen und -werte.
So aktualisieren Sie Informationen
Dazu wird der UPDATE-Befehl verwendet. Sehen wir uns an, wie Sie das Passwort für einen bestimmten Benutzer ändern. Wir schreiben die folgenden Codezeilen:
UPDATE 'table' SET pass = '12345678' WHERE id = '1'
Ändern Sie nun das Passwort auf ‚12345678‘. Änderungen erfolgen in der Zeile mit "id"=1. Wenn Sie den WHERE-Befehl nicht schreiben, ändern sich alle Zeilen, nicht eine bestimmte.
Ich empfehle Ihnen, das Buch zu kaufen SQL für Dummies ". Mit ihrer Hilfe können Sie Schritt für Schritt professionell mit der Datenbank arbeiten. Alle Informationen sind nach dem Prinzip von einfach bis komplex aufgebaut und kommen gut an.
So löschen Sie einen Eintrag
Wenn Sie etwas falsch geschrieben haben, korrigieren Sie es mit dem DELETE-Befehl. Funktioniert genauso wie UPDATE. Wir schreiben folgenden Code:
LÖSCHEN VON 'Tabelle' WO id = '1'
Informationsprobenahme
Der SELECT-Befehl wird verwendet, um Werte aus der Datenbank abzurufen. Wir schreiben folgenden Code:
SELECT * FROM 'table' WHERE id = '1'
IN dieses Beispiel Wählen Sie alle verfügbaren Felder in der Tabelle aus. Dies geschieht, wenn Sie im Befehl ein Sternchen „*“ schreiben. Wenn Sie einen Beispielwert auswählen müssen, schreiben Sie wie folgt:
SELECT log , pass FROM table WHERE id = '1'
Es sollte beachtet werden, dass die Fähigkeit, mit Datenbanken zu arbeiten, nicht ausreicht. Um ein professionelles Internetprojekt zu erstellen, müssen Sie lernen, wie Sie Daten aus der Datenbank zu den Seiten hinzufügen. Machen Sie sich dazu mit der Web-Programmiersprache PHP vertraut. Das wird dir helfen Mikhail Rusakovs cooler Kurs .
Löschen einer Tabelle
Tritt bei einer DROP-Anforderung auf. Schreiben Sie dazu folgende Zeilen:
DROP TABLE-Tabelle;
Ausgabe eines Datensatzes aus einer Tabelle gemäß einer bestimmten Bedingung
Betrachten Sie diesen Code:
SELECT id, country, city FROM table WHERE people>150000000
Es wird die Aufzeichnungen von Ländern anzeigen, in denen die Bevölkerung mehr als 150 Millionen beträgt.
Einen Verband
Mit Join können mehrere Tabellen miteinander verknüpft werden. Sehen Sie in diesem Video, wie es funktioniert:
PHP und MySQL
Ich möchte noch einmal betonen, dass Anfragen bei der Erstellung eines Internetprojekts eine häufige Sache sind. Um sie in PHP-Dokumenten zu verwenden, folgen Sie dem folgenden Aktionsalgorithmus:
- Stellen Sie mit dem Befehl mysql_connect() eine Verbindung zur Datenbank her;
- Wählen Sie mit mysql_select_db() die gewünschte Datenbank aus;
- Verarbeitung der Abfrage mit mysql_fetch_array();
- Wir schließen die Verbindung mit dem Befehl mysql_close().
Wichtig! Das Arbeiten mit einer Datenbank ist nicht schwierig. Die Hauptsache ist, die Anfrage richtig zu schreiben.
Anfänger-Webmaster werden denken. Und was gibt es zu diesem Thema zu lesen? Empfehlen möchte ich das Buch von Martin Graber " SQL für Normalsterbliche ". Es ist so geschrieben, dass Anfänger alles verstehen. Verwenden Sie es als Nachschlagewerk.
Aber das ist eine Theorie. Wie funktioniert es in der Praxis? Tatsächlich muss ein Internetprojekt nicht nur erstellt, sondern auch an die Spitze von Google und Yandex gebracht werden. Der Videokurs hilft Ihnen dabei " Erstellung und Promotion der Website ».
Videoanleitung
Haben Sie noch Fragen? Weitere Online-Videos ansehen.
Abschluss
Das Schreiben von SQL-Abfragen ist also nicht so schwierig, wie es scheint, aber jeder Webmaster muss dies tun. Dabei helfen die oben beschriebenen Videokurse. Etwas abonnieren meine VKontakte-Gruppe um als Erster von neuen interessanten Informationen zu erfahren.
Abfragen werden ohne Escape-Anführungszeichen geschrieben, weil MySQL, MS-SQL Und PostGree Sie sind anders.
SQL-Abfrage: Abrufen der angegebenen (erforderlichen) Felder aus der Tabelle
SELECT id, country_title, count_people FROM table_nameWir erhalten eine Liste von Aufzeichnungen: ALLE Länder und ihre Bevölkerung. Die Namen der erforderlichen Felder werden durch Kommas getrennt.
SELECT * FROM Tabellenname
* bezeichnet alle Felder. Das heißt, es wird Anzeigen geben ALLES Datenfelder.
SQL-Abfrage: Anzeigen von Datensätzen aus einer Tabelle ohne Duplikate
SELECT DISTINCT country_title FROM table_nameWir erhalten eine Liste von Datensätzen: die Länder, in denen sich unsere Benutzer befinden. Es kann viele Benutzer aus einem Land geben. In diesem Fall ist dies Ihre Anfrage.
SQL-Abfrage: Anzeigen von Datensätzen aus einer Tabelle gemäß einer bestimmten Bedingung
SELECT id, country_title, city_title FROM table_name WHERE count_people>100000000Wir erhalten eine Liste von Rekorden: Länder, in denen die Zahl der Menschen mehr als 100.000.000 beträgt.
SQL-Abfrage: Anzeigen von Datensätzen aus einer Tabelle mit Sortierung
SELECT id, city_title FROM table_name ORDER BY city_titleWir erhalten eine Liste von Datensätzen: Städte in alphabetischer Reihenfolge. A am Anfang, Z am Ende.
SELECT id, city_title FROM table_name ORDER BY city_title DESC
Wir erhalten eine Liste von Datensätzen: Städte in umgekehrter Reihenfolge ( BESCHR) ist gut. Am Anfang I, am Ende A.
SQL-Abfrage: Zählen der Anzahl der Datensätze
SELECT COUNT(*) FROM TabellennameWir erhalten die Anzahl (Anzahl) der Datensätze in der Tabelle. In diesem Fall gibt es KEINE Liste von Datensätzen.
SQL-Abfrage: Anzeige des gewünschten Datensatzbereichs
SELECT * FROM Tabellenname LIMIT 2, 3Wir erhalten 2 (zweite) und 3 (dritte) Datensätze aus der Tabelle. Die Abfrage ist nützlich, wenn Sie eine Navigation auf WEB-Seiten erstellen.
SQL-Abfragen mit Bedingungen
Anzeigen von Datensätzen aus einer Tabelle gemäß einer bestimmten Bedingung unter Verwendung logischer Operatoren.
SQL-Abfrage: UND-Konstruktion (AND)
SELECT id, city_title FROM table_name WHERE country="Russland" UND oil=1Abrufen einer Liste von Datensätzen: Städte aus Russland UND Zugang zu Öl haben. Wann wird der Operator verwendet? UND, dann müssen beide Bedingungen übereinstimmen.
SQL-Abfrage: OR-Konstruktion (OR)
SELECT id, city_title FROM table_name WHERE country="Russland" OR country="USA"Holen Sie sich eine Liste der Datensätze: alle Städte aus Russland ODER USA. Wann wird der Operator verwendet? ODER, dann muss MINDESTENS eine Bedingung zutreffen.
SQL-Abfrage: AND NOT-Konstrukt (AND NOT)
SELECT id, user_login FROM table_name WHERE country="Russland" UND NICHT count_comments<7Holen Sie sich eine Liste der Datensätze: alle Benutzer aus Russland UND gemacht NICHT WENIGER 7 Kommentare.
SQL-Abfrage: IN-Konstrukt (B)
SELECT id, user_login FROM table_name WHERE country IN ("Russland", "Bulgarien", "China")Wir erhalten eine Liste mit Datensätzen: alle Benutzer, die in ( IN) (Russland oder Bulgarien oder China)
SQL-Abfrage: NOT IN-Konstrukt (NOT IN)
SELECT id, user_login FROM table_name WHERE country NOT IN ("Russland", "China")Wir erhalten eine Liste mit Datensätzen: alle Benutzer, die nicht in ( NICHT IN) (Russland oder China).
SQL-Abfrage: IS NULL-Konstrukt (leere oder NICHT leere Werte)
SELECT id, user_login FROM table_name WO Status NULL ISTWir erhalten eine Liste von Datensätzen: alle Benutzer, bei denen der Status nicht definiert ist. NULL ist ein separates Thema und wird daher separat geprüft.
SELECT id, user_login FROM table_name WO Zustand NICHT NULL IST
Wir erhalten eine Liste von Datensätzen: alle Benutzer, bei denen der Status definiert ist (NICHT NULL).
SQL-Abfrage: LIKE-Konstrukt
SELECT id, user_login FROM table_name WO Nachname LIKE "John%"Wir erhalten eine Liste von Datensätzen: Benutzer, deren Nachname mit der Kombination „Ivan“ beginnt. Das %-Zeichen bedeutet eine beliebige Anzahl von beliebigen Zeichen. Um das %-Zeichen zu finden, müssen Sie das Escapezeichen „Ivan\%“ verwenden.
SQL-Abfrage: BETWEEN-Konstrukt
SELECT id, user_login FROM table_name WO Gehalt ZWISCHEN 25000 UND 50000Wir erhalten eine Liste von Datensätzen: Benutzer, die ein Gehalt von 25.000 bis einschließlich 50.000 erhalten.
Es gibt SEHR viele logische Operatoren, also studieren Sie die SQL-Server-Dokumentation im Detail.
Komplexe SQL-Abfragen
SQL-Abfrage: Verbinden Sie mehrere Abfragen
(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM tabellenname2)Wir erhalten eine Liste mit Einträgen: Benutzer, die im System registriert sind, sowie Benutzer, die separat im Forum registriert sind. Der UNION-Operator kann mehrere Abfragen kombinieren. UNION verhält sich wie SELECT DISTINCT, das heißt, es verwirft doppelte Werte. Um absolut alle Datensätze zu erhalten, müssen Sie den UNION ALL-Operator verwenden.
SQL-Abfrage: Berechnung der Feldwerte MAX, MIN, SUM, AVG, COUNT
Die Ausgabe von eins, der maximale Wert des Zählers in der Tabelle:
SELECT MAX(counter) FROM table_nameDie Ausgabe von eins, der minimale Wert des Zählers in der Tabelle:
SELECT MIN(counter) FROM table_nameAnzeige der Summe aller Zählerwerte in der Tabelle:
SELECT SUM(counter) FROM table_nameMittelwert des Zählers in der Tabelle anzeigen:
SELECT AVG(counter) FROM table_nameAnzahl der Zähler in der Tabelle anzeigen:
SELECT COUNT(counter) FROM table_nameFazit der Meterzahl im Shop Nr. 1, in der Tabelle:
SELECT COUNT(counter) FROM table_name WHERE office="Workshop #1"Dies sind die beliebtesten Befehle. Es empfiehlt sich, nach Möglichkeit solche SQL-Abfragen für die Berechnung zu verwenden, da keine Programmierumgebung in der Geschwindigkeit der Datenverarbeitung mit der des SQL-Servers selbst bei der Verarbeitung der eigenen Daten vergleichbar ist.
SQL-Abfrage: Datensätze gruppieren
SELECT continent, SUM(country_area) FROM country GROUP BY kontinentWir erhalten eine Liste von Datensätzen: mit dem Namen des Kontinents und mit der Summe der Flächen aller ihrer Länder. Das heißt, wenn es ein Länderverzeichnis gibt, in dem für jedes Land seine Fläche aufgezeichnet ist, können Sie mithilfe der GROUP BY-Konstruktion die Größe jedes Kontinents ermitteln (basierend auf der Gruppierung nach Kontinenten).
SQL-Abfrage: Verwendung mehrerer Tabellen über Alias (Alias)
SELECT o.order_no, o.amount_paid, c.company FROM Bestellungen AS o, Kunde AS mit WHERE o.custno=c.custno AND c.city="Tyumen"Wir erhalten eine Liste mit Aufzeichnungen: Bestellungen von Käufern, die nur in Tjumen leben.
Tatsächlich ist die Abfrage bei einer richtig entworfenen Datenbank dieses Typs die häufigste, weshalb MySQL einen speziellen Operator eingeführt hat, der um ein Vielfaches schneller arbeitet als der oben geschriebene Code.
SELECT o.order_no, o.amount_paid, z.company FROM orders AS o LEFT JOIN customer AS z ON (z.custno=o.custno)
Verschachtelte Unterabfragen
SELECT * FROM Tabellenname WHERE Gehalt=(SELECT MAX(Gehalt) FROM Angestellter)Wir erhalten einen Datensatz: Informationen über den Benutzer mit dem maximalen Gehalt.
Aufmerksamkeit! Verschachtelte Unterabfragen sind einer der Engpässe in SQL-Servern. Zusammen mit ihrer Flexibilität und Leistungsfähigkeit erhöhen sie auch die Belastung des Servers erheblich. Was zu einer katastrophalen Verlangsamung für andere Benutzer führt. Bei verschachtelten Abfragen kommt es sehr häufig zu rekursiven Aufrufen. Daher empfehle ich dringend, NICHT verschachtelte Abfragen zu verwenden, sondern sie in kleinere aufzuteilen. Oder verwenden Sie die oben beschriebene LEFT JOIN-Kombination. Zusätzlich zu dieser Art von Anfragen stehen sie verstärkt im Fokus von Sicherheitsverletzungen. Wenn Sie sich für verschachtelte Unterabfragen entscheiden, müssen Sie diese sehr sorgfältig entwerfen und erste Durchläufe auf Datenbankkopien (Testdatenbanken) durchführen.
SQL-Abfragen ändernde Daten
SQL-Abfrage: INSERT
Anweisung EINFÜGUNG ermöglichen es Ihnen, Datensätze in die Tabelle einzufügen. Erstellen Sie in einfachen Worten eine Zeile mit Daten in einer Tabelle.
Option Nummer 1. Häufig verwendete Anweisung:
INSERT INTO table_name (id, user_login) VALUES (1, "ivanov"), (2, "petrov")In der Tabelle " Tabellenname» fügt 2 (zwei) Benutzer auf einmal ein.
Option Nummer 2. Es ist bequemer, den Stil zu verwenden:
INSERT table_name SET id=1, user_login="ivanov"; INSERT table_name SET id=2, user_login="petrov";Dies hat seine Vor- und Nachteile.
Hauptnachteile:
- Viele kleine SQL-Abfragen sind etwas langsamer als eine große SQL-Abfrage, aber andere Abfragen werden in die Warteschlange gestellt. Das heißt, wenn eine große SQL-Abfrage 30 Minuten lang ausgeführt wird, werden während dieser ganzen Zeit die restlichen Abfragen Bambus rauchen und warten, bis sie an der Reihe sind.
- Die Anfrage ist massiver als die vorherige Version.
Hauptvorteile:
- Während kleiner SQL-Abfragen werden andere SQL-Abfragen nicht blockiert.
- Leichtigkeit des Lesens.
- Flexibilität. Bei dieser Option können Sie der Struktur nicht folgen, sondern nur die notwendigen Daten hinzufügen.
- Wenn Sie auf diese Weise Archive erstellen, können Sie einfach eine Zeile kopieren und über die Befehlszeile (Konsole) ausführen, ohne das gesamte ARCHIV wiederherzustellen.
- Der Schreibstil ähnelt der UPDATE-Anweisung, die leichter zu merken ist.
SQL-Abfrage: UPDATE
UPDATE table_name SET user_login="ivanov", user_surname="Ivanov" WHERE id=1In der Tabelle " Tabellenname» Im Datensatz mit der Nummer id=1 werden die Werte der Felder user_login und user_surname auf die angegebenen Werte geändert.
SQL-Abfrage: DELETE
DELETE FROM table_name WHERE id=3Der Datensatz mit der ID-Nummer 3 wird in der Tabelle table_name gelöscht.
- Es wird empfohlen, alle Feldnamen in Kleinbuchstaben zu schreiben und ggf. durch ein erzwungenes Leerzeichen „_“ zu trennen, um die Kompatibilität mit verschiedenen Programmiersprachen wie Delphi, Perl, Python und Ruby zu gewährleisten.
- SQL-Befehle werden zur besseren Lesbarkeit in GROSSBUCHSTABEN geschrieben. Denken Sie immer daran, dass andere Personen den Code nach Ihnen lesen können, aber höchstwahrscheinlich Sie selbst nach N Zeit.
- Benennen Sie die Felder zuerst mit einem Substantiv und dann mit einer Aktion. Zum Beispiel: city_status, user_login, user_name.
- Versuchen Sie, Wörter in verschiedenen Sprachen zu vermeiden, die Probleme in SQL, PHP oder Perl verursachen können, wie z. B. (Name, Anzahl, Link). Beispiel: link kann in MS SQL verwendet werden, ist aber in MySQL reserviert.
Dieses Material ist eine kurze Referenz für die tägliche Arbeit und gibt nicht vor, eine Super-Mega-autoritative Quelle zu sein, die die primäre Quelle für SQL-Abfragen einer bestimmten Datenbank ist.
- Übersetzung
- Lernprogramm
Sollte es „ SELECT * WHERE a=b FROM c “ oder „ SELECT WHERE a=b FROM c ON * “ sein?
Wenn Sie wie ich sind, werden Sie mir zustimmen: SQL ist eines dieser Dinge, die auf den ersten Blick einfach erscheinen (es liest sich wie Englisch!), aber irgendwie muss man jede einfache Abfrage googeln, um die richtige Syntax zu finden.
Und dann beginnen Verknüpfungen, Aggregation, Unterabfragen, und es stellt sich als völliger Müll heraus. So was:
SELECT Mitglieder.Vorname || " " || mitglieder.nachname AS "Vollständiger Name" FROM ausleihen INNER JOIN mitglieder ON mitglieder.mitgliedid=ausleihen.mitglieds-id INNER JOIN bücher ON books.bookid=ausleihen.bookid WHERE leihen.bookid IN (SELECT bookid FROM books WHERE stock>(SELECT avg(stock ) FROM books)) GROUP BY mitglieder.vorname, mitglieder.nachname;
Bu! Dies wird jeden Anfänger oder sogar einen durchschnittlichen Entwickler abschrecken, wenn er SQL zum ersten Mal sieht. Aber es ist gar nicht so schlimm.
Es ist leicht, sich zu merken, was intuitiv ist, und ich hoffe, mit diesem Leitfaden die Barriere für den Einstieg in SQL für Anfänger zu senken und gleichzeitig erfahrenen SQL-Experten eine neue Sicht auf SQL zu bieten.
Obwohl die Syntax von SQL in verschiedenen Datenbanken fast gleich ist, verwendet dieser Artikel PostgreSQL für Abfragen. Einige Beispiele funktionieren in MySQL und anderen Datenbanken.
1. Drei magische Worte
Es gibt viele Schlüsselwörter in SQL, aber SELECT , FROM und WHERE sind in fast jeder Abfrage vorhanden. Etwas später werden Sie feststellen, dass diese drei Wörter die grundlegendsten Aspekte beim Erstellen von Abfragen für die Datenbank darstellen und andere, komplexere Abfragen nur Add-Ons darüber sind.
2. Unsere Basis
Werfen wir einen Blick auf die Datenbank, die wir in diesem Artikel als Beispiel verwenden werden:
Wir haben eine Buchbibliothek und Leute. Es gibt auch eine spezielle Tabelle für die Buchhaltung ausgegebener Bücher.
- Die Tabelle "Bücher" speichert Informationen über den Titel, den Autor, das Veröffentlichungsdatum und die Verfügbarkeit des Buchs. Alles ist einfach.
- In der Tabelle "Mitglieder" - die Vor- und Nachnamen aller Personen, die sich für die Bibliothek angemeldet haben.
- Die Tabelle "Ausleihen" speichert Informationen über Bücher, die von der Bibliothek ausgeliehen wurden. Die Spalte bookid bezieht sich auf die ID des ausgeliehenen Buches in der Tabelle „books“, und die Spalte memberid bezieht sich auf die entsprechende Person in der Tabelle „members“. Wir haben auch ein Ausgabedatum und ein Datum, an dem das Buch zurückgegeben werden muss.
3. Einfache Anfrage
Beginnen wir mit einer einfachen Anfrage: Wir brauchen Namen Und Kennungen(id) alle Bücher des Autors „Dan Brown“
Die Anfrage wird wie folgt aussehen:
WÄHLEN Sie bookid AS "id", Titel FROM books WHERE author="Dan Brown";
Und das Ergebnis ist so:
Ausweis | Titel |
---|---|
2 | Das verlorene Symbol |
4 | Inferno |
Ziemlich einfach. Lassen Sie uns die Anfrage aufschlüsseln, um zu verstehen, was los ist.
3.1 VON - woher wir die Daten bekommen
Das mag jetzt offensichtlich erscheinen, aber FROM wird später sehr wichtig sein, wenn wir zu Joins und Unterabfragen kommen.
FROM verweist auf die abzufragende Tabelle. Dies kann eine bereits vorhandene Tabelle sein (wie im obigen Beispiel) oder eine Tabelle, die spontan über Verknüpfungen oder Unterabfragen erstellt wird.
3.2 WO – welche Daten angezeigt werden sollen
WHERE verhält sich einfach wie ein Filter Linien die wir zeigen wollen. In unserem Fall möchten wir nur Zeilen sehen, in denen der Wert in der Autorenspalte "Dan Brown" ist.
3.3 SELECT - wie man Daten anzeigt
Jetzt, da wir alle benötigten Spalten aus der benötigten Tabelle haben, müssen wir entscheiden, wie genau diese Daten angezeigt werden sollen. In unserem Fall brauchen wir nur Titel und Buch-IDs, also machen wir das. wählen mit WÄHLEN. Gleichzeitig können Sie die Spalte mit AS umbenennen.
Die gesamte Abfrage kann mit einem einfachen Diagramm visualisiert werden:
4. Verbindungen (Joins)
Jetzt wollen wir die Titel (nicht unbedingt eindeutig) aller Bücher von Dan Brown sehen, die aus der Bibliothek ausgeliehen wurden, und wann diese Bücher zurückgegeben werden müssen:
WÄHLEN Sie books.title AS "Titel", Ausleihen.Rückgabedatum AS "Rückgabedatum" FROM Ausleihen JOIN Bücher ON Ausleihen.bookid=books.bookid WHERE books.author="Dan Brown";
Ergebnis:
Titel | Rückflugdatum |
---|---|
Das verlorene Symbol | 2016-03-23 00:00:00 |
Inferno | 2016-04-13 00:00:00 |
Das verlorene Symbol | 2016-04-19 00:00:00 |
Die Anfrage ähnelt größtenteils der vorherigen. außer VON Abschnitt. Das bedeutet es Wir fragen Daten aus einer anderen Tabelle ab. Wir greifen weder auf die Tabelle „Bücher“ noch auf die Tabelle „Ausleihen“ zu. Stattdessen wenden wir uns an neuer Tisch, die durch Verbinden dieser beiden Tabellen erstellt wurde.
Ausleihen JOIN Bücher ON Ausleihen.bookid=books.bookid ist eine neue Tabelle, die durch Kombinieren aller Datensätze aus den Tabellen "Bücher" und "Ausleihen" gebildet wurde, in denen die Werte der Buch-ID übereinstimmen. Das Ergebnis einer solchen Fusion wird sein:
Und dann fragen wir diese Tabelle auf die gleiche Weise wie im obigen Beispiel ab. Das bedeutet, dass Sie sich beim Verbinden von Tabellen nur darum kümmern müssen, wie Sie diese Verbindung durchführen. Und dann wird die Anfrage so deutlich wie bei der „einfachen Anfrage“ aus Punkt 3.
Lassen Sie uns einen etwas komplexeren Join mit zwei Tabellen versuchen.
Nun wollen wir die Vor- und Nachnamen der Personen erfahren, die die Bücher des Autors „Dan Brown“ aus der Bibliothek entwendet haben.
Gehen wir diesmal von unten nach oben:
Schritt 1- Woher bekommen wir die Daten? Um das gewünschte Ergebnis zu erhalten, müssen wir die Tabellen „member“ und „books“ mit der Tabelle „borrowings“ verknüpfen. Der JOIN-Bereich sieht folgendermaßen aus:
Ausleihen VERBINDE BÜCHER AUF leihen.bookid=books.bookid VERBINDE mitglieder AUF mitglieder.memberid=ausleihen.mitglieds-id
Das Ergebnis der Verbindung kann unter dem Link eingesehen werden.
Schritt 2 Welche Daten zeigen wir? Wir sind nur an Daten interessiert, bei denen der Autor des Buches „Dan Brown“ ist.
WO books.author="Dan Brown"
Schritt 3 Wie zeigen wir Daten an? Jetzt, da die Daten eingegangen sind, müssen Sie nur noch die Vor- und Nachnamen derjenigen anzeigen, die die Bücher genommen haben:
SELECT mitglieder.vorname AS „Vorname“, mitglieder.nachname AS „Nachname“
Super! Es bleibt nur, die drei Komponenten zu kombinieren und die Anfrage zu stellen, die wir brauchen:
SELECT mitglieder.vorname AS „Vorname“, mitglieder.nachname ALS „Nachname“ FROM Ausleihungen VERBINDE Bücher AUF leihen.bookid=Bücher.Buchid VERBINDE Mitglieder AUF mitglieder.MitgliederID=Ausleihungen.MitgliederID WO Bücher.Autor="Dan Brown";
Was bringt uns:
Vorname | Familienname, Nachname |
---|---|
Mike | Willis |
Ellen | Horton |
Ellen | Horton |
Großartig! Aber die Namen werden wiederholt (sie sind nicht eindeutig). Wir werden dies bald beheben.
5. Aggregation
Grob gesagt, Aggregationen werden benötigt, um mehrere Zeichenfolgen in eine zu konvertieren. Gleichzeitig wird während der Aggregation unterschiedliche Logik für unterschiedliche Spalten verwendet.
Fahren wir mit unserem Beispiel fort, in dem doppelte Namen erscheinen. Es ist ersichtlich, dass Ellen Horton mehr als ein Buch genommen hat, aber dies ist nicht das meiste Der beste Weg zeigen diese Informationen. Sie können eine weitere Anfrage stellen:
SELECT mitglieder.vorname AS „Vorname“, mitglieder.nachname AS „Nachname“, count(*) AS „Anzahl der ausgeliehenen Bücher“ FROM Ausleihungen JOIN Bücher ON Ausleihen.bookid=Bücher.Buchid JOIN Mitglieder ON Members.Mitgliedid=Ausleihen .memberid WHERE books.author="Dan Brown" GROUP BY mitglieder.vorname, mitglieder.nachname;
Was uns das gewünschte Ergebnis geben wird:
Vorname | Familienname, Nachname | Anzahl der ausgeliehenen Bücher |
---|---|---|
Mike | Willis | 1 |
Ellen | Horton | 2 |
Fast alle Aggregationen enthalten eine GROUP BY-Klausel. Dieses Ding verwandelt eine Tabelle, die durch eine Abfrage erhalten werden könnte, in Gruppen von Tabellen. Jede Gruppe entspricht einem eindeutigen Wert (oder einer Gruppe von Werten) der Spalte, die wir in GROUP BY angegeben haben. In unserem Beispiel wandeln wir das Ergebnis der vorherigen Übung in eine Gruppe von Zeichenfolgen um. Wir führen auch eine Aggregation mit count durch, die mehrere Zeilen in einen ganzzahligen Wert umwandelt (in unserem Fall die Anzahl der Zeilen). Dieser Wert wird dann jeder Gruppe zugeordnet.
Jede Zeile im Ergebnis ist das Ergebnis der Aggregation jeder Gruppe.
Sie können daraus den logischen Schluss ziehen, dass alle Felder des Ergebnisses entweder in GROUP BY angegeben oder aggregiert werden müssen. Denn alle anderen Felder können sich in verschiedenen Zeilen voneinander unterscheiden, und wenn man sie mit SELECT "th" auswählt, dann ist nicht klar, welcher der möglichen Werte genommen werden soll.
Im obigen Beispiel hat die count-Funktion alle Zeilen verarbeitet (da wir die Anzahl der Zeilen gezählt haben). Andere Funktionen wie sum oder max verarbeiten nur die angegebenen Zeilen. Wenn wir beispielsweise wissen möchten, wie viele Bücher von jedem Autor geschrieben wurden, benötigen wir diese Abfrage:
Autor WÄHLEN, Summe(Bestand) AUS Büchern GRUPPIEREN NACH Autor;
Ergebnis:
Autor | Summe |
---|---|
Robin Sharma | 4 |
Dan Brown | 6 |
Johannes Grün | 3 |
Amische Tripathi | 2 |
Hier verarbeitet die Summenfunktion nur die Aktienspalte und berechnet die Summe aller Werte in jeder Gruppe.
6. Unterabfragen
Unterabfragen sind normale SQL-Abfragen, die in größere Abfragen eingebettet sind. Sie werden je nach Art des zurückgegebenen Ergebnisses in drei Typen unterteilt.
6.1 Zweidimensionale Tabelle
Es gibt Abfragen, die mehrere Spalten zurückgeben. Ein gutes Beispiel ist die Abfrage aus der vorherigen Aggregationsübung. Da es sich um eine Unterabfrage handelt, wird einfach eine andere Tabelle zurückgegeben, für die neue Abfragen durchgeführt werden können. Um die vorherige Übung fortzusetzen, wenn wir die Anzahl der Bücher wissen wollen, die vom Autor „Robin Sharma“ geschrieben wurden, dann ist eine der möglichen Möglichkeiten die Verwendung von Unterabfragen:
SELECT * FROM (SELECT author, sum(stock) FROM books GROUP BY author) AS results WHERE author="Robin Sharma";
Ergebnis:
Kann geschrieben werden als: ["Robin Sharma", "Dan Brown"]
2. Verwenden Sie nun dieses Ergebnis in einer neuen Abfrage:
SELECT title, bookid FROM books WHERE author IN (SELECT author FROM (SELECT author, sum(stock) FROM books GROUP BY author) AS results WHERE summe > 3);
Ergebnis:
Titel | Buch-ID |
---|---|
Das verlorene Symbol | 2 |
Wer wird weinen, wenn du stirbst? | 3 |
Inferno | 4 |
Es ist dasselbe wie:
WÄHLEN Sie Titel, Buch-ID AUS Büchern, WO Autor IN ("Robin Sharma", "Dan Brown");
6.3 Individuelle Werte
Es gibt Abfragen, die nur eine Zeile und eine Spalte ergeben. Sie können als konstante Werte behandelt und überall dort verwendet werden, wo Werte verwendet werden, beispielsweise in Vergleichsoperatoren. Sie können auch als zweidimensionale Tabellen oder Einzelelement-Arrays verwendet werden.
Informieren wir uns beispielsweise über alle Bücher, deren Anzahl in der Bibliothek derzeit den Durchschnittswert übersteigt.
Der Durchschnitt kann auf diese Weise erhalten werden:
wählen Sie avg(Stock) aus Büchern;
Was gibt uns:
7. Schreiboperationen
Die meisten Datenbank-Schreibvorgänge sind im Vergleich zu komplexeren Lesevorgängen recht einfach.
7.1 Aktualisierung
Die Syntax einer UPDATE-Anfrage ist semantisch dieselbe wie bei einer Leseanfrage. Der einzige Unterschied besteht darin, dass wir statt Spalten mit SELECT "th" das Wissen mit SET "th" setzen.
Wenn alle Bücher von Dan Brown verloren gehen, müssen Sie den Mengenwert zurücksetzen. Die Abfrage dazu wäre:
UPDATE books SET stock=0 WHERE author="Dan Brown";
WHERE macht dasselbe wie zuvor: wählt Zeilen aus. Anstelle von SELECT , das beim Lesen verwendet wurde, verwenden wir jetzt SET . Jetzt müssen Sie jedoch nicht nur den Namen der Spalte, sondern auch den neuen Wert für diese Spalte in den ausgewählten Zeilen angeben.
7.2 Löschen
Eine DELETE-Abfrage ist nur eine SELECT- oder UPDATE-Abfrage ohne Spaltennamen. Ernsthaft. Wie bei SELECT und UPDATE bleibt die WHERE-Klausel gleich: Sie wählt die zu löschenden Zeilen aus. Der Löschvorgang zerstört die gesamte Zeile, daher ist es nicht sinnvoll, einzelne Spalten anzugeben. Wenn wir uns also entscheiden, die Anzahl der Bücher von Dan Brown nicht zurückzusetzen, sondern generell alle Einträge zu löschen, dann können wir eine Anfrage wie diese stellen:
DELETE FROM books WHERE author="Dan Brown";
7.3 Einfügen
Vielleicht ist das einzige, was sich von anderen Arten von Abfragen unterscheidet, INSERT . Das Format ist:
EINFÜGEN IN x(a,b,c) WERTE(x, y, z);
Dabei sind a , b , c die Spaltennamen und x , y und z die Werte, die in dieser Reihenfolge in diese Spalten eingefügt werden sollen. Das ist es im Grunde.
Schauen wir uns ein konkretes Beispiel an. Hier ist eine INSERT-Abfrage, die die gesamte Tabelle "Bücher" füllt:
INSERT INTO books (bookid,title,author,published,stock) VALUES (1,"Scion of Ikshvaku","Amish Tripathi","06-22-2015",2), (2,"The Lost Symbol"," Dan Brown“, „22.07.2010“, 3), (3, „Wer wird weinen, wenn du stirbst?“, „Robin Sharma“, „15.06.2006“, 4), (4, „Inferno“ ,"Dan Brown","05.05.2014",3), (5,"Der Fehler in unseren Sternen","John Green","01.03.2015",3);
8. Überprüfung
Wir sind am Ende angelangt, ich schlage einen kleinen Test vor. Schauen Sie sich diese Anfrage ganz am Anfang des Artikels an. Kannst du es herausfinden? Versuchen Sie, sie in die Abschnitte SELECT , FROM , WHERE , GROUP BY zu unterteilen, und sehen Sie sich die einzelnen Komponenten der Unterabfrage an.
Hier in besser lesbarer Form:
SELECT Mitglieder.Vorname || " " || Mitglieder.Nachname AS "Vollständiger Name" FROM Ausleihen INNER JOIN Mitglieder ON Mitglieder.Mitglieder-ID=Ausleihen.Mitglieder-ID INNER JOIN Bücher ON Bücher.BookID=Ausleihen.Buchid WHERE Ausleihen.Buchid IN (SELECT bookid FROM books WHERE stock> (SELECT avg(stock ) FROM books)) GROUP BY mitglieder.vorname, mitglieder.nachname;
Diese Abfrage gibt eine Liste von Personen zurück, die ein Buch mit einer überdurchschnittlichen Gesamtzahl aus der Bibliothek ausgeliehen haben.
Ergebnis:
Vollständiger Name |
---|
Linda Tyler |
Ich hoffe du hast es ohne Probleme hinbekommen. Aber wenn nicht, dann freue ich mich über Ihre Kommentare und Ihr Feedback, damit ich diesen Beitrag verbessern kann.
Tags: Tags hinzufügen
![mob_info](https://mapstr.ru/wp-content/themes/kuzov/pic/mob_info.png)