• mysql 高级查询


    高级查询
    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是常量的一个列
     
     
    select 1,'零檬',t.* from member t; 增加常量列用逗号隔开
     
    select 1,id,regname from member; 1表示 第一列全部为1,是一个常量,手动加了一个常量列
     
       select count
    -- select count("柠檬班") from member;
    这样写的意义: 加入要j加一列type为1 为普通用户
    select '普通用户’,type from member where type=1;
    select if 自己查找
     
    -- 4:掌握去重distinct的用法
    -- 需求:查询所有的有投资的用户的id
    -- select distinct MemberID from invest;
                                                     
     
    -- 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;
    -- 统计每个投资用户的平均投资金额、最大投资额、最小投资额、总投资额、投资次数
    /*
    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( )
    获取系统当前日期: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
     
     
     
     
     

  • 相关阅读:
    并发编程
    进程的介绍
    操作系统详解
    进程的粗略理解
    打印进度条
    FTP上传下载文件(面向对象版)
    socket套接字
    FTP上传下载文件(函数简易版)
    osi七层协议 Open System Interconnection
    __str__和__repr__的区别
  • 原文地址:https://www.cnblogs.com/nuonuozhou/p/8644617.html
Copyright © 2020-2023  润新知