Requête de table unique de sélection de série MySQL de l'instruction DML
Fonctionnement et entretien YouthO & M Youth
Description de la série d'articles
Les articles de la série MySQL incluent l'installation de logiciels, l'utilisation spécifique, la sauvegarde et la restauration, etc., qui sont principalement utilisés pour enregistrer des notes d'étude personnelles.La version principale de MySQL utilisée est la 5.7.28 et la version du système serveur est CentOS 7.5. Ce chapitre concerne le contenu de la requête de table unique sélectionnée. Ce chapitre utilise la table city dans world.sql et la table student auto-construite, parmi lesquelles world.sql peut être téléchargé sur le site officiel de mysql. Remarque: les données mondiales sont 19xx, les données ne correspondent pas à celles actuelles.
La structure de la table des élèves est la suivante:
①sno: numéro de l'élève
②sname: nom de l'élève
③sage: âge de l'élève
④ssex: genre
⑤status: status
La structure de la table des villes est la suivante:
①ID: numéro de série
②Nom: nom de la ville
③CountryCode: code du pays
④District: province / état
⑤Population: population
À propos de SELECT
按照传统的SQL分类,select属于DML,但是由于select作为最常用的语句,有很多人将它和show语句分为DQL。
无论select是属于DML还是DQL,它都是SQL语言里最重要、最常见的语句,可以配合where、group by、order by等一起使用。
sélectionner l'utilisation
0 1 utilisé seul
SELECT seul
①Rechercher toutes les informations de la table
select * from student;
②Rechercher les informations de colonne spécifiées
select sname from student;
③Fin du calcul
0 2où instruction conditionnelle
Le format de l'instruction where est le suivant:
select 指定列1,指定列2 from 表名 where 条件;
où comparer la requête de condition de jugement
Les symboles de jugement de comparaison couramment utilisés incluent:>,> =, <, <=, =,! =, Pas, dans, pas entre, entre et, etc.
①Rechercher les informations de ligne dont le sname est yunwei
select * from student where sname='yunwei';
②Rechercher les noms des élèves dont le sno est inférieur à 5
select sno,sname from student where sno<5;
③Query row data dont sno est 5-10
select * from student where sno between 5 and 10;
④Query data avec sno de 5 ou 7
select * from student where sno in(3,5);
总结
>、<、=、!=:大于、小于、等于、不等于
not:非、不
in、not in :在、不在
où comme une requête floue
① Interrogez la ligne de nom de l'élève dont la colonne de nom contient zhang
select * from student where sname like "%zhang%";
② Interrogez les lignes commençant par un dans la colonne sname
select * from student where sname like "a%";
③ Interrogez la ligne se terminant par i dans la colonne sname
select * from student where sname like "%i";
④ Interrogez la colonne dont le deuxième caractère est h dans la colonne sname
select * from student where sname like "_h%";
⑤ Interrogez la colonne dont le deuxième caractère n'est pas h dans la colonne sname
select * from student where sname not like "_h%";
like通配符
%:匹配零个或者多个字符
_:匹配一个字符
où connecteur logique
Les symboles de connexion logique comprennent principalement: et, ou, union
①Rechercher des informations sur les villes de plus de 100w en Chine
select * from city where countrycode='CHN' and population>1000000;
②Recherchez les informations sur la ville de Guangdong ou Guangxi
select * from city where district='guangdong' or district='guangxi';
select * from city where district='guangxi';
总结
and:与,两个条件同时满足的数据会被选中
or:或,满足一个或一个以上的数据会被选中
union:类似或,上下两个语句满足一个即选中
0 3 grouper par
Grouper par doit être utilisé en conjonction avec where dans la plupart des cas. Grouper par convient principalement au regroupement. Grouper par doit être combiné avec des fonctions d'agrégation. Les fonctions d'agrégation couramment utilisées sont: max (), min (), avg (), count (), somme (), group_concat (), DISTINCT ()
Les étapes principales d'utilisation du groupe en:
①Trouvez la condition de regroupement (quelle colonne est utilisée comme colonne de regroupement)
②Utilisez la fonction d'agrégation appropriée (comment calculer)
grouper par somme
①Calculer la population de chaque pays
select CountryCode,sum(Population) from city group by countrycode;
②Calculez la population totale de chaque province en Chine
# 由于省的人口总数=sum(城市人口) 有重复列的为省,所以分组列应该为省
select District,sum(population) from city where countrycode='CHN' group by district;
grouper par nombre
① Comptez le nombre de villes dans chaque pays
select CountryCode,count(district) from city group by Countrycode;
②Compte le nombre de villes dans chaque province en Chine
select District,count(name) from city where countrycode='CHN' group by district;
0 4 ayant
having与where类似,having属于后过滤,一般需要在group by + 聚合函数后,再做过滤时使用。
avoir avoir
①Statistiques de la population totale de chaque province en Chine, ne montrant que les provinces avec une population totale supérieure à 500w
select District,sum(population) from city where countrycode='CHN' group by district having sum(population)>5000000;
0 5 ordre par
order by排序,order by 排序的列 DESC 倒序 ,没有DESC为正序。
commandé par
①Statistiques de la population totale de chaque province en Chine, montrant uniquement les informations indiquant que la population est supérieure à 500w, et triées du moins au plus
select District,sum(population) from city where countrycode='CHN' group by district having sum(population)>5000000 order by sum(population);
0 6 limite de pagination
limit分页显示结果集 一般配合order by使用,limit x -- 前x个,x,y表示开始为x,往再显示后面y个。
limite limite de pagination
①Statistiques de la population totale de chaque province de Chine, ne montrant que les informations indiquant que la population est supérieure à 500w, et triées du plus au moins, ne montrant que les cinq premiers
select District,sum(population) from city where countrycode='CHN' group by district having sum(population)>5000000 order by sum(population) DESC limit 5;
0 7 Alias et déduplication
别名:给列取一个别名,有时候列名太长,可以取个简单易懂的别名做后续的处理和展示。
去重:去掉重复的值,重复的只显示一个
sélectionner un alias
给列取别名,可以在列后面直接添加一个别名,或者使用as 添加一个别名
select countrycode '国家代码',name as '城市名' from city where district='guangdong';
sélectionnez la déduplication
distinct是select中去重语句
①Imprimez tous les codes de pays sans les répéter
select distinct(countrycode) from city;
0 8 Description du cas
Statistiques Chine, la population totale de chaque province, le nombre de villes, la liste des noms de villes
SELECT District,SUM(Population),COUNT(id),NAME FROM world.`city` WHERE CountryCode='CHN' GROUP BY District;
Si vous faites de même, félicitations, vous recevrez un message d'erreur comme suit:
ERROR 1055 (42000): Expression #4 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'world.city.Name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
这是什么原因呢?首先我们看看我们上面的指令想做出来的结果是怎么样的
mais! MySQL ne prend pas en charge l'affichage des résultats un-à-plusieurs, alors comment y faire face? À ce stade, vous pouvez utiliser la fonction d'agrégation group_concat pour convertir plusieurs lignes de données en une seule ligne afin d'obtenir l'effet de ligne en ligne.
District,SUM(Population),COUNT(id),group_concat(NAME) FROM world.`city` WHERE CountryCode='CHN' GROUP BY District;