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
Unión de varias tablas
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)