Connexion à plusieurs tables de requête rapide MySQL

Vérification rapide MySQL

Parce que j'oublie souvent certaines instructions, mots-clés, opérations, etc. MySQL dans mon travail et mes études quotidiens, j'ai récemment pris le temps d'écrire le contenu suivant sur MySQL. C'est comme un dictionnaire


Réinitialiser le mot de passe MySQL Opérateurs
de type de données Fonctions communes Intégrité des données Opérations de base de la base de données Opérations sur la table elle-même Opérations sur les données de la table Sous-requêtes Cet article Vue d'index prétraitement des instructions SQL Fonctions personnalisées et procédures stockées Programmation dans MySQL













écrire devant

Pour plus de détails, veuillez visiter la clause de jointure

Tableaux utilisés

mysql> desc user;
+-------+---------------+------+-----+---------+----------------+
| Field | Type          | Null | Key | Default | Extra          |
+-------+---------------+------+-----+---------+----------------+
| id    | int           | NO   | PRI | NULL    | auto_increment |
| name  | char(10)      | YES  |     | NULL    |                |
| sex   | enum('f','m') | YES  |     | NULL    |                |
+-------+---------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> desc commodity;
+---------+-----------+------+-----+--------------+----------------+
| Field   | Type      | Null | Key | Default      | Extra          |
+---------+-----------+------+-----+--------------+----------------+
| id      | int       | NO   | PRI | NULL         | auto_increment |
| price   | int       | NO   |     | NULL         |                |
| name    | char(128) | YES  |     | 匿名商品     |                |
| user_id | int       | YES  |     | NULL         |                |
+---------+-----------+------+-----+--------------+----------------+
4 rows in set (0.00 sec)

données dans le tableau

mysql> select * from user;
+----+--------+------+
| id | name   | sex  |
+----+--------+------+
|  1 | 铁子   | m    |
|  2 | 嘎子   | m    |
|  3 | 潘子   | m    |
|  4 | 翠花   | f    |
|  5 | 阿秀   | f    |
+----+--------+------+
5 rows in set (0.00 sec)

mysql> select * from commodity;
+----+-------+--------+---------+
| id | price | name   | user_id |
+----+-------+--------+---------+
|  1 |   100 | 手机   |       1 |
|  2 |   299 | 电脑   |       1 |
|  3 | 18990 | 假酒   |       3 |
|  4 | 18990 | 中华   |       3 |
|  5 |    18 | 中华   |       2 |
+----+-------+--------+---------+
5 rows in set (0.00 sec)

jointure interne

jointure interne
Le résultat de la requête de jointure interne contient uniquement les lignes qui remplissent les conditions.

select user.name as 姓名,user.sex as 性别,commodity.name as 商品名称 
from user 
inner join commodity
on user.id = commodity.user_id;
+--------+--------+--------------+
| 姓名   | 性别   | 商品名称     |
+--------+--------+--------------+
| 铁子   | m      | 手机         |
| 铁子   | m      | 电脑         |
| 潘子   | m      | 假酒         |
| 潘子   | m      | 中华         |
| 嘎子   | m      | 中华         |
+--------+--------+--------------+
5 rows in set (0.00 sec)

# 只显示符合"user.id = commodity.user_id"条件的行
# 还可以通过其他字句进一步筛选,如:

select user.name as 姓名,user.sex as 性别,commodity.name as 商品名称 
from user 
inner join commodity
on user.id = commodity.user_id
where commodity.price > 100;
+--------+--------+--------------+
| 姓名   | 性别   | 商品名称     |
+--------+--------+--------------+
| 铁子   | m      | 电脑         |
| 潘子   | m      | 假酒         |
| 潘子   | m      | 中华         |
+--------+--------+--------------+
3 rows in set (0.00 sec)

jointure externe

jointure externe gauche

Les résultats de la requête de jointure [externe] gauche
incluent les lignes qui remplissent les conditions et toutes les lignes de la table de gauche.

select user.name as 姓名,user.sex as 性别,commodity.name as 商品名称 
from user 
left join commodity
on user.id = commodity.user_id;
+--------+--------+--------------+
| 姓名   | 性别   | 商品名称     |
+--------+--------+--------------+
| 铁子   | m      | 电脑         |
| 铁子   | m      | 手机         |
| 嘎子   | m      | 中华         |
| 潘子   | m      | 中华         |
| 潘子   | m      | 假酒         |
| 翠花   | f      | NULL         |
| 阿秀   | f      | NULL         |
+--------+--------+--------------+
7 rows in set (0.00 sec)
# “翠花”和“阿秀”不满足条件,也会显示出来

Jointure [externe] droite

Le résultat de la requête de jointure [externe] droite
contient les lignes qui remplissent les conditions et toutes les lignes de la table de gauche.

select user.name as 姓名,user.sex as 性别,commodity.name as 商品名称 
from user 
right join commodity
on user.id = commodity.user_id;
+--------+--------+--------------+
| 姓名   | 性别   | 商品名称     |
+--------+--------+--------------+
| 铁子   | m      | 手机         |
| 铁子   | m      | 电脑         |
| 潘子   | m      | 假酒         |
| 潘子   | m      | 中华         |
| 嘎子   | m      | 中华         |
+--------+--------+--------------+
5 rows in set (0.00 sec)
# 因为我的右表的全部行都满足条件,所以左表列中没有显示NULL

connexion croisée

Le résultat de la jointure croisée
contient la combinaison (produit cartésien) de toutes les lignes des deux tables.

select user.name as 姓名,user.id as uid,commodity.id as cid 
from user 
cross join commodity;
+--------+-----+-----+
| 姓名   | uid | cid |
+--------+-----+-----+
| 铁子   |   1 |   5 |
| 铁子   |   1 |   4 |
| 铁子   |   1 |   3 |
| 铁子   |   1 |   2 |
| 铁子   |   1 |   1 |
| 嘎子   |   2 |   5 |
| 嘎子   |   2 |   4 |
| 嘎子   |   2 |   3 |
| 嘎子   |   2 |   2 |
| 嘎子   |   2 |   1 |
| 潘子   |   3 |   5 |
| 潘子   |   3 |   4 |
| 潘子   |   3 |   3 |
| 潘子   |   3 |   2 |
| 潘子   |   3 |   1 |
| 翠花   |   4 |   5 |
| 翠花   |   4 |   4 |
| 翠花   |   4 |   3 |
| 翠花   |   4 |   2 |
| 翠花   |   4 |   1 |
| 阿秀   |   5 |   5 |
| 阿秀   |   5 |   4 |
| 阿秀   |   5 |   3 |
| 阿秀   |   5 |   2 |
| 阿秀   |   5 |   1 |
+--------+-----+-----+
25 rows in set (0.00 sec)

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45345384/article/details/117089694
conseillé
Classement