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 查询的主要内容,如果未能解决你的问题,请参考以下文章