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 operador
de tipo de datos funciones comunes integridad de datos operaciones básicas de la base de datos operaciones en la propia tabla operaciones en los datos de la tabla este artículo conexión de múltiples tablas vista de índice preprocesamiento de sentencias SQL funciones personalizadas y procedimientos almacenados programación en MySQL
subconsulta
escribir delante
Una subconsulta es una consulta anidada en una instrucción de selección, inserción, actualización y eliminación (u otra subconsulta).
- Operaciones de subconsulta comunes:
- [no en
- cualquier
- todo
- [no existe
- Operadores logicos
- Según los resultados de la consulta, se puede dividir en:
- Subconsulta de tabla: devuelve una tabla
- Autoconsulta de fila: devuelve una fila con uno o más valores
- Subconsulta de columna: devuelve solo una columna para cada fila
- Autoconsulta escalar: devuelve un valor
Nota:
- Las subconsultas se pueden anidar hasta 32 niveles.
- ordenar por solo se puede utilizar fuera de la subconsulta
- No se pueden recuperar columnas con tipos de datos como texto, blob, texto largo, etc.
Ejemplo
Tabla utilizada en el ejemplo.
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.01 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.01 sec)
Usar datos que existen 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)
Usar como expresión
# 查看id为3的user的购买数量
select name,
(select count(1) from commodity where user_id = 3) 购买数量
from user
where id = 3;
+--------+--------------+
| name | 购买数量 |
+--------+--------------+
| 潘子 | 2 |
+--------+--------------+
1 row in set (0.00 sec)
Usado con cláusulas donde
# 查询购买单品价格大于100的用户的姓名和性别
select name, sex
from user
where id in (select user_id from commodity where price > 100);
+--------+------+
| name | sex |
+--------+------+
| 铁子 | m |
| 潘子 | m |
+--------+------+
2 rows in set (0.00 sec)
Generar subtabla
# 查询购买总价大于1000的人
select name as 姓名,sex as 性别
from user
where id in
(select user_id
from (select user_id,sum(price) total from commodity group by user_id) as newTable
where newTable.total > 100);
+--------+--------+
| 姓名 | 性别 |
+--------+--------+
| 铁子 | m |
| 潘子 | m |
+--------+--------+
2 rows in set (0.00 sec)