1.分组函数

1.分组函数又称统计函数、组函数、聚合函数。
2.功能:用作统计使用
3.分类:sum求和、avg平均值、max最大值。min最小值、count计数(非空)。

/*
分组函数:统计函数、组函数、聚合函数
sum 求和、avg 平均值、max 最大值、min 最小值、count 计数(非空)
列的值如果是null不会被统计,一般使用主键或者*,*所有列,遇到一个为空的列,重新找不为空的列进行统计
*/-- sum求和
SELECT SUM(stu_grade) FROM t_student
-- avg平均值
SELECT AVG(stu_grade) FROM t_student
-- max最大值
SELECT MAX(stu_grade) FROM t_student
-- min最小值
SELECT MIN(stu_grade) FROM t_student
-- count计数
SELECT COUNT(stu_sex) FROM t_student

2.分组查询

1.分组查询:会将相同内容分到同一组。
2.group by:根据某一列数据进行分组。
3.where后是在分组前对数据进行筛选过滤。
4.having后是对分组完成后的结果进行条件过滤。

-- 分组查询 分组 会将相同内容分到同一组      例如使用性别分组
-- select 结果 from 表 group by 分组列
SELECT * FROM t_student GROUP BY stu_sex    -- 会报错-- 统计男生、女生各有多少人
SELECT stu_sex,COUNT(*) FROM t_student GROUP BY stu_sex-- 添加查询操作
SELECT stu_sex,COUNT(*) c
FROM t_student
WHERE stu_grade>0  -- 在分组前对数据进行筛选过滤
GROUP BY stu_sex
ORDER BY c DESC  -- 对分组后的结果进行排序--  查询性别人数大于2的是哪个性别    对分组后的结果进行条件筛选
SELECT stu_sex,COUNT(*) c
FROM t_student
GROUP BY stu_sex
HAVING c>2   -- 对分组后的结果进行条件过滤

3.条件查询

1.使用where子句,将不满足条件的行过滤掉,where子句紧随from子句。
语法:select <结果> from <表名> where <条件>
比较:=、!=或<>、<、>、<=、>=
逻辑运算:and 和、or 或、not 非
2.模糊查询
like:是否匹配于一个模式,一般和通配符搭配使用,可以判断字符型数值或数值型。
通配符:%表示若干个字符,包含0个字符;_表示任意单个字符。
3.between and:两者之间,包含临界值。
4.in:判断某字段的值是否属于in列表中的某一项。
5.is null(为空的)或is not null(不为空的)。
6.union和union all
一般union用的比union all多,union all是直接连接的,取得所有的值,记录可能有重复,而union是取唯一值,记录没有重复。
效率:
UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
(1)、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。
(2)、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。
从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL。
7.排序 order by
查询结果排序,使用order by子句排序:order 排序列 asc/desc,asc表示的是升序,desc表示的是降序,不写默认为升序。
order by子句中可以支持单个字段、多个字段、表达式、函数、别名
8.数量限制 limit
limit子句:对查询结果限制数目,添加在sql语句末端
有三种方式:
(1)select 查询结果 from table limit 5;
限制只显示5行
(2)select 查询结果 from table limit 0,3;
0表示起始位置,3表示显示行数
(3)select 查询结果 from table limit 3 offset 0;
0表示起始位置,3表示显示行数。

-- select 结果 from 表名 where 数据条件过滤 group by    having    order by     limit-- =在where子句后面表示  等于
SELECT * FROM t_student
SELECT * FROM t_student WHERE stu_sex='男'-- 不等于 != 或者 <>
SELECT * FROM t_student WHERE stu_sex!='男'
SELECT * FROM t_student WHERE stu_sex<>'男'-- and 多个条件并列,必须全部成立
SELECT * FROM t_student WHERE stu_grade<=100 AND stu_grade>=60-- or 多个条件只要满足一个即可
SELECT * FROM t_student WHERE stu_grade>90 OR stu_sex='男'-- 列名 between 区间开始 and 区间结束    包含60和100
SELECT * FROM t_student WHERE stu_grade BETWEEN 60 AND 100-- 模糊查询 like
SELECT * FROM t_student WHERE stu_name='Jim'-- 查询姓李得人 like '关键字%_'  %匹配若干个(包括0个)字符,_匹配单个字符
SELECT * FROM t_student WHERE stu_name LIKE '李_'
SELECT * FROM t_student WHERE stu_name LIKE '李%'-- in   查询成绩为99和89的学生
SELECT * FROM t_student WHERE stu_grade=99 OR stu_grade=89
-- in(值1,值2,.....)
SELECT * FROM t_student WHERE stu_grade IN(99,89) -- not 不在,不是   查询成绩不为99,89的
SELECT * FROM t_student WHERE stu_grade NOT IN(99,89) -- is null为空   is not null 不为空
SELECT * FROM t_student WHERE stu_birthday IS NULL
SELECT * FROM t_student WHERE stu_address IS NOT NULL/*
union 将多个查询结果合并,要求查询出来的列数形同
sql1
union
sql2union 去除两个查询结果中重复数据,排序
union all 只是单一合并,不排序
*/
SELECT stu_num,stu_name,stu_grade FROM t_student WHERE stu_sex='男'
UNION
SELECT stu_num,stu_name,stu_grade FROM t_student WHERE stu_sex='女'SELECT stu_num,stu_name,stu_grade FROM t_student WHERE stu_sex='男'
UNION
SELECT stu_num,stu_name,stu_sex FROM t_student WHERE stu_sex='女'SELECT stu_num,stu_name,stu_grade FROM t_student WHERE stu_sex='男'
UNION
SELECT stu_num,stu_name,stu_grade FROM t_student WHERE stu_sex='男'-- order by  排序  默认使用升序排序  ASC 升序   DESC降序
-- 默认使用主键升序排序
SELECT * FROM t_student
SELECT * FROM t_student ORDER BY stu_grade DESC--   order by 指定排序列 排序规则
-- 在条件后面添加排序-- 行数限制  limit
--  SELECT * FROM table  LIMIT [offset,] rows | rows OFFSET offset;
--                       提取前三行数据
SELECT * FROM t_student LIMIT 3
-- 查询成绩前两名同学
SELECT * FROM t_student ORDER BY stu_grade DESC LIMIT 2--  limit  开始位置(从0开始),数量
SELECT * FROM t_student LIMIT 0,2--  limit 数量 offset 开始位置
SELECT * FROM t_student LIMIT 3 OFFSET 0

4.子查询

1.含义:出现在其他语句中的select语句
2.其他语句:insert、update、delete、select
3.在select语句中只有子查询
(1)按照子查询结果分为:
标量子查询(一行一列);
列子查询(一列多行);
行子查询(一行多列);
表子查询(多行多列)。
(2)按子查询出现的位置:
select后面:仅仅支持标量子查询;
from后面:支持表子查询;
where或者having后面:支持表子查询、列子查询、行子查询;
exists后面:支持表子查询。

-- 子查询:出现在其他语句中的select语句
-- 其他语句:insert、update、delete、selectALTER TABLE t_student MODIFY stu_num INT AUTO_INCREMENT
-- 在insert语句中使用子查询
INSERT INTO t_student(stu_name,stu_sex) SELECT stu_name,stu_sex FROM t_student WHERE stu_num=104-- 在update语句中使用子查询,注意查询结果不能在这张表中
UPDATE t_student SET stu_name='李五' WHERE stu_num=(SELECT stu_num FROM student WHERE stu_name='李四') -- 在delete语句中使用子查询,注意查询结果不能在这张表中
DELETE FROM t_student WHERE stu_num=(SELECT stu_num FROM student WHERE stu_name='李四')/*
在select语句中使用子查询
按功能、结果集的行列数不同:
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
行子查询(结果集有一行多列)
表子查询(结果集一般为多行多列)
*/-- 在select语句后加子查询只能是标量子查询
SELECT (SELECT NOW()) FROM t_student-- 在from后面,支持表子查询  每一个派生表必须有自己的别名
-- 性别人数大于2的性别
SELECT stu_sex FROM (SELECT stu_sex,COUNT(*) c FROM t_student GROUP BY stu_sex) tabless WHERE c>2-- 列子查询(一列多行)
SELECT stu_name FROM t_student WHERE stu_grade IN(SELECT stu_grade FROM t_student WHERE stu_grade>80)-- 行子查询(一行多列)  查询学号最小成绩最高的学生       返回的是一个一行多列
SELECT * FROM t_student WHERE (stu_num,stu_grade)=(SELECT MIN(stu_num),MAX(stu_grade) FROM t_student)-- 查询成绩最高的学生信息
SELECT * FROM t_student WHERE stu_grade=(SELECT MAX(stu_grade) FROM t_student)

MySQL DQL分组查询、条件查询、子查询相关推荐

  1. SQL外键约束多表查询级联删除子查询

    文章目录 一.外键 1.创建外键约束 2.删除外键约束 3.外键约束提示 二.级联删除 三.多表查询 1.笛卡尔积 2.内连接查询 1.隐式内连接 2.显示内连接 3.外连接查询 1.左外连接 2.右 ...

  2. Mysql进阶学习(六)子查询与分页查询

    Mysql进阶学习(六)子查询与分页查询 进阶7:子查询 1.含义: 2.分类: 3.where或having后面 3.1 特点: 3.2.标量子查询★ 案例1:谁的工资比 Abel 高? 案例2:返 ...

  3. MySQL 学习笔记(16)— 子查询(单行单列、一行多列、多行多列、 ALL、ANY、SOME 运算符、EXISTS 操作符)

    1. 子查询概念 子查询是指嵌套在其他语句(SELECT . INSERT . UPDATE . DELETE 等)中的 SELECT 语句:子查询也称为内查询( inner query )或者嵌套查 ...

  4. mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程

    MysqL 列子查询及 IN.ANY.SOME 和 ALL 操作符的使用MysqL 列子查询 列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回. 一个列子查询的例子如 ...

  5. 三、MySQL子查询学习笔记(标量子查询、列子查询、行子查询、表子查询 详解)

    三.MySQL子查询学习笔记 7:子查询 含义: 一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询:在外面的查询语句,称为主查询或外查询 分类: 一 ...

  6. SQL优化之一则MySQL中的DELETE、UPDATE 子查询的锁机制失效案例

    关注"数据和云",精彩不容错过 前言 开发与维护人员避免不了与 in/exists.not in/not exists 子查询打交道,接触过的人可能知道 in/exists.not ...

  7. mysql 同表子查询_MySQL 表子查询

    MySQL 表子查询 表子查询是指子查询返回的结果集是 N 行 N 列的一个表数据. MySQL 表子查询实例 下面是用于例子的两张原始数据表: article 表: aidtitlecontentu ...

  8. mysql 子查询分页_MySQL子查询,正则表达式,索引,分页,三大范式

    子查询 可以将子查询放在许多的 SQL 子句中,包括: • WHERE 子句• HAVING 子句 • FROM 子句 使用子查询的原则 • 子查询放在圆括号中. • 将子查询放在比较条件的右边. • ...

  9. mysql子查询:标量子查询,行子查询,列子查询

    子查询 子查询或内查询 分类 按结果集的行列数不同 按子查询出现的位置 where或having后 标量子查询 列子查询(多行子查询) 行子查询 放在select后:仅仅支持标量子查询 放在from后 ...

最新文章

  1. 厉害!冬奥首金选手都来自这所高校!还全是研究生!
  2. YAML_11 when条件判断
  3. QList、QVector、QMap容器类
  4. 列表边框column-rule
  5. 数据可视化插件 echart
  6. 在Windows编译libssh
  7. ad软件画pcb方法总结_AD软件中导入BRD的PCB文件总结分享,,,,
  8. 嵌入式软件工程师面试题总结
  9. 基于ssm的自动化办公oa系统的设计
  10. php调用pentaho,Pentaho数据源和查询
  11. source的作用详细讲解
  12. vue表格中的内容换行与导出Excel换行
  13. SD卡无法识别的问题解决 ”mmc0: error -110 whilst initialising SD card”
  14. Android基础操作-----SuppressLint和SuppressWarnings
  15. 微信公众平台与微信开放平台的区别、服务号、订阅号、企业微信的区别
  16. 全卷积神经网络(FCN)
  17. 微软与网景关于浏览器的恩怨情仇
  18. 网络舆情分析技术 读书笔记1
  19. 图文详解如何将书签bookmarks导回到chrome?
  20. 【论文复现】SimCSE对比学习: 文本增广是什么牛马,我只需要简单Dropout两下

热门文章

  1. 打开新世界?从产品经理角度聊聊“高智商”这件事儿
  2. 写给未来的入职为程序员的人工智能专业的高考生的选专业看法
  3. 超市库存管理系统 代码
  4. 【小组专题一:数论入门:整数】数和序列 | 和与积 | 数学归纳与第二数学归纳
  5. 韩顺平—基础—重载、构造器、对象(P228 - P263)
  6. 3DMax下载与安装(注册机为网上收集,仅供学习与研究,支持正版)
  7. 远程登陆windows设置分辨率
  8. 〖全域运营实战白宝书 - 运营角色认知篇⑤〗- “运营“ 是否有前途?
  9. Unity通过相机控制场景模型的移动和缩放
  10. swagger添加@ApiImplicitParams后出现错误 Required String parameter is not present