Heim >Datenbank >MySQL-Tutorial >Eine wunderbare Zusammenfassung der SQL-Abfragemethoden
Eine einfache Transact-SQL-Abfrage enthält nur eine Auswahlliste, eine FROM-Klausel und eine WHERE-Klausel. Sie beschreiben jeweils die abgefragten Spalten, abgefragten Tabellen oder Ansichten und Suchbedingungen
1. Einfache Abfrage
Eine einfache Transact-SQL-Abfrage enthält nur eine Auswahlliste, FROM Klausel und WHERE-Klausel. Sie beschreiben jeweils die abgefragte Spalte, die abgefragte Tabelle oder Ansicht und die Suchbedingungen.
Zum Beispiel fragt die folgende Anweisung das Spitznamenfeld und das E-Mail-Feld mit dem Namen „Zhang San“ in der Testtabellentabelle ab.
SELECT Spitzname, E-Mail
FROM testtable
WHERE name='Zhang San'
(1) Liste auswählen
Die Auswahlliste (select_list) gibt die abgefragte Spalte an, bei der es sich um eine Reihe von Spaltennamenlisten, Sternchen, Ausdrücken, Variablen (einschließlich lokaler Variablen und globaler Variablen) usw. handeln kann.
1. Alle Spalten auswählen
Die folgende Anweisung zeigt beispielsweise die Daten aller Spalten in der Testtabellentabelle an:
SELECT *
FROM testtable
2. Wählen Sie einige Spalten aus und geben Sie deren Anzeigereihenfolge an.
Die Reihenfolge der Daten im Abfrageergebnissatz ist dieselbe wie die Reihenfolge der in der Auswahlliste angegebenen Spaltennamen .
Zum Beispiel:
SELECT Nickname,Email
FROM testtable
3. Ändern Sie den Spaltentitel
In der Auswahlliste Sie können die Spaltenüberschriften erneut angeben. Das Definitionsformat lautet:
Spaltentitel = Spaltenname
Spaltenname Spaltentitel
Wenn der angegebene Spaltentitel kein Standard-Bezeichnerformat ist, sollten Anführungszeichen als Trennzeichen verwendet werden. In der folgenden Anweisung wird beispielsweise Chinesisch verwendet Zeichen zum Anzeigen von Spalten Titel:
SELECT Nickname=Spitzname, E-Mail=E-Mail
FROM testtable
4. Löschen Sie doppelte Zeilen
Verwenden Sie ALLE in der SELECT-Anweisung Oder verwenden Sie die Option DISTINCT, um alle Zeilen in der Tabelle anzuzeigen, die die Kriterien erfüllen, oder doppelte Datenzeilen zu löschen. Der Standardwert ist ALL. Bei Verwendung der DISTINCT-Option wird nur eine Zeile in der von SELECT zurückgegebenen Ergebnismenge für alle doppelten Datenzeilen beibehalten.
5. Begrenzen Sie die Anzahl der zurückgegebenen Zeilen
Verwenden Sie die Option TOP n [PERCENT], um die Anzahl der zurückgegebenen Datenzeilen zu begrenzen, und wenn TOP n PROCENT ist n bedeutet „Prozent“ und gibt an, wie viel Prozent der Gesamtzahl der Zeilen der Anzahl der zurückgegebenen Zeilen entspricht.
Zum Beispiel:
SELECT TOP 2 *
FROM testtable
SELECT TOP 20 PROCENT *
FROM testtable
( zwei )FROM-Klausel
Die FROM-Klausel gibt die SELECT-Anweisungsabfrage und die Tabellen oder Ansichten an, die sich auf die Abfrage beziehen. In der FROM-Klausel können bis zu 256 durch Kommas getrennte Tabellen oder Ansichten angegeben werden.
Wenn die FROM-Klausel mehrere Tabellen oder Ansichten gleichzeitig angibt und Spalten mit demselben Namen in der Auswahlliste vorhanden sind, sollten die Objektnamen verwendet werden, um die Tabellen oder Ansichten einzuschränken, zu denen diese Spalten gehören. Beispielsweise ist die Spalte „cityid“ sowohl in der Tabelle „usertable“ als auch in der Tabelle „citytable“ vorhanden. Bei der Abfrage der „cityid“ in den beiden Tabellen sollte zur Qualifizierung das folgende Anweisungsformat verwendet werden:
SELECT username,citytable.cityid
FROM usertable, citytable
WHERE usertable.cityid=citytable.cityid
Die folgenden zwei Formate können verwendet werden, um einen Alias für eine Tabelle oder Ansicht in der FROM-Klausel anzugeben:
Tabellenname als Alias
Tabellenname Alias
(2) FROM-Klausel
Die FROM-Klausel gibt die SELECT-Anweisungsabfrage und die mit der Abfrage verknüpften Tabellen oder Ansichten an. In der FROM-Klausel können bis zu 256 durch Kommas getrennte Tabellen oder Ansichten angegeben werden.
Wenn die FROM-Klausel mehrere Tabellen oder Ansichten gleichzeitig angibt und Spalten mit demselben Namen in der Auswahlliste vorhanden sind, sollten die Objektnamen verwendet werden, um die Tabellen oder Ansichten einzuschränken, zu denen diese Spalten gehören. Wenn beispielsweise die Spalte „cityid“ sowohl in den Tabellen „usertable“ als auch „citytable“ vorhanden ist, sollte beim Abfragen der „cityid“ in den beiden Tabellen das folgende Anweisungsformat verwendet werden:
SELECT username,citytable.cityid
FROM usertable, citytable
WHERE usertable.cityid=citytable.cityid
Die folgenden zwei Formate können verwendet werden, um Aliase für Tabellen oder Ansichten in der FROM-Klausel anzugeben:
Tabellenname als Alias
Tabellennamen-Alias
Beispielsweise kann die Anweisung oben im Alias-Format der Tabelle wie folgt ausgedrückt werden:
SELECT username,b.cityid
FROM usertable a,citytable b
WHERE a.cityid= b.cityid
SELECT kann nicht nur Daten aus einer Tabelle oder Ansicht abrufen, sondern auch Daten aus der von anderen Abfrageanweisungen zurückgegebenen Ergebnismenge abfragen.
Zum Beispiel:
SELECT a.au_fname+a.au_lname
FROM Authors a,titleauthor ta
(SELECT title_id,title
FROM titles
WHERE ytd_sales> ; 10000
) AS t
WHERE a.au_id=ta.au_id
AND ta.title_id=t.title_id
In diesem Beispiel erhält die von SELECT zurückgegebene Ergebnismenge einen Alias t, Rufen Sie dann die Daten daraus ab.
(3) Verwenden Sie die WHERE-Klausel, um Abfragebedingungen festzulegen.
Die WHERE-Klausel legt Abfragebedingungen fest und filtert unnötige Datenzeilen heraus. Die folgende Anweisung fragt beispielsweise Daten ab, deren Alter größer als 20 ist:
SELECT *
FROM usertable
WHERE age>20
Die WHERE-Klausel kann verschiedene bedingte Operatoren enthalten:
Vergleichsoperatoren (Größenvergleich): >, >=, =, <, <=, <>, !>, !<
Bereichsoperator (ob der Ausdruckswert innerhalb des angegebenen Bereichs liegt): BETWEEN…AND…
NOT BETWEEN…AND…
Listenoperator (bestimmt, ob der Ausdruck ein angegebenes Element in der Liste ist): IN ( Element 1, Element 2...)
NOT IN (Element 1, Element 2...)
Mustervergleicher (um festzustellen, ob der Wert mit dem angegebenen Zeichen-Platzhalterformat übereinstimmt): LIKE, NOT LIKE
NULL-Wert-Beurteilungsoperator (um festzustellen, ob ein Ausdruck leer ist): IS NULL, NOT IS NULL
Logische Operatoren (wird für die logische Verbindung mehrerer Bedingungen verwendet): NOT, AND, OR
1. Bereichsoperator Beispiel: Alter ZWISCHEN 10 UND 30 entspricht Alter>=10 UND Alter<=30
2. Beispiel für einen Listenoperator: Land IN ('Deutschland', 'China')
3. Mustervergleichsoperator Beispiel: Oft Wird für die Fuzzy-Suche verwendet und bestimmt, ob der Spaltenwert mit dem angegebenen Zeichenfolgenformat übereinstimmt. Kann für Abfragetypen vom Typ char, varchar, text, ntext, datetime und smalldatetime verwendet werden.
Die folgenden Platzhalterzeichen können verwendet werden:
Prozentzeichen %: kann mit Zeichen jeder Art und Länge übereinstimmen. Wenn es sich um Chinesisch handelt, verwenden Sie bitte zwei Prozentzeichen, nämlich %%.
Unterstrich_: Entspricht einem einzelnen beliebigen Zeichen, das oft verwendet wird, um die Zeichenlänge von Ausdrücken zu begrenzen.
Eckige Klammern []: Geben Sie ein Zeichen, eine Zeichenfolge oder einen Bereich an, wobei das übereinstimmende Objekt eines davon sein muss. [^]: Sein Wert ist derselbe wie [], es ist jedoch erforderlich, dass das übereinstimmende Objekt ein anderes Zeichen als das angegebene Zeichen ist.
Zum Beispiel:
Wenn das Limit mit Publishing endet, verwenden Sie LIKE '%Publishing'
Wenn das Limit mit A beginnt: LIKE '[A]%'
Wenn das Limit nicht mit A beginnt : LIKE '[^A]% '
4. Beispiel für ein NULL-Wert-Beurteilungssymbol, WO Alter NULL IST
5. Logische Operatoren: Priorität ist NICHT, UND, ODER
(4) Sortieren der Abfrageergebnisse
Verwenden Sie die ORDER BY-Klausel, um die von der Abfrage zurückgegebenen Ergebnisse nach einer oder mehreren Spalten zu sortieren. Das Syntaxformat der ORDER BY-Klausel lautet:
ORDER BY {column_name [ASC|DESC]} [,...n]
Dabei steht ASC für die aufsteigende Reihenfolge, was der Standardwert ist, und DESC für die absteigende Reihenfolge . ORDER BY kann nicht nach Ntext-, Text- und Bilddatentypen sortieren
.
Zum Beispiel:
SELECT *
FROM usertable
ORDER BY age desc, userid ASC
Darüber hinaus können Sie nach Ausdrücken sortieren.
2. Union-Abfrage
Der UNION-Operator kann die Abfrageergebnismengen von zwei oder mehr SELECT-Anweisungen in einer Ergebnismenge zur Anzeige kombinieren, also eine Vereinigung durchführen Abfrage. Das Syntaxformat von UNION lautet:
select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]
Wobei selectstatement die SELECT-Abfrageanweisung ist kombiniert werden.
Die Option ALL bedeutet, dass alle Zeilen in der Ergebnismenge zusammengeführt werden. Wenn dieses Element nicht angegeben ist, wird nur eine Zeile doppelter Zeilen im kombinierten Abfrageergebnissatz beibehalten.
Bei der Durchführung einer gemeinsamen Abfrage ist der Spaltentitel des Abfrageergebnisses der Spaltentitel der ersten Abfrageanweisung. Daher müssen Spaltenüberschriften in der ersten Abfrageanweisung definiert werden. Wenn Sie die gemeinsamen Abfrageergebnisse sortieren möchten, müssen Sie in der ersten Abfrageanweisung auch den Spaltennamen, den Spaltentitel oder die Spaltennummer verwenden.
Wenn Sie den UNION-Operator verwenden, sollten Sie sicherstellen, dass die Auswahlliste jeder Union-Abfrageanweisung die gleiche Anzahl von Ausdrücken enthält und jeder Abfrageauswahlausdruck denselben Datentyp haben sollte, da sie sonst automatisch in denselben konvertiert werden können Datentyp. Bei der automatischen Konvertierung wandelt das System für numerische Typen Datentypen mit niedriger Genauigkeit in Datentypen mit hoher Genauigkeit um.
In einer UNION-Anweisung, die mehrere Abfragen enthält, erfolgt die Ausführungsreihenfolge von links nach rechts. Verwenden Sie Klammern, um diese Ausführungsreihenfolge zu ändern. Zum Beispiel:
Abfrage 1 UNION (Abfrage 2 UNION Abfrage 3)
3. Verbindungsabfrage
Mehrere Tabellenabfragen können über Verbindungsoperatoren implementiert werden . Verbindungen sind das Hauptmerkmal des relationalen Datenbankmodells und ein Merkmal, das es von anderen Arten von Datenbankverwaltungssystemen unterscheidet.
In einem relationalen Datenbankverwaltungssystem muss die Beziehung zwischen den einzelnen Daten nicht beim Erstellen der Tabelle bestimmt werden. Alle Informationen einer Entität werden häufig in einer Tabelle gespeichert. Beim Abrufen von Daten werden Informationen zu verschiedenen Entitäten, die in mehreren Tabellen gespeichert sind, durch Join-Operationen abgefragt. Join-Vorgänge bieten Benutzern große Flexibilität und können jederzeit neue Datentypen hinzufügen. Erstellen Sie neue Tabellen für verschiedene Entitäten und fragen Sie diese dann über Joins ab.
Die Verbindung kann in der FROM-Klausel oder der WHERE-Klausel der SELECT-Anweisung hergestellt werden. Die plausible Angabe der Verbindung in der FROM-Klausel hilft, den Verbindungsvorgang von den Suchbedingungen in der WHERE-Klausel zu unterscheiden. Daher wird diese Methode in Transact-SQL empfohlen.
Das Join-Syntaxformat der durch den SQL-92-Standard definierten FROM-Klausel lautet:
FROM join_table join_type join_table
[ON (join_condition)]
Wobei join_table auf den Namen der am Verbindungsvorgang beteiligten Tabelle hinweist. Die Verbindung kann für dieselbe Tabelle oder für mehrere Tabellen ausgeführt werden. Die Verbindung für dieselbe Tabelle wird auch als Selbstverknüpfung bezeichnet.
join_type gibt den Verbindungstyp an, der in drei Typen unterteilt werden kann: Inner Join, Outer Join und Cross Join. Inner JOIN verwendet Vergleichsoperatoren, um bestimmte Datenspalten zwischen Tabellen zu vergleichen, und listet die Datenzeilen in diesen Tabellen auf, die den Join-Bedingungen entsprechen. Je nach den verschiedenen verwendeten Vergleichsmethoden werden innere Verknüpfungen in drei Typen unterteilt: gleiche Verknüpfungen, natürliche Verknüpfungen und ungleiche Verknüpfungen. Es gibt drei Arten von äußeren Verknüpfungen: linke äußere Verknüpfung (LEFT OUTER JOIN oder LEFT JOIN), rechte äußere Verknüpfung (RIGHT OUTER JOIN oder RIGHT JOIN) und vollständige äußere Verknüpfung (FULL OUTER JOIN oder FULL JOIN). Im Gegensatz zu Inner-Joins werden bei Outer-Joins nicht nur die Zeilen aufgelistet, die den Join-Bedingungen entsprechen, sondern auch die linke Tabelle (bei Verwendung eines Left-Outer-Joins), die rechte Tabelle (bei Verwendung eines Right-Outer-Joins) oder beide Tabellen (wenn mithilfe eines vollständigen Outer-Joins), die den Suchkriterien entsprechen.
Cross-Join (CROSS JOIN) hat keine WHERE-Klausel. Es gibt das kartesische Produkt aller Datenzeilen in der verbundenen Tabelle zurück. Die Anzahl der Datenzeilen in der Ergebnismenge ist gleich der Anzahl der Datenzeilen in der ersten Tabelle, die die Abfragebedingungen erfüllt, multipliziert mit der Anzahl der Datenzeilen in der zweiten Tabelle, die die Abfragebedingungen erfüllen.
Die ON-Klausel (join_condition) in der Join-Operation gibt die Join-Bedingung an, die aus Spalten in der verbundenen Tabelle, Vergleichsoperatoren, logischen Operatoren usw. besteht.
Unabhängig von der Art der Verbindung können Text-, Ntext- und Bilddatentypspalten nicht direkt verbunden werden, diese drei Spalten können jedoch indirekt verbunden werden. Zum Beispiel:
SELECT p1.pub_id,p2.pub_id,p1.pr_info
FROM pub_info AS p1 INNER JOIN pub_info AS p2
ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)
(1) Inner Join
Die Abfrageoperation „Inner Join“ listet die Datenzeilen auf, die der Join-Bedingung entsprechen. Sie verwendet Vergleichsoperatoren, um die Spaltenwerte der verbundenen Spalten zu vergleichen. Es gibt drei Arten von inneren Verknüpfungen:
1. Äquivalente Verknüpfung: Verwenden Sie den Gleichheitszeichenoperator (=) in der Verknüpfungsbedingung, um die Spaltenwerte der verbundenen Spalten zu vergleichen , einschließlich doppelter Spalten darin.
2. Ungleiche Verbindung: Verwenden Sie andere Vergleichsoperatoren außer dem Gleichheitsoperator in der Verbindungsbedingung, um die Spaltenwerte der verbundenen Spalten zu vergleichen. Zu diesen Operatoren gehören >, >=, <=, <, !>, !< und <>.
3. Natürliche Verknüpfung: Verwenden Sie den Gleichheitsoperator (=) in der Verknüpfungsbedingung, um die Spaltenwerte der verbundenen Spalten zu vergleichen, verwenden Sie jedoch eine Auswahlliste, um die in der Abfrageergebnismenge enthaltenen Spalten anzugeben und Duplikate zu löschen Spalten in der Join-Tabelle.
Im folgenden Beispiel wird ein Equijoin verwendet, um die Autoren und Verlage in derselben Stadt in den Autoren- und Verlagstabellen aufzulisten:
SELECT *
FROM Authors AS a INNER JOIN Publishers AS p
ON a.city=p.city
Ein weiteres Beispiel ist die Verwendung natürlicher Verknüpfungen, um doppelte Spalten (Stadt und Bundesland) in den Autoren- und Herausgebertabellen in der Auswahlliste zu löschen:
SELECT a.*,p.pub_id ,p.pub_name, p.country
FROM Authors AS INNER JOIN Publishers AS p
ON a.city=p.city
(2) Outer Join
Wenn Inner Joins, Rückkehr Die Abfrageergebnisse setzen nur Zeilen, die die Abfragebedingungen (WHERE-Suchbedingungen oder HAVING-Bedingungen) und Join-Bedingungen erfüllen. Wenn ein Outer-Join verwendet wird, enthält die zurückgegebene Abfrageergebnismenge nicht nur Zeilen, die die Join-Bedingungen erfüllen, sondern auch die linke Tabelle (bei Left-Outer-Join), die rechte Tabelle (bei Right-Outer-Join) oder zwei Randtabellen (Full). alle Datenzeilen im Outer Join). Wie unten gezeigt, verwenden Sie einen linken äußeren Join, um den Foruminhalt und die Autoreninformationen zu verbinden:
SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
ON a.username=b.username
Im Folgenden wird ein vollständiger äußerer Join verwendet, um alle Autoren in der Stadttabelle und alle Autoren in der Benutzertabelle sowie die Städte aufzulisten, in denen sie sich befinden:
SELECT a. *,b.*
FROM city als FULL OUTER JOIN-Benutzer als b
ON a.username=b.username
(3) Cross-Join
Cross-Join hat kein WHERE In der Klausel werden alle Datenzeilen der beiden verbundenen Tabellen zurückgegeben. Kartesisches Produkt: Die Anzahl der im Ergebnissatz zurückgegebenen Datenzeilen ist gleich der Anzahl der Datenzeilen in der ersten Tabelle, die die Abfragebedingungen erfüllen, multipliziert mit der Anzahl der Datenzeilen in der zweiten Tabelle, die die Abfragebedingungen erfüllen. Wenn beispielsweise in der Titeltabelle 6 Buchkategorien und in der Herausgebertabelle 8 Verlage vorhanden sind, beträgt die Anzahl der durch die folgende Querverbindung abgerufenen Datensätze 6*8=48 Zeilen.
FROM titles CROSS JOIN editors
ORDER BY type
[Post=0][/Post]
Das obige ist der detaillierte Inhalt vonEine wunderbare Zusammenfassung der SQL-Abfragemethoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!