注意事项

指令语法的优先级: 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. linux查看在线用户并踢出用户

    linux查看在线用户并踢出用户 1.查看在线用户 w [root@dbserver01 ~]# w 16:45:04 up 16 days, 8:48, 1 user, load average: ...

  2. response对象、转发、重定向

    1.response:响应.    该对象是用来响应用户请求后的结果.2.response中的常用方法:  response.setCharacterEncoding();该方法用来处理响应时的字符集 ...

  3. 逆袭之旅DAY24.XIA.数组练习

    2018-07-20 08:40:19 1. public void stringSort(){ String[] s = new String[]{"George"," ...

  4. 1-1Controller之Request

    laravel5.5版本 //路由: Route::any('request1',['uses'=>'StudentController@request1']); //控制器中的方法: publ ...

  5. xStream解析生成xml文件学习资料

    参考链接: http://www.cnblogs.com/hoojo/archive/2011/04/22/2025197.html

  6. String和StringBuffer互相转换

    String:不可变 StringBuffer:可变 StringBuffer 上的任何修改性的操作都是在同一个字符数组上进行的,所以修改其中任一个值 另一个的值也会随着改变! StringBuffe ...

  7. EF-记录程序自动生成并执行的sql语句日志

    在EntityFramework的CodeFirst模式中,我们想将程序自动生成的sql语句和执行过程记录到日志中,方便以后查看和分析. 在EF的6.x版本中,在DbContext中有一个Databa ...

  8. 数据库编程测试机试 QQ

    创建QQ数据库 #创建数据库 CREATE DATABASE QQ #创建表名 并且添加列 DROP TABLE IF EXISTS `dbo.BaseInfo`; CREATE TABLE `stu ...

  9. Centos7初始配置

    配置 centos7 ip地址: vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=static ONBOOT=yes NM_CONTRO ...

  10. day 68 增删改查 语法

    1 普通正则 2 分组正则 url(r'/blog/(\d+)/(\d+)',views.blog)     blog(request,arq1,arq2) 按照位置传参 3 分组命名 url(r'/ ...