Mysql笔记一:简单查询中那些不起眼的用法

原创 2018年04月17日 17:40:50

1.带LIKE的字符匹配查询(模糊查询)

该用法原理为:

a.百分号通配符“%”,匹配任意长度的字符串,包括零字符(零个字符),这就好比js正则表达式中的*号,是同样的道理。

给定一张表user:


输入以下语句:

SELECT username FROM user WHERE username LIKE '%b%';    #查询用户名中含b字符的用户名列表

结果:


b.下划线通配符‘_’,一次只能匹配任意一个字符。

同样的,还是同样的表,输入以下sql语句:

SELECT username FROM user WHERE username LIKE '%b_____';    #查询用户名中含b字符为倒数第四各字符(注意这里b后面有三个下划符号)

结果和上面一样:


2.查询空值

数据表创建的时候,设计者可以指定某列中是否可以包含空值(NULL)。空值不同于0.也不同于空字符串。空值一般表示数据未知、不适用或将在以后添加数据。在select语句中使用IS NULL子句,可以查询某字段内容为空的记录。

比如:SELECT username FROM user WHERE age IS NULL;  #查询年龄为空的记录的用户名

同时与IS NULL相反的是,NOT IS NULL,他用来查询某字段不为空的记录:

SELECT username FROM user WHERE age NOT IS NULL;  #查询年龄为空的记录的用户名

3.查询结果不重复

我们在查询的过程中,比如查询用户表中年龄这一字段,重复结果是不可避免的,我们在SELECT语句中加入DISTINCT来解决重复结果:

SELECT DISTINCT age FROM user;

4.分组查询中使用WITH ROLLUP对查询结果进行统计

使用WITH ROLLUP关键字之后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录总和,即统计记录数量。


SELECT storeId,COUNT(*) FROM product GROUP BY storeId WITH ROLLUP;    #对storeId进行分组,并显示其数量

结果为:


由结果可以看到,通过GROUP BY 分组之后,在显示结果的最后面新添加了一行,该行Total列的值正好是上面所有数值之和。

5.多字段分组

所谓的多字段分组,就是在GROUP BY后面添加多个字段,即根据多个字段来进行分组,其原理是先根据第一个字段分组,然后再按第二个字段进行分组。。。依次类推。用四个字概括就是层次分组。

便于理解,可以形象化地以分家为例:

一个家族的太公太婆辈去世,留下了一份遗产,那么如果按照辈分层层均分的话,就是这样:爷爷辈有多少户家庭,就将该遗产均分给每一户爷爷辈,爷爷辈获取了该比例的遗产后,要将自己的获得的均分给儿子辈,依次类推,儿子辈又将他获得的那份均分给他的儿子们即孙子辈,其中每一辈分依次分遗产的过程就好比多字段分组。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YaoDeBiAn/article/details/79976051

mysql复杂查询

一.问题描述:数据库存储了每天发布的文章的信息,但是由于不是每天都有文章发布,可能有一天就没有数据。 需求就是把每一天的文章输出数量都显示,当天无输出则为0。 解决办法:大致思路是想使用left ...
  • a3025056
  • a3025056
  • 2016-11-30 10:05:39
  • 247

手机影音项目笔记(二)-----视频播放处理

完善VideoPlayerActivity public class VideoPlayerActivity extends BaseActivity { private static fi...
  • tianzhu2725
  • tianzhu2725
  • 2016-11-03 15:27:57
  • 516

吴炳锡 - MySQL运维那些事201511

  • 2015年11月27日 10:02
  • 10.06MB
  • 下载

MySQL——查询sql总结:简单查询、连接查询、子查询

简介 在SQL语句中,数据查询语句SELECT是使用频率最高、用途最广的语句。它由许多子句组成,通过这些子句可以完成选择、投影和连接等各种运算功能,得到用户所需的最终数据结果。其中,选择运算是使用SE...
  • Goskalrie
  • Goskalrie
  • 2016-10-25 11:36:02
  • 3263

Mysql中EXISTS关键字用法、总结

在做教务系统的时候,一个学生(alumni_info)有多个教育经历(alumni_education),使用的数据库是mysql,之前使用左链接查询的,发现数据量才只有几万条时,查询就很慢了,早上想...
  • gucapg
  • gucapg
  • 2013-11-20 10:44:17
  • 7312

不要轻易放过不起眼的问题

作者:戴夫·奎克(Dave Quick) 我参与过数以百计的软件开发项目,无一例外都存在这样或那样的隐患,这些问题常常会导致难以预料的后果。问题出现时,虽然个别团队成员会发现一些端倪,但往往由于大多...
  • hejiamian
  • hejiamian
  • 2015-08-17 22:54:43
  • 324

SQL简单查询笔记记录

简单查询是查询出一张表中的所有数据,语法如下:select [distinct] * | 字段 [别名] [,字段[别名]] from 表名称[别名],[ ]代表可选择项注意ORACLE不分大小写,所...
  • dingchenxixi
  • dingchenxixi
  • 2017-03-09 09:46:01
  • 223

Mysql数据库中SET类型字段的查询用法

关于set字段的具体说明这里不再详解,大家可以GG一下。 关于SET字段v
  • hotlinhao
  • hotlinhao
  • 2014-11-03 18:02:55
  • 3326

《高性能MySQL》读书笔记--查询性能优化

对于高性能数据库操作,只靠设计最优的库表结构、建立最好的索引是不够的,还需要合理的设计查询。如果查询写得很糟糕,即使库表结构再合理、索引再合适,也无法实现高性能。查询优化、索引优化、库表结构优化需要齐...
  • xifeijian
  • xifeijian
  • 2015-05-09 20:34:32
  • 8919

MySQL基础笔记(三) 复杂查询

所谓复杂查询,指涉及多个表、具有嵌套等复杂结构的查询。这里简要介绍典型的几种复杂查询格式。一、连接查询连接是区别关系与非关系系统的最重要的标志。通过连接运算符可以实现多个表查询。连接查询主要包括内连接...
  • lisong694767315
  • lisong694767315
  • 2015-07-01 22:27:27
  • 5588
收藏助手
不良信息举报
您举报文章:Mysql笔记一:简单查询中那些不起眼的用法
举报原因:
原因补充:

(最多只允许输入30个字)