当前位置: 首页 > news >正文

数据库 第一章 MYSQL基础(4)

目录

MYSQL -DQL

基础查询

分组函数

函数

 条件查询

实例

合并

实例

排序

数量限制

分组查询

语法:

案例:

实例


MYSQL -DQL


基础查询


分组函数

功能:用作统计使用,又称为聚合函数或统计

函数
  • sum(列)   求和 返回给定列值的合计
  • avg(列)    平均值 返回给定列的平均值
  • max(列)   最大值 返回该列中的最大值
  • min(列)    最小值 返回该列中的最小值
  • count(列)  计数 统计此列中的个数,如过列值为null,则不统计 一般使用*或主键 注意: 单独使用分组函数时没有问题
  • SELECT MAX(height) FROM student 如果使用分组函数的同时,还需要查询其他列名,则会报错,需要结合group by语句
-- 分组函数:多行查询完之后,变为一行结果
-- 分组函数一般和group by语句组合使用 分组统计
-- sum() avg() max() min() count()
-- sum 只能对数值类型求和
select sum(height) from basketballplayer  
-- avg 求平均值
select avg(height) from basketballplayer  
-- max 返回该列中最大值  min() 返回该列最小值
select max(height),min(height) from basketballplayer 
-- count 统计该列总数  值如果为空null,不计算 
selecct count(birthday) from basketballplayer   
-- 如果统计所有列的数据,一边用主键列,*
select count (*) from basketballplayer      
select count (id) from basketballplayer 

-- 查询出学生中身高最高的人的信息
select id,name from basketballplayer where height = (select max(height) from basketballplayer)
-- 查询身高大于平均值的人的信息 
select id,name from basketballplayer  where height > (select avg(height)from basketballplayer )          
select id,name from basketballplayer  where height < (select avg(height)from basketballplayer )            


 条件查询

-- select 查询结果 from 表 where 条件 (排序,数量限制,分组   分组后条件筛选)
  • and  并且
select * from  basketballplayer where position = '中锋' and height >= 190
  • or 或
select * from  basketballplayer where position = '中锋' or height >= 190
  • between 在两个值之间,包含边界值
select * from  basketballplayer where position = '中锋' and height between 190 and 222
  • 模糊查询 LIKE:是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值或数值型.
  • 通配符: 匹配% 任意多个字符
  • in 判断某字段的值是否属于in列表中的某一项
  • not in判断某字段的值是否不属于in列表中的某一项
  • IS NULL(为空的) IS NOT NULL(不为空的)
实例
-- 模糊查询 1ike'张%'以张开头,向右匹配任意位字符
select * from  basketballplayer where name like'沙%' 
select *from  basketballplayer where name like'%丹%'

-- in 在给定的数据集中的
select * from basketballplayer where id in(1,3,5,6,8,9,12)
-- not in 不在给定的数据集中
select * from basketballplayer where id not in(1,3,5,6,8,9,12)

-- is null 为空的
select * from basketballplayer where name is null
-- is not null 不为空的
select * from basketballplayer where name is not null

合并


UNION 的语法如下:

   [SQL 语句 1]  UNION  [SQL 语句 2]

UNION ALL 的语法如下:

   [SQL 语句 1] UNION ALL [SQL 语句 2]

注:当使用union 时,mysql 会把结果集中重复的记录删掉,而使用union all , mysql 会把所有的记录返回,且效率高于union 。


实例
- 合并时多条sql列尽量保持一致
-- union 合并多个查询的结果 ,合并时可以除掉多条语句查询出的重复数据
select id,name,position from basketballplayer  where position = '中锋'
union 
select id,name,position from basketballplayer  where position = '后卫'
-- union all 合并时 不能除去重复数据
select id,name,position from basketballplayer  
union all
select id,name,position from basketballplayer  where position = '后卫'
union all
select id,name,position from basketballplayer  where position = '中锋'

排序

  • 查询结果排序,使用 order by 子句排序
  • order by 排序列  ASC/DESC    asc代表的是升序,desc代表的是降序、
  • 如果不写,默认是升序 order by子句中可以支持单个字段、多个字段
-- 排序 order by 列名 asc(升序)/desc(降序
select * from basketballplayer  where id>1 order by height asc

select * from basketballplayer  order by height desc   

数量限制

limit子句:对查询的显示结果限制数量 (sql语句最末尾位置)   

SELECT * FROM table LIMIT offset rows; SELECT * from table LIMIT 0,5;

limit
select * from basketballplayer where id>0 order by id asc limit 0,2 -- 第一页·
select * from basketballplayer where id>0 order by id asc limit 2,2 -- 第二页
select * from basketballplayer where id>0 order by id asc limit 4,2 -- 第三页
select * from basketballplayer where id>0 order by id asc limit 5,6
-- mysql分页公式     limit  (n-1)*每页大小,每页大小

分组查询

语法:
  • select 分组函数,列 from 表 group by 分组的列 [having 分组后的筛选条件]
案例:
  • 统计男女人数
  • 统计姓名重复的学生

实例
-- 分组查询
-- 统计出前锋 后卫 各有多少人
-- group by 分组的列
-- 用哪个列作为分组条件,会把该列中相同的数据分到一组处理
select position,count(*) from basketballplayer where id>1 group by position
-- 统计每个年龄出生的人数
select date_format(birthday,'%Y'),count(*) from basketballplayer group by date_format(birthday,'%Y')
-- 查找姓名重复的学生,只显示重复数据
-- where 是对原始表中的数据进行筛选
-- having 是对分组后的结果进行筛选
select name,count(*)as c from basketballplayer  group by name having c=1

select * from(select name,count(*)as c from basketballplayer  group by name )as t where t.c>1
 

http://www.dtcms.com/a/107876.html

相关文章:

  • 《汽车噪声控制》课程作业
  • 英飞凌高信噪比MEMS麦克风驱动人工智能交互
  • Pandas基础及series对象
  • Token是什么?
  • 时序数据库 InfluxDB(六)
  • Python爬虫第一战(爬取优美图库网页图片)
  • *快排延伸-自省排序
  • conda activate激活环境失败问题
  • 《雷神之锤 III 竞技场》快速求平方根倒数的计算探究
  • conda 激活环境vscode的Bash窗口
  • 数据清洗的具体内容
  • 【Linux】手动部署并测试内网穿透
  • Python基础语法 - 判断语句
  • ffmpeg命令整理
  • 从零开始学习Slam|ICP原理与应用
  • Sentinel实战(三)、流控规则之流控效果及流控小结
  • OpenIPC开源FPV之Adaptive-Link新版本算法v0.60.0
  • 强大而易用的JSON在线处理工具
  • python网络爬虫开发实战之Ajax数据提取
  • 链表的操作-反转链表
  • spring 设计模式、核心模块
  • 创建Linux虚拟环境并远程连接,finalshell自定义壁纸
  • 最短路径:Bellman-Ford算法
  • 抽象类与接口:特征与比较
  • 【实用技巧】电脑重装后的Office下载和设置
  • 自动化测试(web测试)
  • vue-系统登录后进入页面【el-input】输入框无法正常显示?需要手动刷新才可以恢复设置样式?让我来瞅瞅~
  • 关于 UPDATE 语句 和 SELECT ... FOR UPDATE 的对比分析,包括语法、功能、锁机制、使用场景及示例代码
  • java知识梳理(二)
  • 【电子通识】为什么电子元件的规格书常常要看英文版本