mysql查询语句学习记录

本文详细介绍了SQL查询中的核心操作,包括最大值查询、分组计数、条件筛选、排序、聚合函数如SUM、AVG的使用,以及内连接、左连接和子查询等复杂查询技巧。通过实例展示了如何在数据库中高效地获取和处理数据。
摘要由CSDN通过智能技术生成

查询日期最大的数据
select max(字段名) from 表

查询单个人每月
select * FROM 表名 where xh=‘12215445242’ AND
rzsj between ‘2020-10-1 00:00:00’ and ‘2020-10-31 00:00:00’ ;

查询总数
select count(*) as 男性人数 from students where gender=1

查询求和
select sum(age) from students ;

求平均值
select avg(age) from students;
select sum(age)/count(*) from students;

四舍五入
select round(sum(age)/count(*),2) from students;
存储金额的时候会扩大多少倍,不会存储小数
select round(avg(height),3) from students;

分组
select后面放唯一能够标识的字段
select gender from students group by gender;

计算每组性别的人数
select gender,count() from students group by gender;
分组和聚合相结合才有用
select gender,count(
) from students where gender=1 group by gender;
select gender,group_concat(name) from students where gender=1 group by gender;
select gender,group_concat(name,age,id) from students where gender=1 group by gender;
select gender,group_concat(name," “,age,” ",id) from students where gender=1 group by gender;

不显示某些分组
select gender,group_concat(name) from students group by gender having avg(age)>30;

where对原始表进行判断,having是对计算的结果进行判断

查询每种性别中大于2的分组
select gender,group_concat(name) from students group by gender having count(*)>2;

排序
select * from students where (age between 18 and 35) and gender=1;
select * from students where (age between 18 and 34) and gender=1 order by age;
select * from students where (age between 18 and 35) and gender=1 order by age asc;

查询年龄在18到30岁之间的女性,按身高倒序排
select * from students where (age between 18 and 30) and gender=2 order by height desc,id desc;
select * from students where (age between 16 and 30) and gender=2 order by height desc,age asc,id desc;
select * from students order by age asc,height desc;

分页
limit限制查询出来的个数
select * from students where gender=1 limit 2;

查询前5个
select * from students limit 0,5;
select * from students limit 5,5;

每页显示2个,第1页
select * from students limit 0,2;
每页显示2个,第2页
select * from students limit 2,2;
每页显示2个,第3页
select * from students limit 4,2;

limit (第N页-1)*每页的个数,每页的个数
不能写成式子
limit在最后
select * from students where gender=2 order by height desc limit 0,2;

连接查询
内连接
select * from students inner join classes;此语句只是将两个表合起来,查询结果不正确

查询能对的上的学生信息
select * from students inner join classes on students.cls_id=classes.id;

按要求显示姓名‘班级
select students.*,classes.name from students inner join classes on students.cls_id=classes.id;
select students.name,classes.name from students inner join classes on students.cls_id=classes.id;

给表取名字
select s.name,c.name from students as s inner join classes as c on s.cls_id=c.id;

在以上的查询中将班级的名字放在第一列
select c.name,s.* from students as s inner join classes as c on s.cls_id=c.id;

按班级信息排序,按id排
select c.name,s.* from students as s inner join classes as c on s.cls_id=c.id order by c.name,s.id;

左连接
select * from students as s left join classes as c on s.cls_id=c.id;

查询没有对应班级的学生
select * from students as s left join classes as c on s.cls_id=c.id having c.id is null;
从结果集中找东西,用having

右连接
一般用的很少

自关联
查询山东的id
select * from area where atitle=‘山东省’;

查询山东的地级市
select * from areas where pid=370000;

将一张表当作两张表来查询
select * from areas as province inner join areas as city on city.pid=province.aid having province.atitle=‘山东省’;
select province.atitle,city.atitle from areas as province inner join areas as city on city.pid=province.aid having province.atitle=‘山东省’;

子查询
在select中嵌套select,将一个select的查询结果当作另一个查询条件
查询最高的男性的信息
select * from students where height=(select max(height) from students);

select * from areas where pid=(select aid from areas where atitle=‘河北省’);

sql语句没有区别,执行时间有区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值