Heim > Datenbank > MySQL-Tutorial > Hauptteil

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

青灯夜游
Freigeben: 2021-12-20 17:25:07
nach vorne
2877 Leute haben es durchsucht

Wie frage ich in MySQL ab? Der folgende Artikel fasst 15 häufig verwendete Abfrageklauseln in MySQL zusammen, die es wert sind, gesammelt zu werden. Ich hoffe, dass er für alle hilfreich ist!

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

Für die Datenanalyse verwendet MySQL hauptsächlich Abfragen wie Datensortierung, Gruppierung, Deduplizierung, Zusammenfassung, Zeichenfolgenabgleich usw. Wenn die abgefragten Daten mehrere Tabellen umfassen, müssen Sie diese Tabellen verknüpfen. In diesem Artikel geht es um häufig verwendete Abfrageklauseln in MySQL, insgesamt 15. [Verwandte Empfehlungen: MySQL-Video-Tutorial]

*1, *Sortieren: Sortieren nach

Die Sortierung erfolgt durch Reihenfolge, zum Beispiel durch Abfragen von Daten aus der Stuinfo-Tabelle und Sortieren nach Alter. Die SQL-Anweisung lautet:

select * from stuinfo order by age;
Nach dem Login kopieren

Das Abfrageergebnis:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

Sie können sehen, dass die Abfrageergebnisse in aufsteigender Reihenfolge nach Alter angeordnet sind. Wenn Sie eine absteigende Reihenfolge erreichen möchten, müssen Sie am Ende nur desc hinzufügen . Die SQL-Anweisung lautet:

select * from stuinfo order by age desc;
Nach dem Login kopieren

Abfrageergebnisse:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

Die Abfrageergebnisse sind zu diesem Zeitpunkt in absteigender Reihenfolge nach Alter geordnet.

Das Obige dient zum Sortieren numerischer Daten. Zum Sortieren nach Namen können Sie beispielsweise auch Folgendes verwenden:

select * from stuinfo order by stuname;
Nach dem Login kopieren

Abfrageergebnisse:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

As Wie Sie oben sehen können, handelt es sich bei der Zeichenfolgensortierung tatsächlich um eine Sortierung nach Anfangsbuchstaben in aufsteigender Reihenfolge. Natürlich können auch Datumsangaben sortiert werden. Bitte denken Sie selbst darüber nach.

*2, *Group: Group by

Die Gruppierung wird durch die Group by-Klausel implementiert, um beispielsweise nach Geschlecht zu gruppieren, lautet die SQL-Anweisung.

select gender,count(*) from stuinfo group by gender;
Nach dem Login kopieren

Abfrageergebnisse:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

Die obige SQL-Anweisung gruppiert nach Geschlecht und gibt die Anzahl der Personen in jeder Gruppe an. Die Gruppierung nach anderen Feldern ist ebenfalls ähnlich.

*3, *Duplikationsentfernung: eindeutig

Die Entfernung von Duplikaten ist ein üblicher Vorgang in der Datenverarbeitung. Sie wird durch die eindeutige Klausel implementiert, da bei einigen Studenten eine Deduplizierung erforderlich ist in derselben Stadt.

SQL-Anweisung lautet:

select distinct city from stuinfo;
Nach dem Login kopieren

Abfrageergebnis:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

Sie können sehen, dass bei der Deduplizierung eindeutig vor dem Deduplizierungsfeld hinzugefügt wird.

*4, *Nullwert: ist null/ist nicht null

Nullwert ist ein Datensatz, der bestimmt, ob ein bestimmtes Feld leer ist oder nicht, um beispielsweise den Datensatz abzufragen, in dem die Stadt leer ist , die SQL-Anweisung lautet:

select * from stuinfo where city is null;
Nach dem Login kopieren

Abfrageergebnisse:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

Sie können sehen, dass es sich bei den leeren Datensätzen in der Abfrage tatsächlich um die Bedingung handelt, bei der die Bedingung „null“ folgt.

Umgekehrt, wenn Sie die Datensätze abfragen, bei denen die Stadt nicht leer ist, folgen Sie einfach nicht null. Die SQL-Anweisung lautet:

select * from stuinfo where city is not null;
Nach dem Login kopieren

Abfrageergebnisse:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

*5, *Zusammenfassung: Anzahl, Maximum Wert, Summierung, Mittelwert

Zusammenfassung ist eigentlich das Zählen, das Ermitteln des Maximal-/Minimalwerts, der Summierung, des Durchschnitts usw.

Die am häufigsten verwendete statistische Tabelle ist die Anzahl der Datensätze. Sie wird durch count implementiert. Die SQL-Anweisung lautet:

select count(*) from stuinfo;
Nach dem Login kopieren

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

Die Abfrage des Maximal-/Minimalwerts eines bestimmten Felds in der Tabelle wird durch max/ implementiert. Bei der Abfrage des Höchstalters lautet die SQL-Anweisung beispielsweise:

select max(age) from stuinfo;
Nach dem Login kopieren

Abfrageergebnis:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

Die nächste Frage: Wie schreibe ich die SQL-Anweisung, um den Namen des ältesten Schülers abzufragen?

Dies ist eine bedingte Abfrage. Die Bedingung ist, dass das Alter dem Höchstalter entsprechen muss. Schreiben Sie gemäß dieser Idee die SQL-Anweisung:

select stuname,age from stuinfo where age=(select max(age) from stuinfo);
Nach dem Login kopieren

Abfrageergebnisse:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

Wie Sie oben sehen können Es handelt sich tatsächlich um die maximale Altersabfrage. Kommen Sie als Bedingung heraus und fragen Sie dann den entsprechenden Namen und das entsprechende Alter ab.

Hinterlassen Sie eine Frage: Wie kann ich den Namen des jüngsten Schülers überprüfen?

Um zu summieren, verwenden Sie einfach sum. Es muss eine Summe numerischer Daten sein, ähnlich wie count, daher werde ich keine Demonstration durchführen.

Das letzte ist der Mittelwert. Verwenden Sie avg, um beispielsweise das Durchschnittsalter aller Schüler abzufragen. Die SQL-Anweisung lautet:

select avg(age) from stuinfo;
Nach dem Login kopieren

Abfrageergebnisse:

1Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

*6、 *别名:as

别名,就是as,意为用作,例如,查询出年龄的最大值、最小值和均值,sql语句为:

select max(age),min(age),avg(age) from stuinfo;
Nach dem Login kopieren

查询结果:

1Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

这样显示字段名不太好看,我们可以用as起一个别名,sql语句为:

select max(age) as age_max,min(age) as age_min,avg(age) as age_avg from stuinfo;
Nach dem Login kopieren

查询结果:

1Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

*7、 *表的连接

当要查询的记录涉及两个或者两个以上的表时,就需要表的连接。

表的连接有三种:内连接、左连接和右连接。

(1)内连接:inner join

内连接相当于两个表的交集,如下图所示。

1Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

例如,有两个表:学员信息表和成绩表,有一个共同的列:学号。

1Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

现在想查询出每个学员的姓名和成绩,查询结果如下图所示。

1Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

以上查询结果中的姓名需要从第一个表中提取,成绩需要从第二个表中提取,这叫表的连接

因为学号是共同的列,所以根据学号连接,以上的这种连接方式是获取两个表中学号相同的记录,叫作内连接

具体的sql语句为:

select sname,score fromtb1 inner join tb2 on tb1.sid=tb2.sid;
Nach dem Login kopieren

查询结果:

1Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

需要注意的是,连接条件用on。

(2)左连接:left join

左连接是以左表为基准,去匹配右表中的记录,如果右表中没有对应匹配记录则为空。

左连接用集合中的文氏图表示如下。

1Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

还是用以上提到的学员信息表和成绩表,左连接的示意图如下。

1Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

左连接的sql语句为:

select sname,score fromtb1 left join tb2 on tb1.sid=tb2.sid;
Nach dem Login kopieren

查询结果:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

(3)右连接:right join

右连接是以右表为基准,去匹配左表中的记录,如果左表中没有对应匹配记录则为空。

右连接用集合中的文氏图表示如下。

2Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

还是用以上提到的学员信息表和成绩表,右连接的示意图如下。

2Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

右连接的sql语句为:

select sname,score fromtb1 right join tb2 on tb1.sid=tb2.sid;
Nach dem Login kopieren

查询结果:

2Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

*8、 *字符串匹配:like

有时候在字符串查找时,需要查找符合某个匹配模式的字符串。

例如,在表stuinfo中,查找城市中含有字符串‘an’的记录,sql语句为:

select * from stuinfo where city like '%an%';
Nach dem Login kopieren

注意:匹配模式中的%表示匹配任意长度的任意字符串。

*9、 *集合:in

查找属于某个集合的记录用in。

例如,查找城市为北京或者天津的记录,sql语句为:

select * from stuinfo where city in('Beijing','Tianjin');
Nach dem Login kopieren

查询结果:

2Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

*10、 *条件语句:having

这里说的条件语句是having,跟where类似,但是一般和统计函数连用。

比如,查找平均年龄小于25岁的城市,sql语句为:

select city from stuinfo group by city having avg(age)<25;
Nach dem Login kopieren

查询结果:

2Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

以上sql语句先按照城市分组,再跟条件语句having。

*11、 *区间查找:between and

between and用于查找符合某个区间(包含两个边界的值)的记录。

例如,查找年龄介于20到30岁之间的记录,sql语句为:

select * from stuinfo having age between 20 and 30;
Nach dem Login kopieren

查询结果:

2Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

*12、 *联结:union

联结,也叫联合,用于连接两个查询的结果,并且去重。

例如,两个表中都有学号,用sql语句分别从这两个表中查询出学号,然后联结。

select sid from tb1unionselect sid from tb2;
Nach dem Login kopieren

查询结果:

2Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

以上sql语句相当于将两个select语句的查询结果用union合并,并且是去重合并。

如果不想去重,用union all即可,sql如下。

select sid from tb1union allselect sid from tb2;
Nach dem Login kopieren

查询结果:

2Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

*13、 *日期格式化:date_format

在SQL中,对于日期时间的处理也是很常见的问题。

例如,按照年份、月份或者日期等对数据进行分组汇总,就需要从日期时间中提取年份、月份及日期等。

举个例子,获取每个学员的出生年份,sql语句为:

select date_format(birthdate,&#39;%Y&#39;) as birth_year from stuinfo;
Nach dem Login kopieren

查询结果:

2Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

获取出生月份也是如此,只是参数用'%m',sql语句为:

select date_format(birthdate,&#39;%m&#39;) as birth_year from stuinfo;
Nach dem Login kopieren

查询结果:

Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

获取到年份、月份后,就可以按照年份、月份进行分组查询统计了。

*14、 *条件分支:case语句

条件分支是数据统计中的一个很重要的应用,在MySQL中用case语句表达条件分支,case语句有以下两种用法。

用法一:

例如,根据学员所处的城市,将记录标记为一线城市及其他,sql语句为:

select distinct city,
  case city
    when &#39;Beijing&#39; then &#39;一线城市&#39;
    when &#39;Shanghai&#39; then &#39;一线城市&#39;
    else &#39;其他&#39; end as city_level
from stuinfo;
Nach dem Login kopieren

查询结果:

3Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

从上面看到,case后面跟的是要判断的字段,when后跟的是不同的情况,then则是不同情况对应的类别,最后的else表示其他情况。

整个case语句相当于给原来的表增加一个字段:city_level,然后我们可以根据这个字段进行分组查询。

用法二:

例如,根据学员的年龄进行分层,青年、中年及其他,sql语句为:

select stuname,age,
  case when age<30 then &#39;青年&#39;
      when age>=30 and age<35 then &#39;中年&#39;
      else &#39;其他&#39; end as age_level
from stuinfo;
Nach dem Login kopieren

查询结果:

3Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

从上面可以看到,case后面跟的是条件when,即年龄满足什么条件时,将其划分到对应的类别,最后的else表示其他情况。

整个case语句相当于给原来的表增加一个字段:age_level,然后我们可以根据这个字段进行分组查询。

*15、 *变量

最后,谈谈MySQL中的变量,当然,MySQL中的变量有好几种类型,这里只说用户变量,像@var这种。

例如,我们希望根据学员的年龄计算出每个人到35岁还有几年,这里可以定义一个变量并赋值为35,然后利用这个变量减去年龄就得到结果。

首先,定义变量var,sql语句为:

set @var:=35;
Nach dem Login kopieren

接着,使用这个变量,sql语句为:

select @var-age as age_gap from stuinfo;
Nach dem Login kopieren

查询结果:

3Fassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie)

当然,关于变量还有很多更复杂的用法,多用于计算连续登陆天数这种问题或者存储过程中。

更多编程相关知识,请访问:编程视频!!

Das obige ist der detaillierte Inhalt vonFassen Sie 15 häufig verwendete Abfrageklauseln in MySQL zusammen und teilen Sie sie (kommen Sie und sammeln Sie sie). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage