注意事项

指令语法的优先级: where > group by >order by > limit

例:select count(id) as cnt,age from tablename where id > 6 group by age having cnt < 2 order by age desc limit 2,5

PS:查找tablename表中age列从id列大于6后面开始分组,且计算age值相同的数量,然后查询相同数量小于2的数据以age降序排列,且从第二行开始取值一页显示5条

通配符查询:like  #数据库查询肯定用索引,所以这个知识只要了解即可

固定用法like + 条件

1、% 代表所有字符(like ‘n%’ ) #查询只要以n开头的

2、_  代表一个字符(like 'n_')   #查询只要字符串内有n都查询到

where后面可以跟比较运算符和逻辑运算符(=、<、>、!=、not、or、and)

PS:如果用like去搜索,就无法使用索引查询,索引查询的速度要快与通配符查询

限制符查询:limit

PS:应用在网页每页呈现多少数据

select * from tablename limit 5; #tablename就是表名,数字5就是要取几行数据

select * from tablename limit offset(4),5  #offset就是偏移量,意思就是从第几行开始,5就是要取几行

限制符查询实例:page=1 的时候取10条数据

思路:page=1的时候就取10条,就是从数据库中取10行(0-10),第二页就是要从数据库的10行开始取10条,以此类推

page = 1 limit 0,10

page = 2 limit 10,20

page = 3 limit 20,10

指令就是  page = n select * from tablename where 查询条件 limit (n-1)*10,10

排序查询

select * from tablename order by age;  #将列表中的数据通过age来进行升序排序,后面有asc和desc两个参数,如果不写,默认按照升序进行排序

select * from tablename order by age asc;  #acs就是按照升序 排列

select * from tablename order by age desc;  #desc就是按照降序排列

select * from tablename order by age desc,id asc;  #优先按照age降序排列,如果age有相同的,就按照id进行升序排列

分组查询(用到分组查询必须要有一个聚合函数这是一定的配套的)

PS:where 和having 的区别(都是用来过滤数据的),但是不同的where是过滤的原生的数据(没有经过处理的数据,比如分组等),having是过滤group by(分组)之后的数据进行二次筛选,这个程序设计者设计的,固定的

PS:where是可以和having配合使用的,但是必须在group by 分组之前使用,即select count(id) as cut,age from tablename where id > 6 group by age having cnt < 2 #查找tablename中age列下序号6以后的值,并且分组默认升序排列,且计算相同的数量,查找相同数量<2的数据

聚合函数:

count()  #计数

max()  #最大值

min()  #最小值

avg()  #去平均

sum() #求和

PS:sum和count是不同的,sum是做计算,count只是数个数

语法:

select 聚合函数 as name,条件1 from tablename group by 分组条件  #as name 是将聚合函数修改一个名字,能够更直观的在列表内呈现 \ group by 后面的就是以什么分组的条件 \ 条件1就是列表内需要查询的列名

PS:条件1肯定是和分组条件一样的,否则会出现数据查询不完全

select count(id) as cnt,age from tablename group by age;   #分组age并且计算这个组相同的条件的数量

select count(id) as cnt,age from tablename  group by age having cnt < 2; #查询tablename表中age列然后计算相同age值的数量并且查找相同age数量<2的数据

where和having连用

select count(id) as cut,age from tablename where id > 6 group by age having cnt < 2 #查找tablename表中age列,且id列>6的值,并且分组,且计算相同的数量,查找相同数量<2的数据

子查询(sql语句套sql语句) #不建议用,使用子查询后无法用索引,而且效率比连表查询还慢

select * from tablename1 where 列名 in (select 列名 from tablename2);

(5)MySQL的查询:模糊查询(通配符查询like)、限制符查询(limit)、排序查询(order by)、分组查询(group by)、(子查询)的更多相关文章

  1. MySQL Crash Course #06# Chapter 13. 14 GROUP BY. 子查询

    索引 理解 GROUP BY 过滤数据 vs. 过滤分组 GROUP BY 与 ORDER BY 之不成文的规定 子查询 vs. 联表查询 相关子查询和不相关子查询. 增量构造复杂查询 Always ...

  2. mysql数据库分组(GROUP BY)查询实例

    1.使用松散(Loose)索引扫描实现 GROUP BY 何谓松散索引扫描实现 GROUP BY 呢?实际上就是当 MySQL 完全利用索引扫描来实现 GROUP BY 的时候,并不需要扫描所有满足条 ...

  3. Mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法

    转载自:http://blog.csdn.net/jie11447416/article/details/50887888 1.案例中的数据结构和数据如下 2.在没有解决的时候,是这样的   SELE ...

  4. MySql基本查询、连接查询、子查询、正则表达查询解说

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 查询数据指从数据库中获取所须要的数据.查询数据是数据库操作中最经常使用,也是最重要的操作.用户 ...

  5. 详细讲述MySQL中的子查询操作 (来自脚本之家)

    继续做以下的前期准备工作: 新建一个测试数据库TestDB: ? 1 create database TestDB; 创建测试表table1和table2: ? 1 2 3 4 5 6 7 8 9 1 ...

  6. MySql学习(三) —— 子查询(where、from、exists) 及 连接查询(left join、right join、inner join、union join)

    注:该MySql系列博客仅为个人学习笔记. 同样的,使用goods表来练习子查询,表结构如下: 所有数据(cat_id与category.cat_id关联): 类别表: mingoods(连接查询时作 ...

  7. Mysql的子查询相关知识,少但是精

    Mysql子查询 概念分析: 根据相关性分: (1)不相关子查询:一条Sql语句中含有多条SELECT语句,先执行子查询,再执行外查询,子查询可对立运行 关键字:(1)先子查询,再外查询 (2)可以对 ...

  8. 聊聊MySQL的子查询

    1. 背景 在之前介绍MySQL执行计划的博文中已经谈及了一些关于子查询相关的执行计划与优化.本文将重点介绍MySQL中与子查询相关的内容,设计子查询优化策略,包含半连接子查询的优化与非半连接子查询的 ...

  9. mysql子查询 exists,not exists,all和any

    (1)实现让结果集A - 结果集B:--利用not exists,合并则可用union . exists,not exists:用于判断且获取结果集A是否存在地结果集B中! ==========结果集 ...

  10. MySQL里面的子查询

    一.子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中. 子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询. 子查询可以包含普通select可以包括的任何子句,比如:dis ...

随机推荐

  1. 利用FFMPEG命令进行文件分割

    ffmpeg -ss 00:00:00 -i input.mp4 -c copy -t 60 output.mp4 -ss 表示视频分割的起始时间,-t 表示分割时长,同时也可以用 00:01:00表 ...

  2. Resharper插件如何启用原VS的智能提示

    第一步:vs2015选择工具—>选项—>文本编辑器—>C#—>常规—>语句结束,勾选自动列出成员,如下图: 第二步: 关闭Resharper智能提示,并设置为Visual ...

  3. Python之路-python基础二(补充)

    本章内容: 三元运算 八进制,十六进制,十进制与二进制的转换 集合的修改方法 字符串常用方法            三元运算  三元运算简化了if else的语句,将四行代码简化为一行.三元运算的格式 ...

  4. shell脚本中出现图形化界面

    http://www.ttlsa.com/shell/how-to-create-dialog-boxes-in-interactive-shell-script/

  5. 每天CSS学习之border-spacing

    border-spacing是CSS2的一个属性.其作用是规定表格的相邻单元格边框之间的距离.如果表格的border-collapse属性值为collapse时,border-spacing设置无效. ...

  6. Java集合排序方法comparable和comparator的总结

    一.概述Comparable和Comparator都是用来实现集合中元素的比较.排序的.Comparable是在集合内部定义的方法实现的排序,位于java.lang下.Comparator是在集合外部 ...

  7. 用matlab绘制中国地图

    reference:https://jingyan.baidu.com/article/870c6fc36fdacfb03ee4be58.html shp: http://muchong.com/ht ...

  8. Centos7部署kubectl命令行工具(五)

    1.准备二进制包 [root@linux-node1 ~]# cd /usr/local/src/kubernetes/client/bin [root@linux-node1 bin]# cp ku ...

  9. Map的isEmpty()与==null的区别

    isEmpty()方法判断Map是否有内容(即new分配空间后是否put键值对),若没有内容则true,否则false == null是判断map是否为null(即是否new分配空间,和其中的键值对没 ...

  10. POJ - 1850 B - Code

    Transmitting and memorizing information is a task that requires different coding systems for the bes ...