当前位置: 首页 > article >正文

[mysql]单行函数的练习

单行函数

SELECT FORMAT(123.123, 2), FORMAT(123.523, 0), FORMAT(123.123, -2);

这里如果n等于或者小于0就自保留整数,和ROUND的四舍五入不太一样.

下面是我们得到一个ip地址的转换,因为我们ip地址会尽量保存为整数格式,类似与加密过程, 以“192.168.1.100”为例,计算方式为192乘以256的3次方,加上168乘以256的2次方,加上1乘以256,再加上 100得到这个数.

我们可以通过下面的函数INET_NTOA来还原回去

SELECT BENCHMARK(count,expr)可以对一个功能执行count次来查看我们的表达式的执行时间,也就是查看效率

SELECT CHARSET('收到撒娇的'),CHARSET(CONVERT('atguigu'USING'GBK'))

这个函数就可以实现字符集的装换,这个因为我们客户端有时候字符集不一样就要进行转化,如果我们约定好的不是utf8,那就要进行装换了.这一章还是很重的,大家必要的时候还是要做一下练习.

单行函数的练习

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

SELECT NOW() FROM DUAL

这里第一题大家只需要记一个就可以,但是其实还有很多可以用的,NOW(),SYSDATE(),CURRENT_TIMESTAMP(),LOCALTIME(),LOCATIMESTAMP()

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

SELECT employee_id,last_name,salary,salary*1.2 AS "new salary" FROM employees

这里第二题记得我买的规范,字段别名用””包裹

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

SELECT last_name,LENGTH(last_name) "name lenth" FROM employees ORDER BY last_name

第3题这里如果我们按照长度排序,就直接用ORDER BY长度排序,所以我们一般函数都会给他起一个别名,我们可以直接用别名排序

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

SELECT CONCAT(employee_id,last_name,salary) OUT_PUT FROM employees

这题的几个字段我们就要连接起来,我们就要用到CONCAT,我们要有一个好习惯,记得大小写,到时候linux也不会有影响

 # 5.查询公司各员工工作的年数、工作的天数,并按工作年数的降序排序

 SELECT T1.last_name

 ,T1.employee_id

 ,IFNULL(YEAR(T2.end_date)-YEAR(T2.start_date),YEAR(NOW())-YEAR(T1.hire_date)) AS "jobyear"

 ,IFNULL(DATEDIFF(T2.end_date,T1.hire_date),DATEDIFF(CURRENT_DATE(),T1.hire_date))

 FROM employees T1 LEFT JOIN job_history T2 ON T1.employee_id=T2.employee_id

 ORDER BY  jobyear DESC

员工表里是有一个字段叫hire_date,就可以用我们DATEDIFF的函数.TO_DAYS(NOW())-TO_DAYS(hire_date)也是可以计算的.

# 6.查询员工姓名,hire_date , department_id,满足以下条件:雇用时间在1997年之后,department_id 为80 或 90 或110, commission_pct不为空

 SELECT T1.last_name

 ,T1.hire_date

 ,T2.department_id

 FROM employees T1 JOIN departments T2

 ON T1.department_id=T2.department_id

 WHERE YEAR(T1.hire_date)>1997

 AND T1.department_id IN (80,90,110)

 AND commission_pct IS NOT NULL

 #7.查询公司中入职超过10000天的员工姓名、入职时间

  SELECT T1.last_name

 ,T1.hire_date

 ,IFNULL(DATEDIFF(T2.end_date,T1.hire_date),DATEDIFF(CURRENT_DATE(),T1.hire_date)) AS jobtime

 FROM employees T1 LEFT JOIN job_history T2 ON T1.employee_id=T2.employee_id

 WHERE IFNULL(DATEDIFF(T2.end_date,T1.hire_date),DATEDIFF(CURRENT_DATE(),T1.hire_date))>10000

 ORDER BY  jobtime DESC

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

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

 SELECT CONCAT(last_name,' earns ',salary,' monthly but wants ',salary*3) AS " Dream salary " FROM employees

 # 9.使用case-when,按照下面的条件

 SELECT T1.last_name,T2.job_id, CASE T2.job_id

                                         WHEN 'AD_PRES' THEN

                                           'A'

  WHEN 'ST_MAN' THEN

                                           'B'

  WHEN  'IT_PROG' THEN

                                          'C'

  WHEN 'SA_REP' THEN

                                           'D'

  WHEN 'ST_CLERK' THEN

                                           'E'

                                         ELSE

                                          'no'

END

FROM employees T1 LEFT JOIN jobs T2 ON T1.job_id=T2.job_id;


http://www.kler.cn/news/368469.html

相关文章:

  • 联想笔记本电脑睡眠后打开黑屏解决方法
  • ML 系列:机器学习和深度学习的深层次总结(17)从样本空间到概率规则概率
  • 基于知识图谱的紧急事故决策辅助系统
  • 尚硅谷redis 第150节答疑 String源码sds
  • 【前端】css样式
  • 音视频同步版本【基于音频】
  • css知识点梳理2
  • 【论文阅读】PGAN
  • 【北京迅为】《STM32MP157开发板嵌入式开发指南》-第六十七章 Trusted Firmware-A 移植
  • 鸿蒙中常见的性能优化
  • 2024.10.24华为(留学生)笔试题解
  • 道路车辆功能安全 ISO 26262标准(9-4)—面向汽车安全完整性等级 (ASIL) 和安全的分析
  • ELK日志收集
  • TortoiseSVN 添加日志模板
  • SQL中实现去重的多种方法
  • VMware 版本不兼容问题及解决方案
  • Spring Boot论坛网站:多用户环境的构建
  • spring 学习路线梳理(一)
  • Apache Seata 新版本集成了 RocketMQ 事务消息
  • Supabase:当开源遇上实时数据库服务
  • 如何防止服务器被渗透攻击
  • 在flask微服务中使用调度器设置定时任务:BackgroundScheduler
  • 怎样找到台式电脑的ip地址?系统不同,方法各异
  • 手机玩黑色沙漠?GameViewer远程玩黑色沙漠教程
  • 采用Excel作为可视化设计器的开源规则引擎 NopRule
  • C# 创建型设计模式之----单例模式