MySQL之SELECT,WHERE,GROUPBY及聚合函数详解
   第⼀部分讲述了关于MySQL以及HeidiSQL软件的安装,不熟悉的朋友可以参考⼀些 ,—>>,那么本部分开始SQL语句的学习。为了⽅便讲解,本部分利⽤MySQL的实例数据库,地址,下载完以后解压在你熟悉的⽂件夹即可。
1. 导⼊数据库
    如果你喜欢在终端进⾏SQL操作,那么只需要打开MySQL终端,就着这样的样⼦
接下来我演⽰⼀下怎么将数据库导⼊我们的MySQL终端。
    第⼀步:建⽴数据库(数据库的名字随便起);第⼆步:导⼊实例数据库
语句如下:
CREATE DATEBASE IF NOT EXISTS yiibaidb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
groupby是什么函数
use yiibaidb;
source C:/Users/Administrator/Desktop/yiibaidb.sql;
注:SQL语句末端以“;”结束。以上语句完成以后回车就会陆续读取SQL语句,这个过程稍长,语句⽐较多,稍等⽚刻即可。读取完成以后,我们可以简单的测试⼀下结果,可以输⼊以下语句
select city,phone,country from `offices`;
   最后的结果显⽰为
同理,若是其他操作,完全可以类似以上进⾏操作,前提是你的SQL语⾔是对的。由于个⼈⽐较喜欢在HeidiSQL软件上操作,所以后续的讲解依然采取HeidiSQL,只是界⾯发⽣变化,SQL语⾔完全⼀样,就看各位看官喜欢哪个版本的了。下⾯介绍⼀下如何⽤HeidiSQL来录⼊实例数据库了。
2. HeidiSQL录⼊数据库
   ⾸先依然是打开你的软件,这⾥假如你会了,不会的请看基础⼀,进⼊界⾯以后点击⽂件 -> 加载SQL⽂件,然后将你的实例数据库打开就ok了,将界⾯刷新⼀下,就加载上了,如图所⽰
类似在终端上的操作,依然将表offices的数据提取出来,之前也说了SQL语句是完全⼀样的,so。。。
   上⾯的斜三⾓是执⾏语句,下⾯的斜三⾓是书写SQL语句。可以发现出现了和终端⼀样的效果,但是样⼦是不是好看很多啊,哈哈哈。下⾯将重点介绍SQL语⾔。
3. SQL语⾔
SQL语⾔对于代码的注释⼀⼀般单⾏注释⽤–,例如
SELECT * FROM DATABASE    --在这⾥加注释即可
若是多⾏注释,采⽤以下形式
/*注释
注释*/
SELECT * FROM DATABASE
3.1 查询语句 SELECT…FROM…
    这个语句从意思上就可以直接看出,表⽰的意思就是从⼆维表中选择⼀些列,例如select city,phone,country from offices;这句话,表⽰的就是从offices中选择city,phone,country
  需求1:提取重复值
    语法SELECT DISTINCT 列名称 FROM 表名称,返回的就是唯⼀不同的值
  需求2:提取前N条记录
    语句(基于SQL):SELECT TOP N条* FROM 表名称
   尤其:select top X * from table_name order by colum_name desc语句可以达到按colum_name属性降序排序查询前X条记录,“order by” 后紧跟要排序的属性列名,其中desc表⽰降序,asc表⽰升序(默认也是升序⽅式),综合上⾯,select top n * from (select top m * from table_name order by column_name ) a order by column_name desc可以达到查询第N到M条记录。常⽤的分页也是这种⽅式
语句(基于MySQL):select * from 表名称 limit 0,N,通常0是可以省略的,直接写成 limit N。0代表从第0条记录后⾯开始,也就是从第⼀条开始
   需求3:进⾏语句的判断
需要⽤到CASE语句,⼀般有两种表⽰⽅式为:
----case表达式1
select ID,TestType,
CASE  TestType WHEN '主体结构'  then '1'
WHEN '钢结构'  then '2'
WHEN '建筑幕墙'  then '3'
ELSE '0'
end as '类型'
from LbtTestTypes
----case表达式2
select ID,TestType,
CASE  WHEN TestType='主体结构'  then '1'
WHEN TestType='钢结构'  then '2'
WHEN TestType='建筑幕墙'  then '3'
ELSE '0'
end as '类型'
from LbtTestTypes
3.2 WHERE判断语句
   在SELECT的时候通常会添加WHERE判断语句进⾏筛选,例如对于商业存放的数据,我们需要特定的数据的时候,就需要添加WHERE 进⾏筛选。下⾯我将利⽤实例数据库为⼤家演⽰⼀下如何运⽤,假如我们只想从employees表中获取销售代表员⼯,那么就有
相同的道理,对于相应的添加判断语句,会得到我们所需要的结果。除此之外,⽤在判断语句⾥⾯的⼀些常⽤运算符有
运算符描述
=等于号,⼏乎任何数据类型都可以使⽤它
<>或!=不等号
<⼩于号,通常使⽤数字和⽇期/时间数据类型。
>⼤于号
<=
⼩于或等于号>=⼤于或等于
运算符描述
例如我们要使⽤不等于(!=或者<>)运算符来获取不是销售代表的其它所有员⼯:
⼤家可以根据我的操作⾃⼰改动⼀些条件,进⾏偏判断。
3.3 分组数据GROUP BY
语法:
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
   GROUP BY 句法解析,group by语法可以根据给定数据列的每个成员对查询结果进⾏分组统计,最终得到⼀个分组汇总表。SELECT ⼦句中的列名必须为分组列或列函数。列函数对于GROUP BY⼦句定义的每个组各返回⼀个结果。简⽽⾔之就是根据某个类进⾏重新分组
成型的表,例如
   那这个结果与3.2中的图⽚结果⽐较⼀下,就会发现该sql⾸先会按照class进⾏去重查询,并分组新的表,然后输出的时候将每⼀个分组的第⼀个记录组合在⼀起形成了最终的结果。我们还可以发现,最终的记录是按照class进⾏排序的。这样的顺序并不可靠,具体形成的原因恐怕需要在Mysql的底层原理中到答案。
GROUP BY 与HAVING ⼀起使⽤
⾸先HACING作为⼀个判断条件,⽤于⼆次筛选。例如
   第⼀次是
以group by筛选类lastname进⾏去重排序,形成新的表,加⼊having条件进⾏⼆次筛选,例⼦是名字为Tom的信息,此例⼦仅作为⼤家对⼆者运⽤的理解。
3.4 ORDER BY 排序查询语句
ASE升序、DESE降序
⽰例:
   select * from 学⽣表 order by 年龄 查询学⽣表信息、按年龄的升序(默认、可缺省、从低到⾼)排列显⽰,也可以多条件排序、 ⽐如order by 年龄,成绩 desc,按年龄升序排列后、再按成绩降序排列。⼤家不妨⾃⼰联系⼀下,group by和order by连⽤的效果。
4.MySQL函数
4.1 聚合函数
   MySQL聚合函数 - 提供最常⽤的MySQL聚合函数的简要概述。
   avg()函数 - 计算⼀组值或表达式的平均值。
   count()函数 - 计算表中的⾏数。
   instr()函数 - 返回⼦字符串在字符串中第⼀次出现的位置。
   sum()函数 - 计算⼀组值或表达式的总和。
   min()函数 - 在⼀组值中到最⼩值。
   max()函数 - 在⼀组值中到最⼤值。
   group_concat()函数 - 将字符串从分组中连接成具有各种选项(如DISTINCT,ORDER BY和SEPARATOR)的字符串。
   MySQL标准偏差函数 - 显⽰如何计算⼈⼝标准偏差和样本标准偏差。
4.2 字符串函数
   ()函数 - 将两个或多个字符串组合成⼀个字符串。
   length()函数&char_length()函数 - 以字节和字符获取字符串的长度。
   left()函数 - 获取指定长度的字符串的左边部分。
   replace()函数 - 搜索并替换字符串中的⼦字符串。
   ()函数 - 从具有特定长度的位置开始提取⼀个⼦字符串。
   trim()函数 - 从字符串中删除不需要的字符。
   find_in_set()函数 - 在逗号分隔的字符串列表中到⼀个字符串。
   format()函数 - 格式化具有特定区域设置的数字,舍⼊到⼩数位数。
4.3 时间函数
   ()函数 - 返回当前⽇期。
   ()函数 - 计算两个DATE值之间的天数。
   day()函数 - 获取指定⽇期⽉份的天(⽇)。
   date_add()函数 - 将时间值添加到⽇期值。
   date_sub()函数 - 从⽇期值中减去时间值。
   date_format()函数 - 根据指定的⽇期格式格式化⽇期值。
   ()函数 - 获取指定⽇期的⼯作⽇的名称。
   ()函数 - 返回⽇期的⼯作⽇索引。
   extract()函数 - 提取⽇期的⼀部分。
   now()函数 - 返回当前⽇期和时间。
   month()函数 - 返回⼀个表⽰指定⽇期的⽉份的整数。
   _to_date()函数 - 将字符串转换为基于指定格式的⽇期和时间值。
   ()函数 - 返回当前⽇期。
   ()函数 - 计算两个TIME或DATETIME值之间的差值。
   ()函数 - 计算两个DATE或DATETIME值之间的差值。
   week()函数 - 返回⼀个⽇期的星期数值。
   weekday()函数 - 返回⼀个⽇期表⽰为⼯作⽇/星期⼏的索引。
   year()函数 - 返回⽇期值的年份部分。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。