Consulta rápida de MySQL: conexión de varias tablas

Comprobación rápida de MySQL

Debido a que a menudo olvido algunas declaraciones, palabras clave, operaciones, etc. de MySQL en mi trabajo y estudio diario, recientemente me tomé un tiempo para escribir el siguiente contenido sobre MySQL. es como un diccionario


Restablecer contraseña de mysql Operadores
de tipo de datos Funciones comunes Integridad de datos Operaciones básicas de la base de datos Operaciones sobre la propia tabla Operaciones sobre los datos de la tabla Subconsultas Este artículo Vista de índice preprocesamiento de sentencias SQL Funciones personalizadas y procedimientos almacenados Programación en MySQL













escribir delante

Para más detalles, visite la cláusula de unión

Mesas utilizadas

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)

datos en la tabla

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)

unir internamente

unión interna
El resultado de la consulta de unión interna solo contiene filas que cumplen las condiciones.

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)

unión externa

izquierda combinación externa

Los resultados de la consulta de unión izquierda [externa]
incluyen filas que cumplen las condiciones y todas las filas de la tabla izquierda.

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)
# “翠花”和“阿秀”不满足条件,也会显示出来

Unión derecha [externa]

El
resultado de la consulta de combinación derecha [externa] contiene filas que cumplen las condiciones y todas las filas de la tabla izquierda.

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

conexión cruzada

El resultado de la unión cruzada
contiene la combinación (producto cartesiano) de todas las filas de las dos tablas.

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)

Supongo que te gusta

Origin blog.csdn.net/weixin_45345384/article/details/117089694
Recomendado
Clasificación