mysql 很实用的函数解析

数据库数据:

CONCAT和CONCAT_WS:
#把信息用CONCAT连接
SELECT CONCAT (id, ',', username, ',', PASSWORD) AS info FROM my_test;
#使用CONCAT_WS,分割符连接,第一个不会加上,最后一个也不会加上!
SELECT CONCAT_WS(',', id,username,PASSWORD) AS info FROM my_test;
GROUP_CONCAT 和GROUP BY:
#group by 性别,名字和id会显示不全,并且不能用select *
SELECT sex, id, username FROM my_test GROUP BY sex;
#GROUP_CONCAT解决上面的,按照性别分组后,想要选出这个性别下面的所有名字,可以采用这种方式:select要有sex  然后group by也是sex
#如果不用group by  只有n显示男的!  一般都是结合使用
#注意:GROUP_CONCAT里面可以写distinct  order by 这些,还可以决定使用哪种分隔符:username separator ';'
SELECT sex, GROUP_CONCAT(id) AS ids, GROUP_CONCAT(DISTINCT username) AS NAMES FROM my_test GROUP BY sex;

GROUP BY 结合聚合函数:
  • group by 从英文里理解就是分组。必须有聚合函数来配合才能使用,使用时至少需要一个分组标志字段
    要不然没有意义!除非分组的那个列对应数据刚好只有一个!
  • 当使用group by子句时则select中关于表的原始属性名只能是被"by"的属性,如上例中的SNO。若想输出其他属性列,则应在select子句后加上相应的聚合函数(count(*),count(列名),sum(列名),avg(列名),max(列名),min(列名))。其实这也很容易理解,当参照SNO被分组后,每一个SNO的具体实例与其他任意一个属性都变成一对一或一对多的关系,只有通过聚合函数将每组其他想要的属性的多个实例算成一个值,即SNO与其形成一对一的关系后才能列出。而且一旦SQL语句中使用了group by子句后聚合函数都变成分别对每组起作用

顺序:先执行group by分组后再执行聚合函数进行对应的计算

#统计博客种类数量
SELECT username,COUNT(username)  AS 数量 FROM my_test GROUP BY username 
#统计日期归档数量
SELECT DATE_FORMAT(create_time,'%Y年%m月') AS 日期 ,COUNT(create_time) AS 数量 FROM my_test GROUP BY DATE_FORMAT(create_time,'%Y%m')
#计算小王所有成绩的的平均分
SELECT username,AVG(score)  AS 平均分 FROM my_test GROUP BY username


having和where的用法区别
  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

  1. having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。
  2. where肯定在group by 之前。
  3. where后的条件表达式里不允许使用聚合函数,而having可以。
    比如上面的数据:
    SELECT DATE_FORMAT(create_time,'%Y年%m月') AS 日期 ,COUNT(create_time) AS 数量 FROM my_test GROUP BY DATE_FORMAT(create_time,'%Y%m')
    如果要筛选出日期归档后 数量大于1的数据:在group by后面加上HAVING COUNT(create_time)>1,
    一般来说这个having 后面的条件对应的就是前面选出来的字段基础上加上条件
    SELECT DATE_FORMAT(create_time,'%Y年%m月') AS 日期 ,COUNT(create_time) AS 数量 FROM my_test GROUP BY DATE_FORMAT(create_time,'%Y%m') HAVING COUNT(create_time)>1

当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:
查询选修了3门以上课程,且所有课程成绩都高于60分的学生学号及课程数
select sno , count(cno),sum(grade) sum_grade
from sc
where grade > 60
group by sno having count(cno) > 3
order by sum_grade desc

1.执行where xx对全表数据做筛选,返回第1个结果集。

2.针对第1个结果集使用group by分组,返回第2个结果集。

3.针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。

4.针对第3个结集执行having xx进行筛选,返回第4个结果集。

5.针对第4个结果集排序order by。
一条SQL语句个子句的先后作用过程:
from→where→group by→select(含聚合函数)→order by

时间分组格式化函数

按年月日分组:

  • DATE_FORMAT(create_time,'%Y%m') 也可以加上%Y年%m月
  • DATE_FORMAT(create_time,'%Y%m%d')
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容

  • ORACLE自学教程 --create tabletestone ( id number, --序号usernam...
    落叶寂聊阅读 1,081评论 0 0
  • 最近打算采用关系型数据库来理一下公司的运营数据,先拿点东西练手找感觉。下面是几个关于学生课业的表,需要建立一个数据...
    九天朱雀阅读 981评论 0 3
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,456评论 0 13
  • 花了3天时间学习MySql,考了个二级MySql 书籍参考:高等教育出版社《全国计算机等级考试二级教程-MySQL...
    如果仲有听日阅读 1,278评论 4 4
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,231评论 0 7