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

nginx+tomcat-Beispiel für den Zugriff auf das Projekt über den Domänennamen

Ich wollte wissen, wie ich mit einem Domänennamen...

So berechnen Sie die Bildrate FPS von Webanimationen

Inhaltsverzeichnis Standards für flüssige Animati...

Detaillierte Erklärung der einfachen HTML- und CSS-Verwendung

Ich werde drei Tage benötigen, um den statischen ...

Centos7.5 installiert die Bereitstellung des binären Pakets mysql5.7.24

1. Umweltvorbereitung: Betriebssystem: CentOS Lin...

UTF-8- und GB2312-Webkodierung

In letzter Zeit haben mich viele Studenten zur Ko...

So laden Sie Projekte im Linux-System in die Code Cloud hoch

Erstellen Sie ein neues Projekt test1 auf Code Cl...

So installieren und verwenden Sie Ubuntu Docker

Inhaltsverzeichnis 1. Automatische Installation m...

Implementieren einer benutzerdefinierten Bildlaufleiste mit nativem JS

In diesem Artikelbeispiel wird der spezifische JS...

Datensatz zu langsamen MySQL-Abfragen und Abfragerekonstruktionsmethoden

Vorwort Was ist eine langsame Abfrage und wie kan...

Tutorial zur Installation von MySQL 5.7.18 unter Windows 10

In diesem Tutorial erfahren Sie alles über die In...

Beispiel für utf8mb4-Sortierung in MySQL

Allgemeine utf8mb4-Sortierregeln in MySQL sind: u...

So erstellen Sie schnell zig Millionen Testdaten in MySQL

Bemerkung: Die Datenmenge in diesem Artikel beträ...