zoukankan      html  css  js  c++  java
  • 4.数据库表的高级查询

    4.数据库表的高级查询

    4.1   in   

    使用场景:查询时,条件字段的值存在某个数据集中

    数据集:可以是具体的某几个值,也可以是通过一个子查询得到的数据集

    select ... from 表名 where 条件字段 in (数据集);

    比如: 从member表中查询用户id1001,1002,1003的用户信息

    select * from member where in(1001,1002,1003);

    select ... from 表名 where 条件字段 not in (数据集);     

    表示要查询的字段不存在这个数据集中

    4.2 模糊查询 like

    使用场景:查询的时候,条件字段的值不完整的情况下

    % 匹配任意长度的字符串,%所在的位置不同代表的意思不同

    select ... from 表名 where 条件字段 like '%XX';

    条件字段以任意字符串开头

    XX结尾

    select ... from 表名 where 条件字段 like 'XX%';

    条件字段以XX开头

    以任意字符串结尾

    select ... from 表名 where 条件字段 like '%XX%';

    条件字段包含XX

    比如 查询用户表中手机号以556结尾的用户信息

    select * from member where mobilephone like '%556';

     查询用户表中手机号后三位是556的用户信息

    select * from member where mobilephone like '_________556';

    占位符(下划线)_

    11位的手机号,输入9次下划线

    4.3 分组  group by

    使用场景:

    按照某一个或多个字段进行分组,必须配合聚合函数使用,使用时至少需要一个分组字段。

    select 查询字段,聚合函数 from <查询涉及到的表> group by 分组字段 having 过滤条件;

    聚合函数:对一组值执行计算并返回单一的值的函数。

    sum()count()avg()min()max()

    having 过滤条件: 在分组结果的基础上再进行过滤,必须用having 过滤条件

    Select *,max(amount) from invest group by loanid having max(amount)>20000.00

    4.4 between

    使用场景:

    条件字段的取值处于两个数据范围内的情况,包含边界值。

    select ... from 表名 where 条件字段 between 数据A and 数值B;

    比如 找出用户表可用余额在10000.0040000.00的用户

    select * from member where leaveamount between 10000.00 and 40000.00;

    4.5 去重 distinct

    使用场景:去除查询结果中的重复数据

    select distinct 字段名 from <表名>;

    比如  查询所有投资的用户id

    select distinct memberid from invest;

    4.6 分页 limit

    使用场景:取查询结果的前几条

    select ... from <表名> limit m,n;

    m:索引值从m开始。   n :每页要取多少条。

    比如  每页取10条展示

    第一页: limit 0,10    表示取索引从0开始取10条的记录

    第二页:limit 10,10    表示取索引从10开始取10条的记录

    那么当每页展示x条数据,取到第y页时,分页语句中的m,n分别为多少?

    (y-1)x   ,     x

    4.7 排序 order by  排序字段名  降序(desc)、升序(asc)

    不写descasc,默认升序

    例如 查询用户信息,以用户名升序排列

    select * from member order by regname

    order by  ... desc  降序

    例如 查询用户信息,以用户id降序排列

    select * from member order by id desc;

    order by ...  asc   升序

    例如 查询用户信息,以用户名升序排列

    select * from member order by regname asc;

    4.8  select  函数;   select 后面直接加函数

    数值相关函数

    求字段A的最大、最小、平均、和

    min(字段A)    max(字段A)   avg(字段A)   sum(字段A)

    日期函数

    获取系统当前日期时间

    sysdate()

    获取系统当前日期

    curdate()

    获取系统当前时间

    curtime()

    获取给定日期的年份、月份

    year(date)    month(date)

    为指定日期增加一个时间间隔

    的函数

    date_add(date,interval expr unit)

    例如:

    select date_add(sysdate(),interval 1 day);

    在当前时间增加1

    字符串函数

    字符串拼接函数

    concat(字段A,字段B)

    select concat(id,regname) from member;

    select concat('hello','world');

    字符串截取函数

    substr(字段A,截取开始的位置position,截取字符个数)

    select substr(regname,2,3) from member;

    用户名从第二个字符开始截取3个字符

    获取字符串长度的函数

    length(字段A)

    select length(regname) from member;获取用户名的长度

    4.9 select 查询语句的结构

    select...查询字段...from..查询涉及到的表....where..关联条件....group by..按主键/id进行分组....having...分组后进行过滤...order by......limit......

    4.10 子查询(嵌套查询)

    select * from (select id,regname,mobilephone from member) as newtable where newtable.id3;

  • 相关阅读:
    总结html5
    css加载方式link和@import的区别!
    JavaScript
    log4j log for java
    异常
    内部类
    抽象类和接口,封装、继承、多态
    类和对象
    html 基础知识
    html表单
  • 原文地址:https://www.cnblogs.com/Aphrodite/p/10064958.html
Copyright © 2011-2022 走看看