Zusammenfassung der MySQL-Abfragesyntax

Zusammenfassung der MySQL-Abfragesyntax

Vorwort:

In diesem Artikel wird hauptsächlich die Abfragesyntax wie „Where“, „Group By“, „Order By“, „Limit“, „Join“, „Union“, „Union All“, „Subtable“ usw. in MySQL vorgestellt.

Testdatenaufbereitung

erstelle Tabelle emp (empno numerisch(4) ungleich null, ename varchar(10), job varchar(9), mgr numerisch(4), hiredate datetime, sal numerisch(7, 2), comm numerisch(7, 2), deptno numerisch(2));
Erstelle Tabelle dept (deptno numeric(2), dname varchar(14), loc varchar(13));
Tabelle „Salgrade“ erstellen (Grad numerisch, Losal numerisch, Hisal numerisch);
in Abteilungswerte einfügen (10, ‚ACCOUNTING‘, ‚NEW YORK‘); in Abteilungswerte einfügen (20, ‚RESEARCH‘, ‚DALLAS‘); in Abteilungswerte einfügen (30, ‚SALES‘, ‚CHICAGO‘); in Abteilungswerte einfügen (40, ‚OPERATIONS‘, ‚BOSTON‘);
in Salgrade-Werte einfügen (1, 700, 1200); in Salgrade-Werte einfügen (2, 1201, 1400); in Salgrade-Werte einfügen (3, 1401, 2000); in Salgrade-Werte einfügen (4, 2001, 3000); in Salgrade-Werte einfügen (5, 3001, 9999);
insert into emp values ​​​​(7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, null, 20);insert into emp values ​​​​(7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);insert into emp values ​​​​(7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);insert into emp values ​​​​(7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, null, 20);insert into emp values ​​​​(7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);insert into emp values ​​​​(7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, null, 30);insert into emp values ​​​​(7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, null, 10);insert into emp values ​​​​(7788, 'SCOTT', 'ANALYST', 7566, '1982-12-09', 3000, null, 20);insert into emp values ​​​​(7839, 'KING', 'PRESIDENT', null, '1981-11-17', 5000, null, 10);insert into emp values ​​​​(7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30);insert into emp values ​​​​(7876, 'ADAMS', 'CLERK', 7788, '1983-01-12', 1100, null, 20);insert into emp values ​​​​(7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, null, 30);insert into emp values ​​​​(7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, null, 20);insert into emp values ​​​​(7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, null, 10);

1. Fuzzy-Abfrage

mysql> select * from emp where ename like '%S%'; +-------+-------+---------+------+---------------------+---------+------+--------+| empno | ename | job | mgr | hiredate | sal | comm | deptno |+-------+-------+---------+------+---------------------+---------+------+--------+| 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800.00 | NULL | 20 || 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL | 20 || 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000.00 | NULL | 20 || 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100.00 | NULL | 20 || 7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950.00 | NULL | 30 |+-------+-------+---------+------+---------------------+---------+------+--------+5 rows in set (0.00 sec)
MySQL> Ausgewählte EMP, wobei der ENMEITE ISGE ISTEN +--------+| .
MySQL> SELECT * von EMP, wo sich der ENMIS wie "%s ';+-------+------- -----+| |.
MySQL> Ausgewählte EMP, wo sich eingehalten hat, wie +--------+| +-------+-------+----------+------+-------------------------+----------+------+--------+2 Zeilen in Set (0,00 Sek.)

Zusammenfassung: % steht für beliebige 0 oder mehr Zeichen und kann mit Zeichen jeden Typs und jeder Länge übereinstimmen; _ steht für jedes einzelne Zeichen und stimmt mit einem einzelnen beliebigen Zeichen überein.

2. Sortieren

mysql> select * from emp order by sal;+-------+--------+-----------+------+---------------------+---------+---------+--------+| empno | ename | job | mgr | hiredate | sal | comm | deptno |+-------+--------+-----------+------+---------------------+---------+---------+--------+| 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800.00 | NULL | 20 || 7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950.00 | NULL | 30 || 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100.00 | NULL | 20 || 7521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250.00 | 500.00 | 30 || 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 | 30 || 7934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300.00 | NULL | 10 || 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500.00 | 0.00 | 30 || 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600.00 | 300.00 | 30 || 7782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450.00 | NULL | 10 || 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850.00 | NULL | 30 || 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL | 20 || 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000.00 | NULL | 20 || 7902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000.00 | NULL | 20 || 7839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 | NULL | 10 |+-------+--------+-----------+------+---------------------+---------+---------+--------+14 rows in set (0.00 sec)
mysql> select * from emp order by sal asc;+-------+--------+-----------+------+---------------------+---------+---------+--------+| empno | ename | job | mgr | hiredate | sal | comm | deptno |+-------+--------+-----------+------+---------------------+---------+---------+--------+| 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800.00 | NULL | 20 || 7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950.00 | NULL | 30 || 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100.00 | NULL | 20 || 7521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250.00 | 500.00 | 30 || 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 | 30 || 7934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300.00 | NULL | 10 || 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500.00 | 0.00 | 30 || 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600.00 | 300.00 | 30 || 7782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450.00 | NULL | 10 || 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850.00 | NULL | 30 || 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL | 20 || 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000.00 | NULL | 20 || 7902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000.00 | NULL | 20 || 7839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 | NULL | 10 |+-------+--------+-----------+------+---------------------+---------+---------+--------+14 rows in set (0.00 sec)
mysql> select * from emp order by sal desc;+-------+--------+-----------+------+---------------------+---------+---------+--------+| empno | ename | job | mgr | hiredate | sal | comm | deptno |+-------+--------+-----------+------+---------------------+---------+---------+--------+| 7839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 | NULL | 10 || 7788 | SCOTT | ANALYST | 7566 | 1982-12-09 00:00:00 | 3000.00 | NULL | 20 || 7902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000.00 | NULL | 20 || 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL | 20 || 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850.00 | NULL | 30 || 7782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450.00 | NULL | 10 || 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600.00 | 300.00 | 30 || 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500.00 | 0.00 | 30 || 7934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300.00 | NULL | 10 || 7521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250.00 | 500.00 | 30 || 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 | 30 || 7876 | ADAMS | CLERK | 7788 | 1983-01-12 00:00:00 | 1100.00 | NULL | 20 || 7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950.00 | NULL | 30 || 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800.00 | NULL | 20 |+-------+--------+-----------+------+---------------------+---------+---------+--------+14 rows in set (0.00 sec)

Zusammenfassung: Die Sortierung erfolgt standardmäßig in aufsteigender Reihenfolge. Sie können auch die absteigende Reihenfolge angeben.

3. Begrenzen Sie die Anzahl der Zeilen

MySQL> Ausgewählte Limit 3;+-------+-------+----------+------+----------------- +-----+| 521 ​​|
MySQL> Ausgewählte Begrenzung von SAL Desc 3;+-------+-------+------- -----+| Scott |

Zusammenfassung: limit begrenzt die Anzahl der anzuzeigenden Zeilen und kann in Verbindung mit order by verwendet werden.

4. Aggregationsfunktion

Verwendung der Funktion count() sum(): #1. Gehälter und Gehälter verschiedener Abteilungenmysql> select deptno,sum(sal) from emp group by deptno;+--------+----------+| deptno | sum(sal) |+--------+----------+| 10 | 8750,00 || 20 | 10875,00 || 30 | 9400,00 |+--------+----------+3 Zeilen im Set (0,01 Sek.)
: : : : : : : : : : : : : : :
#3.verschiedene Positionen in verschiedenen Abteilungen mit einem Gehalt von > 5000 habenmysql> select deptno,job, sum(sal) -> from emp -> group by deptno ,job -> having sum(sal)>5000; +--------+----------+----------+| deptno | job | sum(sal) |+--------+----------+----------+| 20 | ANALYST | 6000,00 || 30 | SALESMAN | 5600,00 |+--------+----------+----------+2 Zeilen im Set (0,00 Sek.)#4.Häufige Kombinationen mit Order Limit select deptno,job, sum(sal) as sum_salfrom emp where job='SALESMAN'group by deptno ,jobmit sum(sal)>5000 order by sum(sal) desc limit 1;

Im Folgenden wird die Verwendung der Join- und Union-Datenaufbereitung beschrieben:

Tabelle erstellen testa(aid int,aname varchar(40));
Tabelle erstellen testb(Gebot int, bname varchar(40), Alter int);
in Testawerte einfügen (1, „xiaoming“); in Testawerte einfügen (2, „LY“); in Testawerte einfügen (3, „KUN“); in Testawerte einfügen (4, „ZIDONG“); in Testawerte einfügen (5, „HB“);

in Testb-Werte einfügen (1, „xiaoming“, 10); in Testb-Werte einfügen (2, „LY“, 100); in Testb-Werte einfügen (3, „KUN“, 200); in Testb-Werte einfügen (4, „ZIDONG“, 110); in Testb-Werte einfügen (6, „niu“, 120); in Testb-Werte einfügen (7, „meng“, 130); in Testb-Werte einfügen (8, „mi“, 170);

5.Links verbinden

mysql> Auswahl -> a.aid,a.aname, -> b.bid,b.bname,b.age -> von testa als a -> linker Join testb als b auf a.aid=b.bid; +------+----------+------+----------+------+| aid | aname | bid | bname | age |+------+----------+------+----------+------+| 1 | xiaoming | 1 | xiaoming | 10 || 2 | LY | 2 | LY | 100 || 3 | KUN | 3 | KUN | 200 || 4 | ZIDONG | 4 | ZIDONG | 110 || 5 | HB | NULL | NULL |+------+----------+------+----------+------+5 Zeilen im Set (0,00 Sek.)

Zusammenfassung: Ein Left Join einer Tabelle b ist abgeschlossen und die Tabelle b wird zum Zuordnen einer Tabelle verwendet. Das Schlüsselwort LEFT JOIN gibt alle Zeilen der linken Tabelle (a) zurück, auch wenn in der rechten Tabelle (b) keine übereinstimmenden Zeilen vorhanden sind. Die nicht übereinstimmenden Spalten werden durch NULL ersetzt.

6.Rechtsbeitritt

MySQL> Select-> A.Aid, A.Aname,-> B.Bid, B.bname, von testa als ordentlicher Join als bauf Xiaoming | NULL |

Zusammenfassung: a right join b b Tabelle ist vollständig, verwenden Sie Tabelle a, um Tabelle b abzugleichen. Das Schlüsselwort RIGHT JOIN gibt alle Zeilen aus der rechten Tabelle (b) zurück, auch wenn es in der linken Tabelle (a) keine übereinstimmende Zeile gibt. Die nicht übereinstimmenden Spalten werden durch NULL ersetzt.

7. Innerer Join

mysql> Auswahl -> a.aid,a.aname, -> b.bid,b.bname,b.age -> von testa als a -> innerer Join testb als b auf a.aid=b.bid; +------+----------+------+----------+------+| aid | aname | bid | bname | age |+------+----------+------+----------+------+| 1 | xiaoming | 1 | xiaoming | 10 || 2 | LY | 2 | LY | 100 || 3 | KUN | 3 | KUN | 200 || 4 | ZIDONG | 4 | ZIDONG | 110 |+------+----------+------+----------+------+4 Zeilen im Set (0,00 Sek.)
mysql> Auswahl -> a.aid,a.aname, -> b.bid,b.bname,b.age -> von testa als a -> verbinde testb als b auf a.aid=b.bid; +------+----------+------+----------+------+| aid | aname | bid | bname | age |+------+----------+------+----------+------+| 1 | xiaoming | 1 | xiaoming | 10 || 2 | LY | 2 | LY | 100 || 3 | KUN | 3 | KUN | 200 || 4 | ZIDONG | 4 | ZIDONG | 110 |+------+----------+------+----------+------+4 Zeilen im Set (0,00 Sek.)

Zusammenfassung: Inner Join hat die gleiche Wirkung wie Join. Das Schlüsselwort INNER JOIN gibt Zeilen zurück, wenn mindestens eine Übereinstimmung in der Tabelle vorhanden ist.

8.Union und Union alle

mysql> wähle aid,aname aus testa -> union -> wähle bid,bname aus testb;+------+----------+| aid | aname |+------+----------+| 1 | xiaoming || 2 | LY || 3 | KUN || 4 | ZIDONG || 5 | HB || 6 | niu || 7 | meng || 8 | mi |+------+----------+8 Zeilen im Set (0,01 Sek.)
mysql> wähle aid,aname aus testa -> alles verschmelzen -> wähle bid,bname aus testb;+------+----------+| aid | aname |+------+----------+| 1 | xiaoming || 2 | LY || 3 | KUN || 4 | ZIDONG || 5 | HB || 1 | xiaoming || 2 | LY || 3 | KUN || 4 | ZIDONG || 6 | niu || 7 | meng || 8 | mi |+------+----------+12 Zeilen im Set (0,00 Sek.)

Zusammenfassung: „Union“ entfernt Duplikate, „Union All“ hingegen nicht.

Oben finden Sie den detaillierten Inhalt der Zusammenfassung der MySQL-Abfragesyntax. Weitere Informationen zur MySQL-Abfragesyntax finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So fragen Sie Datum und Uhrzeit in MySQL ab
  • Erweiterte MySQL-Datenbankabfrage und Mehrtabellenabfrage
  • Eine kurze Diskussion über die Implementierung von Fuzzy-Abfragen mit Platzhaltern in MySQL
  • Eine kurze Erläuterung zur Verwendung des kartesischen Produktprinzips zum Abfragen mehrerer Tabellen in MySQL
  • Mehrere Implementierungsmethoden sowie Vor- und Nachteile der SQL-Paging-Abfrage in MySQL
  • Ein Artikel zum Erlernen von Fähigkeiten zur Optimierung von MySQL-Indexabfragen
  • Schritte zur Methode „Mysql-Abfragedatenbankkapazität“
  • Python pymysql Link Datenbankabfrageergebnisse in Dataframe-Instanz konvertiert
  • Eine kurze Diskussion über das Problem der Parameterübergabe bei der Verwendung in pymysql-Abfrageanweisungen
  • Beispiel für das Abrufen der neuesten Daten mithilfe einer MySQL-Mehrtabellenassoziations-Eins-zu-viele-Abfrage

<<:  Prozessdiagramm für die Ideenbereitstellung und Tomcat-Dienstimplementierung

>>:  Detaillierte Erläuterung des Vuex-Gesamtfalls

Artikel empfehlen

jQuery implementiert die Registrierungsseite zur Mitarbeiterverwaltung

In diesem Artikelbeispiel wird der spezifische Co...

Welche Codes sollte ich beherrschen, wenn ich Webdesign lerne?

In diesem Artikel werden einige der Techniken ausf...

Kurze Analyse von CentOS 7 mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar

Baidu Cloud-Festplatte: Link: https://pan.baidu.c...

Beispielcode für CSS-Pseudoklassen zum Ändern des Eingabeauswahlstils

Hinweis: Diese Tabelle ist aus dem W3School-Tutor...

Lösung zur Definition der Mindestspannweite hat keine Auswirkung

Das Span-Tag wird häufig beim Erstellen von HTML-W...

Verkürzen Sie die Seiten-Rendering-Zeit, damit die Seite schneller läuft

Wie kann die Seiten-Rendering-Zeit im Browser so ...

Beispielcode zum Generieren eines QR-Codes mit js

Vor einiger Zeit musste das Projekt die Funktion ...

CentOS 8-Installationsdiagramm (superdetailliertes Tutorial)

CentOS 8 ist offiziell veröffentlicht! CentOS ent...

Vue hält den Benutzer angemeldet (verschiedene Token-Speichermethoden)

Inhaltsverzeichnis So setzen Sie Cookies Nachteil...

Grundlegende MySQL-Tabellenabfragen – häufige Fehler beim Left-Join

Überblick Bei kleinen und mittelgroßen Projekten ...

Docker-Grundlagen

Vorwort: Docker ist eine Open-Source-Anwendungsco...

JavaScript generiert zufällige Grafiken durch Klicken

In diesem Artikel wird der spezifische Code von J...