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)
Im Allgemeinen ist die Standardreihenfolge in SQL aufsteigend (vom kleinsten zum größten).
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 Juli2012 IwanowStawropolStawropolskaja, 14891.00 50000
0002 Dezember2019 KononowTatarischSagorodnaja, 25419565.00 684068
0003 Dürfen2013 YamshinMichailowskLändlich, 489868.00 165840
0004 August2012 prenyStawropolZentral, 164659.00 46580
... ... ... ... ... ... ... ...
9564 Marsch2015 UlievDeminoInternational, 1566846.00 435089
9565 Oktober2012 PawlowaStawropolHaltestelle, 37685.00 68059
9566 Januar2012 UryupaMichailowskFontannaja, 191235.00 51238
9567 November2017 WaletowTatarischAusgang, 6513698.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ürfen2013 YamshinMichailowskLändlich, 489868.00 165840
9566 Januar2012 UryupaMichailowskFontannaja, 191235.00 51238
9564 Marsch2015 UlievDeminoInternational, 1566846.00 435089
0004 August2012 prenyStawropolZentral, 164659.00 46580
9565 Oktober2012 PawlowaStawropolHaltestelle, 37685.00 68059
0002 Dezember2019 KononowTatarischSagorodnaja, 25419565.00 684068
0001 Juli2012 IwanowStawropolStawropolskaja, 14891.00 50000
9567 November2017 WaletowTatarischAusgang, 6513698.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 Tabellenname

WÄ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:

snumNameStadtKomm
1001 SchälenLondon0,12
1002 SerresSan Jose0,13
1003 AxelrodNew York0,1
1004 MotikaLondon0,11
1007 RifkinBarcelona0,15
Ich möchte dir auch einen kleinen Rat geben. Um das Debuggen von Abfragen zu vereinfachen, schreiben einige Leute eine Liste von Spalten, die in einer separaten Zeile angezeigt werden müssen. Dies erleichtert das Auskommentieren des Codes. Die Syntax zum Kommentieren von Code in SQL lautet /* kommentierter Code */ Beispiel: SELECT snum ,sname , city , comm FROM salespeople

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:

snumNameStadtKomm
1001 SchälenLondon12
1002 SerresSan Jose13
1003 AxelrodNew York10
1004 MotikaLondon11
1007 RifkinBarcelona15
In der letzten Spalte werden alle empfangenen Daten mit 100 multipliziert und in Prozent angezeigt.

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:

snumNameStadtProzent
1001 SchälenLondon12
1002 SerresSan Jose13
1003 AxelrodNew York10
1004 MotikaLondon11
1007 RifkinBarcelona15

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:

snumNameStadtProzent%
1001 SchälenLondon12 %
1002 SerresSan Jose13 %
1003 AxelrodNew York10 %
1004 MotikaLondon11 %
1007 RifkinBarcelona15 %

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:

snumNameStadtanwesend
1001 SchälenLondon12.000%
1002 SerresSan Jose13.000%
1003 AxelrodNew York10.000%
1004 MotikaLondon11.000%
1007 RifkinBarcelona15.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:

snumNameStadt
1002 SerresSan Jose
1007 RifkinBarcelona
1001 SchälenLondon
1004 MotikaLondon
1003 AxelrodNew 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_name

Wir 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_name

Wir 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>100000000

Wir 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_title

Wir 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 Tabellenname

Wir 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, 3

Wir 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=1

Abrufen 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<7

Holen 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 IST

Wir 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 50000

Wir 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_name

Die Ausgabe von eins, der minimale Wert des Zählers in der Tabelle:

SELECT MIN(counter) FROM table_name

Anzeige der Summe aller Zählerwerte in der Tabelle:

SELECT SUM(counter) FROM table_name

Mittelwert des Zählers in der Tabelle anzeigen:

SELECT AVG(counter) FROM table_name

Anzahl der Zähler in der Tabelle anzeigen:

SELECT COUNT(counter) FROM table_name

Fazit 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 kontinent

Wir 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=1

In 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=3

Der Datensatz mit der ID-Nummer 3 wird in der Tabelle table_name gelöscht.

  1. 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.
  2. 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.
  3. Benennen Sie die Felder zuerst mit einem Substantiv und dann mit einer Aktion. Zum Beispiel: city_status, user_login, user_name.
  4. 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