mysql 查询

Posted 红尘陌上,独自行走

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 查询相关的知识,希望对你有一定的参考价值。

# 查询
  # select * from 表名

# 消除重复行
  # 在select后面列前使用distinct可以消除重复行
    # select distinct gender from students;


  # select * from 表名 where
  # 比较运算符
    # 等于 =
    # 大于 >
    # 大于等于 >=
    # 小于 <
    # 小于等于 <=
    # 不等于 !=或<>

      # 查询科目不大于4的科目
        # select * from subjects where id<=4

      # 查询姓名不是黄蓉的学生
        # select * from students where name!=‘黄蓉‘

      # 查询没有被删除的姓名
        # select * from students where isDelete=0;

    # 逻辑运算符
    # and
    # or
    # not

      # 查询大于三的女同学
        # select * from students where id>3 and gender=0;

      # 查询编号小于4或没有被删除的同学
        # select * from students where id<4 or isDelete=0;

    # 模糊查询
    # like
    # %表示任意多个字符
    # _表示一个任意字符

      # 查询姓黄的学生
        # select * from students where name like ‘黄%‘;
        # select * from students where name like ‘黄_‘;
      # 查询姓黄的或者带靖的学生
        # select * from students where name like ‘黄%‘ or name like ‘%靖%‘;

    # 范围查询
    # in表示在一个非连续的范围内

      # 查询编号是1或者3或者8的学生
        # select * from students where id in(1,3,8);

      # 查询编号3到8的学生
        # select * from students where id between 3 and 8;

      # 查询编号是3到8的男生
        # select * from students where id between 3 and 8 and gender=1;


    # 空判断
    # null与‘‘是不同的
    # 判空 is null
    # 判断非空 is not null

      # 生日是空的
        # select * from students where birthday is null;

      # 生日不为是空的女生
        # select * from students where birthday is not null and gender=0;


  # 优先级
    # 小括号,not 比较运算符,逻辑运算符
    # and比or先运算,如果同时出现并希望先算or,需要结合()使用

 

# 聚合
  # 为了快速得到统计数据,提供5个聚合函数

  # count(*)表示计算总行数
    # 查询学生总数
      # select count(*) from students where isDelete=0;

  # max(列)表示求此列的最大值
    # 查询女生的编号最大值
      # select max(id) from students where gender=0;

  # min(列)表示求此列的最小值
    # 查询未删除编号最小值
      # select min(id) from students where isDelete=0;
      # select * from students where id=(select min(id) from students where isDelete=0);

  # sum(列)表示求此列的和
    # 查询男生的和
      # select sum(id) from students where gender=1;


  # avg(列)表示求此列的平均值
    # 查询未删除女生的平均值
      # select avg(id) from students where isDelete=0;


# 分组
  # 按照字段分组,表示此字段相同的数据会被放到一个数组中
    # select 列1,列2,聚合 from group by 列1,列2
      # 查询男女生总数
        # select gender as 性别,count(*) from students group by gender;

  # 数据筛选
    # having... 对分组后结果集筛选。
      # 查询男生总数
        # select gender,count(*) as re from students group by gender having gender=0;

      # 对比where与having
        # where是对from后面指定的表进行数据筛选,属于对原始集数据的筛选
        # having是对group by的结果进行筛选。


# 排序
  # 为了方便产看数据,可以对数据进行排序
  # 语法:
    # select * from 表名
    # order by列1 asc(有小到大)|desc(由大到小),列2 asc(有小到大)|desc
    # 默认按照列值由小到大

      # 查询未删除的男生由大到小
        # select * from students where isDelete=0 and gender=1 order by id desc;
      # 查询未删除科目信息,按名称升序
        # select * from subjects where isDelete=0 order by id asc;


# 分页
  # 当数据量过大时,在一页中查看数据是一件麻烦的事情
  # select * from 表名
  # limit start,count

  # 从start开始,获取count条数据
  # start索引从0开始

    # 已知:每页显示m条数据,当前显示第几页
    # 求总页数,此逻辑会在后面的python中实现、
    # 查询总条数p1
    # 使用p1除以m达到p2
    # 如果整除则p2为总数页
    # 如果不整除则p2+1为总页数

    # limit start,m

    # m = 5

    # n start
    # 1 0
    # 2 m
    # 3 2m
    # 4 3m
    # n (n-1)m

      # select * from students where isDelete=0 limit (n-1)*m,m

  # 执行顺序
    # from 表名
    # where...
    # group by...
    # select distinct *
    # having...
    # order by...
    # limit start,count

 

完整的select语句

  select distinct * 

  from  表名

  where ......

  group by ... having...

  order by ...

  limit start,count

 






























































































以上是关于mysql 查询的主要内容,如果未能解决你的问题,请参考以下文章

如何提高mysql查询速度

mysql查询一个表,实现递归查询

mysql如何批量查询大量数据

MySQL联合查询及模糊查询

mysql 慢查询

Mysql的查询