En savoir plus sur les requêtes logiques dans MySQL
青灯夜游
Libérer: 2021-09-17 19:35:52
avant
2188 Les gens l'ont consulté
La requête est l'opération la plus fréquente dans MySQL, et c'est également la base de la construction du traitement des requêtes DELETE et UPDATE qui peut être divisé en requêtes logiques et requêtes physiques. Aujourd'hui, nous allons vous présenter la requête logique en détail. J'espère qu'elle vous sera utile !
Dans MySQL, la requête est la base de la construction de DELETE et UPDATE, car lorsque vous souhaitez les supprimer ou les mettre à jour, vous devez d'abord trouver ces enregistrements, donc SELECT est particulièrement important pour le traitement des requêtes, il peut être divisé. into Ce sont des requêtes logiques et des requêtes physiques. La requête logique indique quel type de résultats doit être produit lors de l'exécution de l'instruction SELECT, et la requête physique indique comment MySQL obtient ce résultat. [Recommandations associées : Tutoriel vidéo mysql]
Ce chapitre parlera des requêtes logiques.
Dans une instruction SQL, l'instruction FROM est traitée en premier et l'instruction LIMIT est exécutée en dernier Si toutes les instructions sont utilisées, telles que GROUP BY et ORDER BY, elle peut être grossièrement divisée en 10 étapes, comme indiqué ci-dessous, chacune. L’opération générera une table virtuelle.
(7) select (8)distinct<select_list>
(1) from <left table>
(3) <join_type> join <right_table>
(2) on<条件>
(4) where <条件>
(5) group by<字段list>
(6) having<条件>
(9) order by<字段>
(10) limit
Copier après la connexion
Analysons-le à travers un exemple pratique, créons d'abord deux tables, utilisateurs et commandes.
insert user values(1,"张三","内蒙");
insert user values(2,"李四","内蒙");
insert user values(3,"王五","北京");
insert user values(4,"迪迦","西藏");
insert user values(5,"金甲战士","内蒙");
insert orders values(10001,1);
insert orders values(10002,1);
insert orders values(10003,4);
insert orders values(10004,1);
insert orders values(10005,1);
insert orders values(10006,4);
insert orders values(10007,2);
Copier après la connexion
D'accord, interrogeons maintenant les utilisateurs de Mongolie intérieure dont la quantité commandée est inférieure à 3. Le SQL est le suivant.
mysql> select userName,count(orders.orderId) as total from user
left join orders on user.userId = orders.userId
where city="内蒙"
group by user.userId
having count(orders.orderId)<3
order by total desc;
+--------------+-------+
| userName | total |
+--------------+-------+
| 李四 | 1 |
| 金甲战士 | 0 |
+--------------+-------+
2 rows in set (0.00 sec)
Copier après la connexion
Il y a des données et du SQL. Analysons le processus spécifique.
1. Produit cartésien
La première chose à faire est d'effectuer un produit cartésien sur les deux tables avant et après l'instruction FROM Alors, qu'est-ce qu'un produit cartésien ? Par exemple, en supposant que l'ensemble A={a, b} et l'ensemble B={0, 1, 2}, le produit cartésien des deux ensembles est {(a, 0), (a, 1), ( a , 2), (b, 0), (b, 1), (b, 2)}.
Ainsi, correspondant aux données ci-dessus, une table virtuelle VT1 sera finalement générée, qui contiendra 35 lignes de données. Les données spécifiques sont les suivantes.
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn