MYSQL笔记_单行函数2

本文介绍了MySQL中的各种函数,包括流程控制(如IF和CASE)、加密解密(如MD5和ENCODE)、版本信息、字符处理(如FORMAT和CONVERT)、日期时间操作(如NOW和BENCHMARK)以及基础数据转换(如INET_ATON)。
摘要由CSDN通过智能技术生成

1,流程处理函数

        二选一

        IF(value,value1,value2)
        value正确输出为value1,错误输出为value2

        SELECT IF(1>0,'YES','NO')
        FROM DUAL;   



        判断是否为NULL  

        IFNULL(value1,value2)
       
是NULL输出为value1,不是输出为value2 



        多选一

        CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2...[ELSE resultn] END
        用法:按照工资多少分别命名为NO123

        SELECT last_name,salary,CASE WHEN salary > 80000 THEN 'NO1' 
                        WHEN salary > 50000 THEN 'NO2'
                        WHEN salary > 100000 THEN 'NO3'
                        ELSE 'LAST' END 'level'
        FROM employees;           
                        


        CASE expr WHEN 常量1 THEN 值1 WHEN 常量1 THEN 值1...[ELSE 值n] END       



2,加密解密函数
        

PASSWORD在mysql8.0中被放弃
        MD5(),SHA()    
        加密不可逆

        SELECT MD5(MYSQL),SHA(MYSQL)
        FROM DUAL;

在mysql8.0中被放弃    
        ENCODE(value,password_seed)
        DECODE(value,password_seed)

        两者互为反函数

        SELECT ENCODE('MYSQL','HELLO'),DECODE(ENCODE('MYSQL','HELLO'),'HELLO')
        FROM DUAL;       



3,MYSQL信息函数


    

  1.     版本号        VERSION()
  2.     服务器连接数        CONNECTION_ID()
  3.     当前命令所在数据库        DATABASE() / SCHEMA()
  4.     当前用户名         USER(),CURRENT_USER(),SYSTEM_USER(),SESSION_USER()
  5.     value自变量的字符集        CHARSET(value) 
  6.     value的比较规则        COLLATION(value)        


4,其他函数
      

        A,四舍五入 

        FORMAT(value,n)四舍五入保留到小数点后n位

        SELECT FORMAT(123.126,2)
        FROM DUAL;        



        B,进制转换


        CONV(value,from,to)from进制转换为to进制

        SELECT CONV(16,10,2),CONV(NULL,10,2)
        FROM DUAL;



        C,IP地址转换    

  
        INET_ATON(ipvalue)将以点分隔的IP转化为一个数字
        INET_NTOA(ipvalue)将数字IP转化为以点分隔的IP

        SELECT INET_ATON('127.0.0.1'),INET_NTOA('2130706433')
        FROM DUAL;    



        D,重复执行,用于测试处理expr需要耗费的时间

       
        BENCHMARK(n,expr)   

        SELECT BENCHMARK(10000,MD5('MYSQL'))
        FROM DUAL;    



        E,修改字符编码


        CONVERT(value USING char_code)修改为char_code

        SELECT CHARSET('tydujtfj'),CONVERT('tydujtfj' FROM 'utf8mb3')
        FROM DUAL;            



 
 练习


 1,显示系统时间


 SELECT NOW(),SYSDATE(),CURRENT_TIMESTAMP(),LOCALTIME(),LOCALTIMESTAMP()
 FROM DUAL;



 2,查询工号,姓名,工资,加薪20%后的结果(new salary)


 SELECT employee_id,first_name,salary,salary *1.2 AS 'new salary'
 FROM employees;



 3,姓名按首字母排序,写出姓名的长度


 SELECT first_name,LENGTH(first_name) length
 FROM employees
 ORDER BY first_name;



 4,查询员工id,name,salary,并作为一个列输出,别名OUT_PUT


 SELECT CONCAT_WS('-',employee_id,first_name,salary) OUT_PUT
 FROM employees;



 5,查询顾客生日年,月,日,按年降序排列


 USE sql_store;
 SELECT LEFT(birth_date,4) AS 'YEAR',SUBSTR(birth_date,6,2) AS 'DAY',RIGHT(birth_date,2)
 FROM customers
 ORDER BY 'YEAR' DESC



 6,生日在1986-01-01年之后的顾客


 SELECT first_name,birth_date
 FROM customers
 WHERE birth_date >'1986-01-01'
 WHERE date_format(birth_date,'%Y-%m-%d') > '1986-01-01'
 WHERE birth_date > STR_TO_DATE('1986-01-01','%Y-%m-%d') 



 7,point超过900的顾客


 SELECT first_name,'point'
 FROM customers
 WHERE DATEDIFF(CURDATE(),'point') > 900
        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值