常用的函数有
1、MySQL 提供几个处理null的函数
1)、ifnull(expr1,expr2):如果expr1不为null,则返回expr1,否则返回expr2;
2)、nullif(expr1,expr2):expr1与expr2相等,则返回null,否则返回expr1;
3)、if(expr1,expr2,expr3):类似于三目运算符,expr1为true,返回expr2,否则返回expr3;
4)、isnull(expr1):判断expr1是否为null,expr1为null,返回true,否则返回false。
2、MySQL case函数
CASE 函数是一个流程控制函数,作用同c++中switch语句。有如下两种使用方法:
1)、用值比较
case value
when compareValue1 then result1
when compareValue2 then result2
……
else result
end
用value依次与各compareValue比较,相等则返回对应的result,并退出case函数。
2)、用条件判断
case
when condition1 then result1
when condition2 then result2
……
else result
end
各condition都为布尔表达式,从上到下判断,为true则返回对应的result,并退出case函数。
使用示例:
SELECT student_name,CASE
WHEN student_id<3 THEN ‘初级班’
WHEN student_id<=6 THEN '中级班'
ELSE ‘高级版'
END
FROM student_table
说明:上面语句选择student_name与student_id两列,只是student_id用CASE 函数替换为对应的文字说明。
3、部分时间日期函数
1)、CURTIME():返回完整的时间类型值,如:’2016-08-10 22:13:30‘;
2)、CURDATE():返回当前日期,时间部分为0,如:’2013-08-10 00:00:00‘;
3)、ADDTIME(time1,time2):time1为time或datetime表达式,time2为time表达式,如:
addtime(’2016-08-10 22:20:00‘,’10:10:10')返回2016-08-11 08:30:10
addtime(’2016-08-10 22:20:00‘,’1 10:10:10')返回2016-08-12 08:30:10
addtime(’22:20:00‘,’10:10:10')返回32:30:10,所以只有时分秒时应注意相加后的值是否大于23:59:59!
注:上面的参数值都可带微秒[.xxxxxx]。
4、部分字符串函数
1)、LEFT(param,length):返回包含param左边的length 个字符的字符串。length 大于param 长度时返回整个param。
2)、RIGHT(param,length):返回包含param右边length 个字符的字符串。同理。
最大用处在于param 可以是选出的某个列的数据,如最基础的用法:
select LEFT(e.name,5) from table1 e;
三、常用分组和组函数
常用组函数:
注:distinct:区别的。指定计算是否包含所有重复值。
1、avg([distinct|all]expr):计算多行expr的平均值,其中expr可以是变量、常量或数据列,但其类型必须是数值型;
2、count(*|[distinct|all]expr):计算多行的记录数。expr同上,但数据类型可以是任意类型;
3、max(expr):计算多行expr的最大值,expr同count中;
4、min(expr);
5、sum([distinct|all]expr):计算多行expr的总和,expr可以是变量、常量或数据列,但数据类型必须是数值型。
group by 分组与having过滤:
语法:
#查询结果按分组列不重复的显示。
select * from tableName group by columnName1[,columnName2,……];
说明:对于MySQL 如果被分组的列对应的其它列有多个对应值,则只显示第一条记录的值。
很多时候,我们查询数据的时候都不会把明细数据查询出来,那样一般意义也不大。更多的时候是根据业务需求,把数据聚合成业务能直接使用的数据。MYSQL中有5个聚合函数,如下面5个,用的最多的还是count和sum,下面分别介绍一下用法。
【COUNT】
在MySQL中,COUNT()函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数,使用方法有以下两种:
求order表中,查询一共有多少条订单数,SQL语句如下↓
【SUM】
在MySQL中,SUM()是一个求总和的函数,返回指定列值的总和。
求order表中所有产品销售数量,SQL语句如下↓
【AVG】
在MySQL中,AVG()函数通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。
求order表中,2021年所有产品的平均单价,SQL语句如下↓
【MAX/MIN】
在MySQL中,MAX()函数是用来返回指定列中的最大值。
求order表中,查询最大的单价价格,SQL预计如下↓
在MySQL中,MIN()函数是用来返回指定列中的最小值。
求order表中,查询最小的单价价格,SQL预计如下↓
【结合GROUP BY】
正常情况下,聚合函数都是搭配着GROUP BY来使用的。可以是按省份聚合、产品聚合、时间聚合等等。下面演示每个品牌最低单价的聚合,其他几个聚合函数使用方式一样,SQL语句如下↓
还可以用ORDER BY排个序,求每个品牌累计销售价格的SQL语句,从高到低排序↓
End
◆ PowerBI开场白
◆ Python高德地图可视化
◆ Python不规则条形图
1.select concat(name, money) from account:拼接字段
2.select length(name) from account:查询字节长度(根据编码集utf-8,一个汉字占三个字节)
3.select ifnull(money, 10) from account:如果money为null,显示10
4.select round(money,1) from account:保留一位小数四舍五入
5.select floor(money) from account:向下取整
6.select ceil(money) from account:向上取整
7.select truncate(money, 1) from account:截断(截取一位小数)
8.select mod (10, 3):取余(相当于select 10%3)
9.select upper(name) from account:将名字变成大写
10.select lower(name) from account:将名字变成小写
11.select substring(name, 1) from account:截取名字下标从1开始的所有字段(注意:mysql的下标都是从1开始)
12.select substring(name, 1, 4) from account:截取名字下标从1开始,长度为4的字段
13.select now():返回当前系统的日期和时间
14.select curdate():返回当前系统的日期
15.select curtime():返回当前系统的时间
16.select date_format(now(), '%Y年%m月%d日') as '当前时间':将时间转换成字符串
17.select count(name) from account:计算name的个数(忽略null)
18.select count( ) from account:计算个数(不忽略null,类似:select count(1) from account)
19.select lpad(name, 10, ' '), money from account:指定字段在左边填充到指定长度(rpad:右边填充)
20.select replace(name, 'an', '*'), money from account:替换指定字段
21.select * from user limit 0,5:查询前5条数据(下标0开始,数量:(page - 1) * size, size)
22.select * from boy union select * from girl:两个结果合成一个(会自动去重,不去重用:union all)
1.select sum(money) from account:求和(忽略null,null和任何值相加都为null)
2.select sum(money) from account:求平均数(忽略null)
3.select max(money) from account:求最大值(忽略null)
4.select min(money) from account:求最小值(忽略null)
5.select name, money, if(money is null, '呵呵', '哈哈') 备注 from account:if语句
6.case条件语句
1.create table copy like user:复制user表(只复制表的字段)
2.create table copy select * from user:复制user表(字段数据一起复制)
3.create table copy select username,age from user:复制user表(复制指定的字段,数据一起复制)
4.create table copy select username,age from user where 0:复制user表(复制指定的字段,数据不复制)
5.alter table 表名 add|drop|modify|change column 列名【列类型 约束】:修改表
1.等值连接:select s.studen, t.teacher from study s, teacher t where s.t_id = t.id(求交集部分)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)