MySql查询后续部分

数据查询基础部分

关于MySql查询的上一篇文章:MySql增删改查

1、IN子查询

IN子查询用于进行一个给定值是否在子集查询结果集中的判断

表达式 IN (子查询)

(子查询):只能返回一列数据对于比较复杂的查询可以使用嵌套子查询
示例:

SELECT *
FROM sell
WHERE 用户号 IN 
(SELECT 用户号 FROM members WHERE 姓名='张三');
  • 比较子查询
    这是IN子查询的扩展
    语法格式:
    表达式{ < | <= | = | > | >= | != | <>}{ ALL | SOME | ANY }(子查询)
    ALL | SOME | ANY :对于比较运算的限制
    如果只返回一行数据可以直接通过比较运算符,如果返回多行数据则需要用{ ALL | SOME | ANY }来限定
    ALL:与结果集中的每个值进行比较
    SOME 或 ANY:是同义词,只要结果集中有一个值满足条件就返回true
    示例:
SELECT *
FROM members
WHERE 用户号=ANY
(SELECT 用户号
FROM sell
WHERE 图书编号='TP115/12683');
  • EXISTS子查询
    EXISTS 用于检测子查询结果是否为空表
    格式:
    EXISTS (子查询)
2、聚合函数

1、COUNT函数
求组中项数,返回int类型整数
示例:

SELECT COUNT(*) AS '会员数'
FROM members

2、MAX和MIN
MAX和MIN分别用于求表达式中所有值项的最大值和最小值
示例:

SELECT MAX(订购册数),MIN(订购册数)
FROM sell
WHERE 图书编号='TP7/301-135'

3 、SUM函数和AVG函数
SUM和AVG分别用于求表达式中所有值项的总和与平均值
示例:

SELECT SUM(订购册数) AS '总订购数'
FROM sell
WHERE 图书编号='TP7/301-135'
3、GROUP BY子句

GROUP BY子句主要用于根据字段来对行分组
示例:根据图书类别统计库存数

SELECT 图书类别,sum(数量) AS '库存数'
FROM book
GROUP BY 图书类别;

使用ROLLUP操作符的GROUP BY子句,可以指定在结果集内不仅包含由GROUP BY提供的正常行,还包含汇总行

SELECT 图书类别,sum(数量) AS '库存数'
FROM book
GROUP BY 图书类别 
WITE ROLLUP;
4、HAVING子句

HAVING子句与WHERE子句类似,不同的是WHERE子句是用来在FROM子句之后选择行,而HAVING子句用来在GROUP BY子句后选择行
示例:

SELECT 用户号,AVG(订购册数) AS '平均订购册数'
FROM sell
GROUP BY 用户号
HAVING AVG(订购册数)>5; 
5、ORDER BY子句

使用ORDER BY子句之后可以让结果集中的行按一定顺序排列
示例:

SELECT *
FROM book
ORDER BY 订购册数 DESC;

后面的关键字
DESC:表示降序排列
ASC:表示升序排列 默认是升序排列

6、LIMIT子句

LIMIT子句是SELECT语句的最后一个子句,主要用于限制被SELECT语句返回的行数。
格式:LIMIT{[偏移量,] 行数|行数OFFSET 偏移量}
说明:
偏移量和行数都必须是非负的整数常数。
偏移量: 指定返回的第一行的偏移量。
行数: 是返回的行数。
“LIMIT 5”表示返回结果集最前面的5行,“LIMIT 3,5 则表示从第4行开始返回5行”
示例:

SELECT *
FROM book
ORDER BY 学号 DESC
LIMIT 3,5;
7、UNION语句

UNION语句可以把来自许多SELECT语句的结果组合到一个结果集中。
格式

SELECT 语句
UNION [ALL | DISTINCT]
SELECT 语句
[UNION [ALL | DISTINCT]
SELECT 语句]

ALL | DISTINCT:默认为DISTINCT系统默认取出重复行,要得到所有行可以使用ALL
示例:

SELECT * FROM sell
UNION
SELECT * FROM sell2;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值