MySQL函数学习练习



#函数

/*

函数类似于java的方法

分类:

分组函数:将一组值进行统计,得出一个值

单行函数:将一个值进行处理,得出一个值

 

调用语法:

select 函数名(实参列表);

 

单行函数:

         字符函数

         数学函数

         日期函数

         流程控制函数

*/

 

#一、字符函数

#length 获取字节长度

/*

unicode:固定字节,一个字母和一个汉字都占2个字节

gbk:一个字母占一个字节,一个汉字占2个字节

utf8:一个字母占一个字节,一个汉字占3个字节

 

*/

#一、字符函数

#length 获取字节长度

/*

unicode:固定字节,一个字母和一个汉字都占2个字节

gbk:一个字母占一个字节,一个汉字占2个字节

utf8:一个字母占一个字节,一个汉字占3个字节

 

*/

SELECT LENGTH('abc张三');

SHOW VARIABLES LIKE '%char%';

 

#concat 拼接字符

SELECT CONCAT('hello',',',last_name)
out_put

FROM employees

 

#upper 转换成大写,lower 转换成小写

SELECT UPPER('task');

SELECT LOWER('ABC');

 

#案例:将姓转大写,名转小写,然后拼接

SELECT CONCAT(UPPER(last_name),'
',LOWER(first_name)) 姓名

FROM employees;

 

#instr 获取子串第一次出现的索引,索引从1开始,如果找不到返回0

SELECT INSTR('张三丰爱上了三丰的郭襄','郭襄');

 

#substr  
* 从第几个开始截取   ** 从第几个到第几个截取

SELECT SUBSTR('郭襄爱上了杨过',6);

SELECT SUBSTR('郭襄爱上了杨过',1,2);

 

#lpad左填充、rpad右填充  长度 够了 就不用填充

SELECT LPAD('尹志平爱上了',5,'*');

 

#trim 去前后空格或特殊字符

SELECT LENGTH(TRIM('         小 龙 女                    ')) 美女;

SELECT TRIM('a' FROM 'aaaaaaaqqqqqq小qq龙q女qqqqqqqqqqqqqq')
美女;

 

#二、数学函数

 

#向上取整,返回>=该参数的最小整数

SELECT CEIL(1.1);

select CEIL(-1.1);

#向下取整,返回<=该参数的最大整数

SELECT FLOOR(1.5);

SELECT FLOOR(-1.5);

#四舍五入,先按绝对值四舍五入,然后加正负号

SELECT ROUND(-1.56);

SELECT ROUND(1.537,1);   # 1 保留一位小数

 

#随机数,返回0-1之间的小数,不包含1

SELECT RAND();

 

#返回50-100  a——b  ·
floor(rand()*(b-a+1)+a)

SELECT CEIL(RAND()*50+50);

SELECT FLOOR(RAND()*51+50);

 

#截断    保留几位数  不进行四舍五入

SELECT TRUNCATE(1.99,1);

 

#三、日期函数

#获取当前日期

SELECT NOW();

 

#获取日期,没有时间

SELECT CURDATE();

 

#获取时间,没有日期

SELECT CURTIME();

 

#获取日期的指定部分

SELECT YEAR(NOW());

SELECT MONTH(NOW());

SELECT MONTHNAME(NOW());

SELECT DAY(NOW());

 

SELECT CONCAT(YEAR(NOW()),'年',MONTH(NOW()),'月',DAY(NOW()),'日') 日期;

 

#判断两个日期的差别天数,前者比后者大,返回正数,小返回负数,相等返回0.

SELECT DATEDIFF(NOW(),'2022-8-8');

SELECT DATEDIFF('2017-9-25',NOW());

 

#四、流程控制函数

 

#1.if函数

SELECT IF(100>9,'不错呦','不够大') 备注;

 

 

#2.case语句

 

#语法:

#CASE 

#WHEN 条件1 THEN 显示的值1

#WHEN 条件2 THEN 显示的值2

#...

#ELSE 显示的值n

#END

 

#类似于:

 

#IF(条件1){

#       语句1;

#}ELSE IF(条件2){

#}ELSE{

#

#}

#案例:

SELECT salary,

CASE 

WHEN salary>20000 THEN '购买汽车'

WHEN salary>10000 THEN '购买手机'

WHEN salary>5000 THEN '购买pad'

ELSE '购买棒棒糖'

END 购买资格

FROM employees;

 

 

#3.case语句

#语法:

#

#CASE 字段或表达式

#WHEN 值1 THEN 显示的值1

#WHEN 值2 THEN 显示的值2

#...

#ELSE 显示的值n

#END

#

#类似于:

#switch(变量或表达式){

#

#       CASE1 :语句1;break;

#       ...

#       DEFAULT:语句n;break;

#

#}

 

#案例:查询部门和对应的级别

 

SELECT department_id,

CASE department_id

WHEN 10 THEN 'A'

WHEN 20 THEN 'B'

WHEN 30 THEN 'C'

WHEN 50 THEN 'D'

 

END 级别

FROM employees;

 

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

SELECT NOW();

SELECT year(now());

 

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

SELECT employee_id,last_name,salary
,salary*1.2 "NEW salary"

FROM employees;

SELECT 

 

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

SELECT LENGTH(last_name)
,SUBSTR(last_name,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
',TRUNCATE(salary,0),'  monthly but wants
',TRUNCATE(salary*3,0)) "DREAM SALARY"

FROM employees

WHERE salary=24000;

 

 

#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 job_id,

CASE job_id

WHEN 'AD_PRES' THEN 'A'

WHEN 'ST_MAN' THEN 'B'

WHEN 'IT_PROG' THEN 'C'

WHEN 'SA_REP' THEN 'D'

END grade

FROM employees;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值