Mysql ajouter, supprimer, modifier des enregistrements de requête
Avant d'expliquer la requête, j'ai préparé un tableau de données pour tout le monde. Ce tableau stocke le solde de la banque et les informations de base sur l'utilisateur.
Nous avons défini une structure de table nommée money.
L'instruction pour créer une table est la suivante :
Requête de baseCREATE TABLE
money
(
id
INT NOT NULL AUTO_INCREMENT,
username
VARCHAR(50) NOTE ULL ,
CLÉ PRIMAIRE (balance
(10))
) ENGINE = InnoDB CHARACTER SET utf8;province
age
La structure du tableau et les données sont affichées comme suit :sex
Remarque :id
le solde fait référence au solde
province fait référence à la province
Remarque : "*" est une expression régulière, ce qui signifie que tout correspond. L'instruction de requête ci-dessus est équivalente à ce qui suit :
mysql> select * from money;
+- ---+ -----------+----------+-----------+-----+-----+
| identifiant | nom d'utilisateur | solde | province | sexe |
+----+---------+--- --- -----+-----+-----+
| 1 | 0 |
| 3 | Huang Xiaoming | 40 |
| 4 | | 0 |
| 6 | Jackie Chan | 313 | 63 |
| 7 | Pékin 30 |
| | 29 | 1 |
| 9 | Liu Yan 1 |
| Pékin | 44 |
| 12 | Guo Degang | 212 |
+----+---------- ----+------ -----+-----+-----+
12 lignes dans l'ensemble (0,00 sec)
Spécifier la requête de champ
mysql> sélectionnez l'identifiant, le nom d'utilisateur, le solde de l'argent ;
+----+----------+---------+
| | nom d'utilisateur | solde |
+----+----------+---------+
| 120.02 |
| 2 | Fan Bingbing |
| 3 | Huang Li Bingbing |
| 313 |
| 7 | Yang Mi |
| 8 | Liu Shishi |
| | 11 | 34.32 |
| 12 | Guo Degang |
+----+----------+---------+
12 lignes dans l'ensemble (0,00 sec)
Interrogez un seul champ pour les enregistrements non en double distincts
+--- -----+
| numéro de compte |类别 | 详细解示 |
---|---|
基本语法 | select distinct 字段 from 表; |
示例 | select distinct age deptno from money; |
示例说明 | 查询money表中年龄唯一的所有结果 |
| 29 |
| 40 |
| 27 |
| 🎜>| 63 |
| 30 |
| 36 |
| 44 |
+--------+
8 lignes dans l'ensemble (0,00 sec)
Requête conditionnelle où
mysql> sélectionnez * à partir de l'argent où âge = 29 ;
+----+----------+---------+----- -----+-----+-----+
| identifiant | solde | province âge sexe |
+----+------- ----+---------+----------+-----+-----+
|1 | | 29 | 1 |
| 8 | Liu Shishi | 456 | Pékin 1 |
+----+---------- -- +----------+-----+-----+
2 lignes dans l'ensemble (0,00 sec)
Conditions pouvant être connectées après où
Opérateur de comparaisonLes enregistrements qui remplissent les conditions sont répertoriés dans l'ensemble de résultats. Dans l'exemple ci-dessus, le champ après où est le « = » d'un champ.
De plus, vous pouvez également utiliser des opérateurs de comparaison tels que >, <, >=, <=, !=;
符号 | 说明 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
= | 等于 |
opérateurs logiques
Plusieurs conditions peuvent également être utilisées pour effectuer des requêtes conjointes multi-conditions à l'aide d'opérateurs logiques tels que ou et et.
符号 | 说明 |
---|---|
or | 或者 |
and | 并且 |
Jetons un coup d'œil à un exemple de conditions multiples :
类型 | 详细内容 |
---|---|
示例 | select * from money where id <10 and |
说明 | 查询所有字段 要求id小于10 并且province='湖北' |
Tri des ensembles de résultatsmysql> sélectionnez * from money où id <10 et province='Hubei';
+----+-----------+---------+--------------+-----+----- +
| identifiant | nom d'utilisateur | solde | province | âge sexe |
+----+-----------+---------+--------------+-----+----- +
| 1 | Wang Baoqiang | 120.02 | +----+-----------+---------+--------------+-----+----- +
1 ligne dans l'ensemble (0,00 sec)
Mots clés utilisés pour le tri :
关键词 | 说明 |
---|---|
asc | 升序排列,从小到大(默认) |
desc | 降序排列,从大到小 |
Utilisez order by pour trier l'ensemble de résultats après la sélection, où desc et asc sont des mots-clés dans l'ordre de tri. desc signifie trier par champs par ordre décroissant, et asc signifie trier par ordre croissant. Si aucun mot-clé n'est écrit, la valeur par défaut est de trier par ordre croissant.
mysql> sélectionnez l'identifiant, le nom d'utilisateur, le solde du mandat par description du solde ;
+----+-----------+-------- -+
| identifiant | nom d'utilisateur |
+----+----------+
| Benshan |
| 4 | Jing Boran |
| 8 | Liu Shishi |
| 12 | Guo Degang |
| 3 | Huang Xiaoming |
| 11 | |
| 9 | Liu Yan | 23.4 |
| 5 | Li Bingbing |
+----+----------+------ ---+
12 lignes dans l'ensemble (0,00 sec)
Tri multi-champs
l'ordre par peut être suivi de plusieurs tris de champs différents et de l'ordre des différents ensembles de résultats de Les champs triés sont également différents. Si les valeurs des champs triés sont les mêmes, alors les champs avec la même valeur sont triés selon le deuxième champ de tri.
* Remarque : Si le premier champ a déjà organisé les résultats. Le deuxième champ de tri de champ ne prend pas effet. Dans ce cas, le deuxième champ n'est pas valide. *
mysql> sélectionnez l'identifiant, le nom d'utilisateur, le solde du mandat par description du solde, âge asc;
+----+-----------+---------+
| identifiant | nom d'utilisateur | solde |
+----+-----------+---------+
10 |Zhao Benshan |3456 |
| 4 | Jing Boran | 810 |
| 8 | Liu Shishi | 456 |
|6 |Jackie Chan |313 |
| 2 | Fan Bingbing | 260.23 |
|12 |Guo Degang |212 |
|3 |Huang Xiaoming |150,86 |
|7 |Yang Mi |123 |
|1 |Wang Baoqiang |120.02 |
| 11 | Wang Feng | 34.32 |
| 9 | Liu Yan | 23.4 |
| 5 | Li Bingbing | 20h15 |
+----+-----------+---------+
12 lignes dans l'ensemble (0,00 s)
Limite de l'ensemble de résultats
Pour les requêtes ou les ensembles de résultats triés, si vous souhaitez afficher uniquement une partie au lieu de tout, utilisez le mot-clé limit set de résultats Restrictions de quantité.
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 limit 数量; |
示例 | select id,username, balance from money limit 5; |
示例说明 | 显示前五个用户 |
mysql> sélectionnez * dans la limite d'argent 5 ;
+----+----------+---------+------- ----+-----+-----+
| identifiant | nom d'utilisateur | solde | province âge sexe |
+----+-------- ---+---------+-----------+-----+-----+
| 1 | | 29 | 1 |
| 2 | Shandong | 40 |
| 3 | Liaoning | 1 |
| 5 | Li Bingbing | 20.15 |
+----+--------- ---+- ----------+-----+-----+
5 lignes dans l'ensemble (0,00 sec)
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 order by 字段 关键词 limit 数量 |
示例 | select id,username, balance from money order by balance desc limit 5; |
示例说明 | 按照钱来排序,显示前五个最有钱的用户 |
+----+-----------+-- ------ -+
| identifiant | nom d'utilisateur | solde |
+----+----------+---------+
| 10 | Zhao Benshan |
| 4 | Jing Boran |
| Bingbing |
+--- -+-----------+--------+
5 lignes dans l'ensemble (0,00 sec)
Sélection de l'intervalle de jeu de résultats
Remarque : le premier enregistrement est 0.
mysql> sélectionnez l'identifiant, le nom d'utilisateur et le solde à partir de la limite d'argent 0,3 ;
+----+-----------+---------+
| identifiant | nom d'utilisateur | solde |
+----+-----------+---------+
|1 |Wang Baoqiang |120.02 |
| 2 | Fan Bingbing | 260.23 |
|3 |Huang Xiaoming |150,86 |
+----+-----------+---------+
3 rangs par série (0,00 sec)
Que diriez-vous de prendre trois rangs supplémentaires à partir de la troisième rangée ?
mysql> sélectionnez l'identifiant, le nom d'utilisateur et le solde à partir de la limite d'argent 3,3 ;
+----+-----------+---------+
| identifiant | nom d'utilisateur | solde |
+----+-----------+---------+
| 4 | Jing Boran | 810 |
| 5 | Li Bingbing | 20h15 |
|6 |Jackie Chan |313 |
+----+-----------+---------+
3 lignes par ensemble (0,00 sec)
Grâce à l'idée ci-dessus, l'affichage termine la pagination.
Chaque page affiche 10 enregistrements, puis :
La page 1 est la limite 0,10
La page 2 est la limite 10,10
La page 3 est la limite 20,10
Et ainsi de suite... ...
Des fonctions statistiques sont utilisées
- Et si on veut connaître le nombre total d'utilisateurs ?
- Comment vérifier qui est la personne la plus riche dans le tableau de données ?
- Et si on veut connaître le montant moyen d'argent pour un utilisateur ?
- Et si nous voulons connaître le montant total pour tous les utilisateurs ?
Nous avons quatre fonctions statistiques les plus couramment utilisées :
函数 | 说明 |
---|---|
sum | 求和 |
count | 统计总数 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
Remarque : Bien sûr, vous savez que d'autres fonctions MySQL peuvent également être utilisées. Cependant, dans la réalité, il est rarement utilisé dans de nombreux projets de grande et moyenne taille dans les grandes entreprises, et elles disposent toutes de serveurs de comptage dédiés. Étant donné que la quantité de calcul de MySQL elle-même est très importante, afin de réduire la pression, nous laissons généralement les tâches de calcul réelles au serveur d'entreprise ou à d'autres serveurs.
类别 | 详细解示 |
---|---|
基本语法 | select 函数(字段) from 表 |
示例 | select count(id) from money |
示例说明 | 查询money表的id总数 |
mysql> sélectionnez le compte (id) dans l'argent ;
+----------+
| compte(identifiant) |
+----------+
|12 |
+----------+
1 ligne dans l'ensemble (0,00 sec)
Vous pouvez également donner un alias au champ ! Utilisez le mot-clé as.
mysql> sélectionnez le compte (id) comme zongshu à partir de l'argent ;
+---------+
|zongshu |
+---------+
|12 |
+---------+
1 ligne dans l'ensemble (0,00 sec)
Montant moyen de la requête
Montant total de la requêtemysql> +--------------------+
| moy(solde) |
+--------------------+
|498.24833393096924 |
+--------------------+
1 ligne dans l'ensemble (0,00 sec)
mysql> +-------------------+mysql> +-------------+| somme(solde) |
Interroger le montant maximum
+-------------------+
|5978.980007171631 |
+-------------------+
1 ligne dans l'ensemble (0,00 sec)
| max(solde) |+-------------+
| 3456 |
+-------------+
1 ligne dans l'ensemble (0,00 sec)
Requête du montant minimum
mysql> +--------------------+
| min(solde) |+--------------------+|20.149999618530273 |
Nous regroupons les données par provinces dans le tableau des montants que vous trouverez après avoir regroupé les données. Les mêmes provinces seront supprimées. Autrement dit, une province est un groupe.
+--------------------+
1 ligne dans l'ensemble (0,00 sec)
Regrouper par
mysql> sélectionnez * dans le groupe monétaire par province ;
+----+----------+---------+------ -----+-----+-----+
| identifiant | solde | province âge sexe |
+----+------- ----+---------+-----------+-----+-----+
| 7 | Pékin | 30 |
| 12 | Tianjin | 43 |
| 2 | >| 9 | Liu Yan | 36 |
| 4 | 🎜>+----+-----------+----------+----------+-----+ - ----+
Regroupement statistique (catégorie) nombre total :
mysql> sélectionnez le numéro de service, comptez (1) du groupe emp par numéro de service ;
| numéro de service | count(1) |
+--------+----------+| 1 |
| 2 | 5 |
| 3 |
| 4 |
+--------+---- ----+
4 lignes dans l'ensemble (0,04 sec)
Comptez le nombre de provinces puis affichez-les en groupes
+------------------+---------+
| compte(province) |province |+------------------+---------+| 3 | Pékin |
| 1 1 | | 3 | | 1 1 | | 1 1 |
| 2 | |
+------------------+---------+
7 lignes par ensemble (0,00 sec)
Les statistiques sur une base de groupe
avec rollup sont rarement utilisées. Ce point de connaissance est réglé au niveau de compréhension.
Sa fonction principale est de compter les données groupées puis d'effectuer un décompte total.
类别 详细解示 基本语法 select * from 表 group by 字段 with rollup 示例 select count(province),province from money group by province with rollup; 示例说明 对分组的数再次进行统计 Sur la base des statistiques ci-dessus, le nombre total est calculé. Dans le résultat de l'exemple suivant, il y a 12 NULL supplémentaires à la fin.
mysql> sélectionnez le nombre (province), la province du groupe monétaire par province avec cumul ;
have est similaire à Where mais également différente.
+------------------+---------+
| compte(province) |province |
+------------------+---------+
| 3 | Pékin |
| 1 1 | | 3 | | 1 1 | | 1 1 |
| 2 | |
| 12 | NULL |
+------------------+---------+
8 lignes dans l'ensemble (0,00 sec)
Les résultats sont ensuite filtrés. La clause Haveavoir est le groupe de filtrage et où se trouve l'enregistrement de filtrage.
Utilisation de SQL dans son ensembleDans les instructions ci-dessus, nous n'avons utilisé certaines instructions qu'individuellement et ne les avons jamais utilisées dans leur ensemble. Nous allons maintenant intégrer les déclarations et les utiliser ensemble une fois. La structure syntaxique utilisée avec l'instruction SQL globale est la suivante :mysql> sélectionnez le nombre (province) comme résultat, province du groupe monétaire par province ayant un résultat >2;
+--------+----------+
| résultat | province |
+--------+----------+
| 3 | Pékin |
| 3 | +--------+----------+
2 lignes dans l'ensemble (0,00 sec)SELECTRemarque : [] peut représenter facultatif dans l'instruction ci-dessus. La syntaxe finale est résumée comme suit :[Champ 1 [comme alias 1], [Fonction (Champ 2),]...Champ n]
DE nom de la table
[OÙ où condition]
[GROUPE PAR champ]
[AVANT Where_continition]
[condition de commande]
[condition limite]Nous effectuons une combinaison globale et interrogeons les champs de la table monétaire : id, username, balance, province Il faut que id>1. et le solde soit supérieur à 50. Utilisez les régions pour le regroupement. Nous utilisons l'ID utilisateur par ordre décroissant, et seuls 3 éléments peuvent être affichés. Enfin, écrivez l'instruction SQL comme suit, et le résultat de la requête est le suivant :
关键词 说明 select 选择的列 from 表 where 查询的条件 group by 分组属性 having 分组过滤的条件 order by 排序属性 limit 起始记录位置,取记录的条数 mysql> sélectionnez l'identifiant, le nom d'utilisateur, le solde, la province où l'identifiant > > 50 groupe par province ordre par id desc limite 3 ;+----+-----------+---------+--------------+
| identifiant | nom d'utilisateur | solde | province |
+----+-----------+---------+--------------+
|12 |Guo Degang |212 |
|7 |Yang Mi 123 |
| 4 | Jing Boran | 810 | +----+-----------+---------+--------------+
3 lignes dans l'ensemble (0,00 sec)