mysql高级查询练习题_mysql 高级查询

本文详细介绍了MySQL的高级查询操作,包括IN、LIKE、COUNT、DISTINCT、BETWEEN、GROUP BY、分页查询以及各种函数的用法,提供了一系列实战示例,适合数据库查询进阶学习。
摘要由CSDN通过智能技术生成

高级查询

1.in的用法  select * from member where id in(1,2,3);

2.模糊查询like的用法

3.统计count()的用法

4.去重distinct的用法

5.between的用法

6.分组group by的用法

7.mysql分页

-- 1:掌握in的用法 -- 在。。。里面

-- 字段 in(数据集)

-- 查询用户id为1,或者为2,或者为3的用户

-- select * from member where id in(1,2,3)

-- not in: 不在...里面

-- select  * from member where id not in(1,2,3);

-- 2:掌握模糊查询like的用法 关键字查询

-- 查询姓小的会员

-- select * from member where RegName like '小'; -- 没有%表示完全匹配。名字为小的用户

-- 姓小:表示第一个字符是小,后面可以是任意字符

-- 模糊匹配 %:表示可以是任意字符,也可以是空字符串

-- select * from member where RegName like '小%';姓为小,后面可以是任何字符

-- select * from member where RegName like '%小';必须以小结尾,前面可以是任意字符

--

-- select * from member where RegName like '%小%'; 查找包含小这个关键字的记录

-- 3:掌握统计count()的用法

-- 统计行数,纵向统计 count 3种写法

(1)-- select count(*) from member;  42条记录 表示有42行 * 表示一条记录所有字段

(2)-- select count(id) from member; -- 推荐使用 统计一个字段

eg:select count(RegName) from member;

(3) select count(1) from member;大力推荐使用

select 1 第一列,t.*from member t;  t.*代表所有字段   1是常量的一个列

8644617.html

90a6d0626ef964a4f4e28b70e56178f8.png

8644617.html

select 1,'零檬',t.* from member t; 增加常量列用逗号隔开

8644617.html

def7cb720352285065f7568d320f0154.png

select 1,id,regname from member; 1表示 第一列全部为1,是一个常量,手动加了一个常量列

5a6f0e1f9e790f453d7ab56433fbb901.png

8644617.html

select count

-- select count("柠檬班") from member;

这样写的意义: 加入要j加一列type为1 为普通用户

select '普通用户’,type from member where type=1;

309bab1f80d5168a16625ba5cb6925ab.png

8644617.html

select if 自己查找

-- 4:掌握去重distinct的用法

-- 需求:查询所有的有投资的用户的id

-- select distinct MemberID from invest;

07eecba2ab659e1cfd311ad968a7d762.png

8644617.html

-- distinct 字段1,字段2,字段3: 当两行记录字段1,字段2,字段3一一相等的时候,表示重复

-- 字段1,字段2,字段3

--  A     B    C

--  A     B    D

--  A     B    C

当2行记录多个字段全部相等时是重复,这样的记录会去掉

-- 5:掌握between...and的用法 -- 在。。。之间  between 小值 and 大值

-- 需求:查询出用户可用余额在10000(包括)到30000(包括)之间的用户信息

-- select * from member where LeaveAmount between 10000 and 30000;

-- select * from member where LeaveAmount between 30000 and 10000; -- 没有记录,顺序要从小到大

-- 6:掌握分组group by的用法 --- 通过...分组

思维方式:-- 统计男生和女生的平均年龄

-- 先把同学们根据性别分成男、女的两组,分完组,分别计算男女两组的平均年龄

-- 统计每个投资用户的平均的投资金额 invest表

-- 按哪个字段分组的意思是哪个字段相同说明他们是同一组

-- 只有memberid相同的记录表示是同一个用户的投资记录--》group by memberId

-- 分组完毕:可以去计算、统计组内的信息

-- select MemberID,avg(Amount) from invest group by MemberID;

8644617.html

-- 统计每个投资用户的平均投资金额、最大投资额、最小投资额、总投资额、投资次数

/*

select MemberID,avg(Amount),max(Amount),min(Amount),sum(Amount), count(id) 投资次数

from invest group by MemberID;

*/

-- group by 字段一,字段二,字段三:只有当字段一字段二字段三完全相同是,才算是一组

-- 字段1,字段2,字段3

--  A     B    C  和第三条记录为一组

--  A     B    D

--  A     B    C

-- 大学  年级  班级

-- 清华  大三  10086   1

-- 北大  大三  10086   2

-- 清华  大三  10086   3

-- 7:掌握MySQL分页

-- 分页1:limit m,n :m表示索引(记录的索引)  n:表示一页多少记录

-- 一页10条,你给我返回第一页

-- select * from member limit 0,10; -- 第一页

-- select * from member limit 10,10; -- 第三页

-- select * from member limit 20,10 -- 第三页

-- 分页二:

--select * from member limit m offset n; -- m每页多少条,n偏移量(索引)

-- 一页10条,你给我返回第一页单表查询多表查询.note

-- select * from member limit 10 offset 0;

-- select * from member limit 10,10; -- 第一页 、

-- 分页三:top语法:取最前面的10

-- select * from member limit 10;

-- 查询出可用余额最多的前10个用户

-- select * from member order by LeaveAmount desc limit 10;

-- 查询出最新的一个会员记录

-- select * from member order by id desc limit 1;

-- 子查询

-- select * from member where id=(select max(id) from member);

-- 8:掌握MySQL常用函数

数值相关函数

求字段A的最小值:min(字段A)

求字段A的最大值:max(字段A)

求字段A的平均值:avg(字段A)

求字段A的和:sum(字段A)

日期函数

获取系统当前日期时间:sysdate( )

8644617.html

获取系统当前日期:curdate()

获取系统当前时间:curtime()

获取系统给定日期的年份:year(date)  select year(sysdate());

获取给定日期的月份 month(date)

为指定日期增加一个时间间隔的函数 DATE_ADD(date,INTERVAL expr unit)

slect DATE_ADD(SYSDATE(),INTERVAL 1DAY);

在系统时间基础上加上一天

字符串函数

字符串拼接函数:contact(字段A ,字段B,字段 C)

select contact (;HELLO','','WORLD');

字符串截取函数:SUBSTR(字段A,截取开始的位置position,截取字符个数)

slect regname,mobilephone  from member

select.substr(regname,1,l2);从最开始截取2个字符串

获取字符串长度的函数:length(字段A)

2.投资成功不能算是有效投资,有可能借款失败 invest表

3.明天 data_add() 应汇款表示还未回款 status 0,完全没有还1部分已还 回本金或利息

4.待还本金 应回款回的本金  整个平台  所有状态为0,1状态的 status in(0,1)回款计划的本金求和

5.count(1) status 0,1 关联invest  loanid确定项目

6再爆总额 repayment  invest表关联查询,,memberid member关联上  repaymenT -inbest-member

7.分组,排序f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值