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

数据库 高阶语句

目录

数据库 高阶语句

使用select 语句,用order by来对进行排序

区间判断查询和去重查询

如何对结果进行分组查询group by语句

limit 限制输出的结果记录,查看表中的指定行

通配符

设置别名:alias  简写就是 as


使用select 语句,用order by来对进行排序

数据库的权限一般是很小的,我们在工作使用最多的场景是查id int(4) primary key,
name varchar(10) not null,
score decimal(5,2),
address varchar(20),
sex char(3) not NULL
);select * from info;使用select 语句,用order by来对进行排序
ASC 
#升序排列,默认就是升序,可以不加
desc
#降序排列,需要添加格式 举例
select id,name from info order by id;   
#升序查看id那一列select id,name from info order by id desc;  
#降序查看id那一列select id,name,score from info order by name desc;   
#最好用数据排序比较合适,但不绝对order by 结合where 条件过滤select name,score from info where address='南京西路' order by score desc;
#根据名字,成绩查询地址那一列是南京西路,降序过滤,只有第一个参数出现相同值时,第二个才会按照要求排序#举例:查id姓名成绩,根据性别都是女,按照id进行降序排列
select id,name,score from info where sex='女' order by id desc;

区间判断查询和去重查询

AND   /   or
#且      或select * from info where score > 70 and score <=90;
#例  查询score 列 大于70 且 小于等于90 的数据举例
#大于80或者小于90
select * from info where score > 80 AND score <90;
#查询score列大于80且小于90的数据
select * from info where score > 80 or score <90;
#大于80或小于90嵌套条件select * from info where score > 70 and ( score >75 and score <90 );
#大于70且大于75且小于90
select * from info where score > 70 or ( score >75 and score <90 );
#大于70或大于75且小于90#嵌套条件,满足性别是男,然后进行筛选成绩 80-90
select * from info where sex='男' and (score >80 and score <90);#去重查询
select distinct address from info;
select distinct sex from info;#根据地址address去重,然后过滤成绩=90且性别是男
select distinct address from info where sex='男' and score =90;

如何对结果进行分组查询group by语句

对结果进行分组查询group by语句,一般是结合聚合函数一块使用
count() 统计有多少行
sum()列的值相加,求和
avg() 列的值求平均数
max() 过滤出列的最大值
min() 过滤出列的最小值
分组的时候可以按照一个字段,也可以按照多个字段对结果进项分组处理
select * from info;举例格式
select count(name),sex from info group by sex;
#统计name 列 对结果进行分组查询#根据where 条件删选,score >= 80
select count(name),sex,score from info where score >= 80 group by sex;#求和;以地址为分组,对score求和
select sum(score),address from info group by address;#算出男生女生平均成绩
select avg(score),sex from info group by sex;#分别求出男生组和女生组的成绩最低的姓名
select min(score),sex from info group by sex;#group by 实现条件过滤,后面跟上having语句实现条件过滤
select avg(score),address from info group by address having avg(score) >按照地址分组,求成绩的平均值,然后>50,按照id的降序排列
select avg(score),address,id from info group by  address having avg(score) >50 order by id desc;select avg(score),address,id from info group by  address having avg(score) >50 order by id desc;
统计name 的行数,计算出学生的个数把成绩也查出来按照统计出来的学生个数升序排列按照地址分组,学生的成绩大于等于70分select count(name),score,address from info group by address having score >= 70 order by count(name);
按照性别分组,求出男生和女生的最大成绩,最大成绩是否超过75分,满足条件的过滤出来select max(score),sex from info group by sex having max(score) > 75;
使用聚合函数必须要加group by 要选用有多个重复值的列,group by的过滤条件要用having语句过滤

limit 限制输出的结果记录,查看表中的指定行

select * from info;select * from info limit 3; 
#只看前三行#看2行到5行
select * from info limit 1,4;#看6到7行
select * from info limit 5,3;select * from info order by id desc limit 3;  
#快速查询后几行,将最后几行降序方式到前几行,再用limit只查看前三行
通配符
#通配符主要用于替换字符串中的部分字符,通过部分字符的匹配向相关的结果查询出来
#通配符和like一起使用,使用where语句一起来完成查询
# %  表示0个,1个或者多个
# _  表示单个字符select * from info where address like '山%';  
#以山为结尾select * from info where address like '%路';  
#以路为结尾select * from info where address like '%山%'; 
#中间有山select * from info where name like '杨_婷';select * from info where name like '%婷';select * from info where address like '山%__';  
#通配符可以结合在一块使用
设置别名:alias  简写就是 as
#设置别名的目的是在mysql查询时,表的名字或者字段名太长,可以使用别名替代,方便书写,也可以增加可读性
#可以给表起别名,但是要注意别名不能和数据库其他的表名互相冲突
#列的别名在结果中可以显示,但是表的别名在结果中没有显示,只能用于查询格式 举例
select name as 姓名, score as 成绩 from info;select name 姓名,score 成绩 from info; 
#可以不加ascreate table test as select * from info;
#创建了一个表,叫test ,test的数据结构完整的从info复制过来,但是约束不会被复制desc test;
#使用as复制表,约束不会被复制过来。create table test1 as select * from info where score >=60;
#创建一个表,通过as复制info表,但只有score那列 大于等于60 才会被复制#以这种方式创建的表主键在不在,外键在不在,索引在不在?
#都不在
#通过as创建,主键没了,外键没了,外键在不在,索引在不在?
#都不在
http://www.lryc.cn/news/224916.html

相关文章:

  • jenkins Java heap space
  • OpenCV校准棋盘集合
  • 使用git将本地项目推送到远程仓库github
  • Mybatis-Plus使用Wrapper自定义SQL
  • 仿mudou库one thread one loop式并发服务器
  • 二十三种设计模式全面解析-组合模式与装饰器模式的结合:实现动态功能扩展
  • 智慧城市建设解决方案分享【完整】
  • unity - Blend Shape - 变形器 - 实践
  • asp.net core mvc之路由
  • 前端设计模式之【访问者模式】
  • 通过docker-compose部署elk日志系统,并使用springboot整合
  • 【NLP】特征提取: 广泛指南和 3 个操作教程 [Python、CNN、BERT]
  • 数据结构-单链表
  • 红队系列-IOT安全深入浅出
  • 亚数受邀参加“长三角G60科创走廊量子密码应用创新联盟(中心)”启动仪式
  • 直方图学习
  • Java / Android 多线程和 synchroized 锁
  • 基于51单片机的万年历-脉搏计仿真及源程序
  • 【ARFoundation学习笔记】点云与参考点
  • uni-app:js实现数组中的相关处理-数组复制
  • 8 STM32标准库函数 之 实时时钟(RTC)所有函数的介绍及使用
  • ARMday04(开发版简介、LED点灯)
  • 国际腾讯云:云服务器疑似被病毒入侵问题解决方案!!!
  • Perl语言用多线程爬取商品信息并做可视化处理
  • 认识计算机-JavaEE初阶
  • you-get - 使用代码下载视频
  • 【Proteus仿真】【51单片机】汽车尾灯控制设计
  • 浙大恩特客户资源管理系统任意文件上传漏洞复现
  • 史上第一款AOSP开发的IDE (支持Java/Kotlin/C++/Jni/Native/Shell/Python)
  • GCC + Vscode 搭建 nRF52xxx 开发环境