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 :

CREATE TABLE money (
id INT NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOTE ULL ,
CLÉ PRIMAIRE (balance(10))
) ENGINE = InnoDB CHARACTER SET utf8;province
ageLa structure du tableau et les données sont affichées comme suit :
sex
Remarque : idle solde fait référence au solde
province fait référence à la province

Requête de base

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

mysql> sélectionnez un numéro de service d'âge distinct à partir de l'argent ;

+--- -----+

| 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='湖北'

mysql> 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)

Tri des ensembles de résultats

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)

Limiter l'ensemble de résultats et sort

类别详细解示
基本语法select 字段 from 表 order by 字段 关键词 limit 数量
示例select id,username, balance from money order by balance desc limit 5;
示例说明按照钱来排序,显示前五个最有钱的用户
mysql> sélectionnez l'identifiant, le nom d'utilisateur, le solde du mandat par limite de description du solde 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

Supposons que je récupère 3 enregistrements en commençant par l'enregistrement 0. Je veux récupérer 3 enregistrements supplémentaires à partir du 3ème. Que dois-je faire si je souhaite récupérer 4 enregistrements à partir du 6ème ?

À ce stade, vous devez utiliser la sélection d'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

  1. Et si on veut connaître le nombre total d'utilisateurs ?
  2. Comment vérifier qui est la personne la plus riche dans le tableau de données ?
  3. Et si on veut connaître le montant moyen d'argent pour un utilisateur ?
  4. 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

mysql> +--------------------+
| moy(solde) |
+--------------------+
|498.24833393096924 |
+--------------------+
1 ligne dans l'ensemble (0,00 sec)

Montant total de la requête

mysql> +-------------------+

| somme(solde) |
+-------------------+
|5978.980007171631 |
+-------------------+
1 ligne dans l'ensemble (0,00 sec)

Interroger le montant maximum

mysql> +-------------+
| max(solde) |

+-------------+
| 3456 |
+-------------+
1 ligne dans l'ensemble (0,00 sec)


Requête du montant minimum

mysql> +--------------------+

| min(solde) |
+--------------------+

|20.149999618530273 |
+--------------------+
1 ligne dans l'ensemble (0,00 sec)


Regrouper par

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.

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

mysql> province du groupe monétaire par province ;

+------------------+---------+

| 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 ;
+------------------+---------+
| 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 Have

have est similaire à Where mais également différente.

avoir est le groupe de filtrage et où se trouve l'enregistrement de filtrage.

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)

Utilisation de SQL dans son ensemble

Dans 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 :

SELECT

[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]

Remarque : [] peut représenter facultatif dans l'instruction ci-dessus.

La syntaxe finale est résumée comme suit :

关键词说明
select选择的列
from
where查询的条件
group by分组属性  having 分组过滤的条件
order by排序属性
limit起始记录位置,取记录的条数
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 :

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)

Formation continue
||
<?php echo "Hello Mysql"; ?>
soumettreRéinitialiser le code
  • Recommandations de cours
  • Téléchargement du didacticiel