MySQL笔记2--DQL

目录

IFNULL函数与ISNULL函数的区别

进阶三、排序查询

进阶四、常见函数

一、字符函数

二、数学函数

三、日期函数

四、其他函数

五、流程控制函数

二、分组函数


扫描二维码关注公众号,回复: 17297468 查看本文章

IFNULL函数与ISNULL函数的区别

IFNULL函数

功能:判断某字段或表达式是否为null,如果为null返回指定的值,否则返回原本的值。

ISNULL函数

功能:判断某字段或表达式是否为null,如果是,则返回1,否则返回0.

进阶三、排序查询

/*语法:

select 查询列表

from 表

(where 筛选条件)

order by 排序列表 (asc(升序)|desc(降序))

特点:

1、asc代表的是升序,desc代表的是降序。如果不写,默认是升序

2、order by子句中可以支持单个字段、多个字段、表达式、函数、别名

3、order by子句一般是放在查询语句的最后面,limit子句除外

*/

案例1:查询员工信息,要求工资从高到低排序

SELECT

    *

FROM

    employees

ORDER BY salary DESC;

查询结果:

案例2:查询部门编号>=90的员工信息,按入职时间的先后进行排序【添加筛选条件】

SELECT

    *

FROM

    employees

WHERE

    department_id>=90

ORDER BY hiredate;

查询结果:

案例3:按年薪从低到高显示员工的信息和年薪【按表达式排序】

SELECT

    *,

    salary*12*(1+IFNULL(commission_pct,0)) AS 年薪

FROM

    employees

ORDER BY salary*12*(1+IFNULL(commission_pct,0)) ASC;

查询结果:

案例4:按年薪从低到高显示员工的信息和年薪【按别名排序】

SELECT

    *,

    salary*12*(1+IFNULL(commission_pct,0)) AS 年薪

FROM

    employees

ORDER BY 年薪 ASC;

查询结果:

案例5:按姓名的长度显示员工的姓名和工资【按函数排序】

SELECT

    LENGTH(last_name) 字节长度,

    last_name,

    salary

FROM

    employees

ORDER BY 字节长度 ASC;

查询结果:

案例6:查询员工信息,要求先按工资升序,再按员工编号降序【按多个字段排序】

SELECT

    *

FROM

    employees

ORDER BY salary ASC,employee_id DESC;

查询结果:

进阶四、常见函数

/*

概念:类似于Java的方法,将一组逻辑语句封装在方法中,对外暴露方法名

好处:1、隐藏了实现细节;2、提高了代码的重用性

调用: select 函数名(实参列表) 【from 表】

特点:1、叫什么(函数名);2、干什么(函数功能)

分类:1、单行函数。如concat、length、ifnull等

2、分组函数(功能:做统计使用,又称为统计函数、复合函数、组函数)

*/

一、字符函数

1、length   获取参数值的字节个数

2、concat   拼接字符串

3、upper、lower

案例:将姓变大写、名变小写,然后拼接

4、substr/substring  注意:索引从1开始

截取从指定索引处后面的所有字符

截取从指定索引处指定长度的字符

案例:姓名中首字母大写,其他字符小写然后用_拼接,显示出来

5、instr返回子串第一次出现的索引,如果找不到返回0

6、trim

7、lpad用指定的字符实现左填充指定长度

8、rpad用指定的字符实现右填充指定长度

9、replace 替换

二、数学函数

1、round 四舍五入

2、ceil 向上取整,返回>=该参数的最小整数

3、floor 向下取整,返回<=该参数的最大整数

4、truncate 截断 保留小数点后几位

5、mod 取余与%意义一样。计算规则“MOD(a,b)相当于a-a/b*b”

三、日期函数

1、now 返回当前系统日期+时间

2、curdate返回当前系统日期,不包含时间

3、curtime返回当前时间,不包含日期

4、可以获取指定的部分,年、月、日、小时、分钟、秒

5、str_to_date 将日期格式的字符转换成指定格式的日期

6、date_format 将日期转换成字符

四、其他函数

SELECT VERSION();      查看版本号

SELECT DATABASE();   查看当前库

SELECT USER();            查看当前用户

五、流程控制函数

1、if函数      相当于if   else的效果

2、case函数的使用一    相当于Switch case的效果

/*语法

case 要判断的字段或表达式

when   常量1  then  要显示的值1或语句1;

when   常量2  then  要显示的值2或语句2;

.........

else   要显示的值n或语句n;

end

*/

案例:查询员工的工资,要求:部门号=30,显示的工资是1.1倍;部门号=40,显示的工资是1.2倍;部门号=50,显示工资是1.3倍;其他部门,显示的工资是原工资

3、case函数的使用二   类似于多重if

/*

case

when  条件1  then  要显示的值1或语句1;

when  条件2  then  要显示的值2或语句2;

.......

else   要显示的值n或语句n;

end

*/

案例:查询员工的工资的情况。如果工资>20000,显示A级别;如果工资>15000,显示B级别;如果工资>10000,显示C级别;否则显示D级别。

二、分组函数

/*

功能:用作统计使用,又称为聚合函数或统计函数或组函数

分类:sum  求和; avg   平均值;   max  最大值;   min   最小值;  count   计算个数

特点:

1、sum、avg一般用于处理数值类型

      max、min、count可以处理任何类型

2、以上分组函数都忽略null值

3、可以和distinct搭配实现去重的运算

*/

1、简单使用

2、count函数的详细介绍

效率:MYISAM存储引擎下,count(*)的效率高

INNODB存储引擎下,count(*)和count(1)的效率差不多,比count(字段)要高一些

3、和分组函数一同查询的字段有限制

和分组函数一同查询的字段要求是group by后的字段

DATEDIFF函数

  

猜你喜欢

转载自blog.csdn.net/weixin_45502414/article/details/123056482