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:
|
<<: Prozessdiagramm für die Ideenbereitstellung und Tomcat-Dienstimplementierung
>>: Detaillierte Erläuterung des Vuex-Gesamtfalls
Umwelt: [root@centos7 ~]# uname -r 3.10.0-514.el7...
PS: So deaktivieren Sie die Remote-Anmeldung des ...
1. Einführung in verteilte Speichersysteme Die ko...
Inhaltsverzeichnis 1. Open-Source-Lagerverwaltung...
Die folgende Grafik zeigt, wie zeitaufwändig es is...
In diesem Artikel wird hauptsächlich die Layoutme...
Ergebnis:Implementierungscode html <nav class=...
Inhaltsverzeichnis 1.parseInt(Zeichenfolge, Basis...
Der erste Cutter in China github.com/chokcoco Hie...
Wenn Ihre MySQL-Datenbank auf einem CentOS7-Syste...
Inhaltsverzeichnis 1. Einführung in UDP und Linux...
Inhaltsverzeichnis Vorwort 1. Was ist ein Abschlu...
Zwei Fälle: 1. Mit Index 2. Ohne Index Voraussetz...
Vorbereiten: Definieren Sie eine Lehrertabelle un...
In diesem Artikel wird beschrieben, wie Sie die m...