MySQL快查

阅读: 评论:0

MySQL快查

MySQL快查

MySQL快查

因为在日常工作学习中经常忘记mysql的一些语句、关键字、操作等内容,所以最近抽取时间写了以下关于mysql相关内容。相当于一本字典吧


重置mysql密码
数据类型
运算符
常用函数
数据完整性
数据库的基本操作
对表本身的操作
对表中数据的操作
本文
多表连接
索引
视图
预处理SQL语句
自定义函数与存储过程
在MySQL中编程


子查询

  • MySQL快查
  • 写在前面
  • 举例
    • 例子使用的表
    • 使用的表中存在的数据
    • 当成表达式使用
    • 配合where字句使用
    • 生成子表

写在前面

子查询就是一个嵌套在select、insert、update、delete语句(或者其它子查询)中的查询。

  • 子查询常见运算:
    • [not] in
    • any
    • all
    • [not] exists
    • 逻辑运算符
  • 根据查询结果可分为:
    • 表子查询: 返回一个表
    • 行自查询:返回带有一个或多个值的一行
    • 列子查询:返回的每一行只有一列
    • 标量自查询:之返回一个值

注:

  • 子查询最多可以嵌套32层
  • 只能在子查询外层使用order by
  • 不能检索数据类型为text、blob、longtext等列

举例

例子使用的表

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)

使用的表中存在的数据

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)

当成表达式使用

# 查看id为3的user的购买数量
select name, (select count(1) from commodity where user_id = 3) 购买数量from userwhere id = 3;
+--------+--------------+
| name   | 购买数量     |
+--------+--------------+
| 潘子   |            2 |
+--------+--------------+
1 row in set (0.00 sec)

配合where字句使用

# 查询购买单品价格大于100的用户的姓名和性别
select name, sexfrom userwhere id in (select user_id from commodity where price > 100);
+--------+------+
| name   | sex  |
+--------+------+
| 铁子   | m    |
| 潘子   | m    |
+--------+------+
2 rows in set (0.00 sec)

生成子表

# 查询购买总价大于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 al > 100);
+--------+--------+
| 姓名   | 性别   |
+--------+--------+
| 铁子   | m      |
| 潘子   | m      |
+--------+--------+
2 rows in set (0.00 sec)

本文发布于:2024-02-02 07:26:47,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170683000842268.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:MySQL
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23