3.MySQL——单行函数

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

好处:1.隐藏了实现细节

           2.提高了代码的重用性

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

           2.分组函数:它是用来做统计使用,又叫统计函数、聚合函数、组函数。

字符函数:

 

数学函数:

日期函数:

注意:1. str_to_date:将日期格式的字符转换成指定格式的日期

               如:str_to_date('9-13-1999','%m-%d-%Y')                         1999-09-13

          2. date_format:将日期转换成字符

               如:date_format(‘2018/6/6’,‘%Y 年%m 月%d 日’)               2018年06月06

 

 

案例:查询入职日期为1992--4-3的员工信息
          SELECT * FROM employees WHERE hiredate = '1992-4-3'

          SELECT * FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%c-%d %Y')

案例:date_format 将日期转换成字符

          SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS out_put

案例:查询有奖金的员工名和入职日期(xx月/xx日 xx年)
         SELECT last_name,DATE_FORMAT(hiredate,'%m月/%d日 %y年')   入职日期
         FROM employees
         WHERE commission_pct IS NOT NULL;

 

其他函数:

                      SELECT VERSION():查看数据库版本

                      SELECT DATABASE():查看当前数据库的信息

                      SELECT USER():查看当前用户

流程控制函数:

1.if函数:

语法:SELECT IF(表达式,true时返回的值,false返回的值)

案例:SELECT IF(10<5,'大','小')

           SELECT last_name,commission_pct,IF(commission_pct IS NULL,'没奖金,呵呵','有奖金,嘻嘻') 备注
           FROM employees

2.case函数:

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倍,其他部门,显示的工资为原工资

               SELECT salary 原始工资,department_id,
               CASE department_id
               WHEN 30 THEN salary*1.1
               WHEN 40 THEN salary*1.2
               WHEN 50 THEN salary*1.3
               ELSE salary
               END AS 新工资                (
这里会出现新工资这一列,将获得的结果存入该列中
               FROM employees

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

        语法:case 
                  when 条件1 then 要显示的值1或语句1               (
前面的条件结果为true时,返回的结果
                  when 条件2 then 要显示的值2或语句2
                  ......
                 else 要显示的值n或语句n
                 end

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

                 SELECT salary,
                 CASE 
                 WHEN salary>20000 THEN 'A'
                 WHEN salary>15000 THEN 'B'
                 WHEN salary>10000 THEN 'C'
                 ELSE 'D'
                 END AS 工资级别
                 FROM employees;

 

习题:

1. 显示系统时间(注:日期+时间)

SELECT NOW()

2. 查询员工号,姓名,工资,以及工资提高百分之 20%后的结果(new salary)

SELECT employee_id,last_name,salary,salary * 1.2 "new salary" FROM employees        (中间有空格用双引号)

3. 将员工的姓名按 首字母排序,并写出姓名的长度(length)

SELECT LENGTH(last_name) 长度, SUBSTR(lastname,1,1) 首字符, last_name,

FROM employees

ORDER BY 首字符

4. 做一个查询,产生下面的结果

                                                       <last_name> earns <salary> monthly but wants <salary*3>

                                                   Dream Salary
                              King earns 24000 monthly but wants 72000

SELECT CONCAT(last_name,"earns",salary,"monthly but wants",salary*3) AS "Dream Salary"           (分开来的用双引号)

FROM employees

WHERE last_name=King

5.使用 case-when,按照下面的条件:
                                                              job                      grade
                                                              AD_PRES              A
                                                             ST_MAN                 B
                                                             IT_PROG                C
                                                             SA_REP                  D
                                                             ST_CLERK             E

产生下面的结果:

        Last_name             Job_id             Grade
             king           AD_PRES                 A

SELECT last_name AS Last_name,job_id AS Job_id

CASE job_id

WNEN  `AD_PRES`  THEN  `A`

WNEN  `ST_MAN `  THEN  `B`

WNEN  ` IT_PROG  `  THEN  `C`

WNEN  ` SA_REP     `  THEN  `D`

WNEN  `ST_CLERK   THEN  `E `

END AS Grade

FROM employees

WHERE job_id=`AD_PRES`

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值