数据库函数(新版)

1.查询区间

目录

 常用函数

1.文本函数

时间日期函数

流程控制函数


 2.对查询出的salary进行指定排序方式  order by salary desc  //  acs代表升,是默认的方式.desc表示降序  默认排序方式是升序

3.部门id是升序;对于salary 降序排列  仅针对同一部门有效

 4.排序的依据可以使用结果中列的序号//可读性差

5.sql语句执行顺序

 6.取工资最高前三  先排序再取

7. LIMIT m,n  m表示跳过前m条,n表示限定前几条 可用于分页查询

8.mysql内置函数    mysql中函数的用法:(函数名) 

9.

 常用函数

1.文本函数

        1.用于文本的连接计算 CONCAT()

        2.LENGTH() 计算文本的长度

        3.文本截取函数:left()截取左边的文本 right()截取右边的文本 substr()截取任何的文本

        4.数据库下标从1开始

        5.查询first_name以字母d开头

SELECT *
FROM employees
WHERE LEFT(first_name,1) = 'd'
-- replace(str,替代的部分,用什么替代)  SELECT REPLACE('hello','ll','66')

        

时间日期函数

SELECT CURDATE() -- 获取当前系统日期
SELECT CURTIME() -- 获取当前系统时间
SELECT NOW() -- 获取当前系统的日期时间
SELECT YEAR(NOW()) -- 获取日期的年份
SELECT MONTH(NOW())
SELECT DAY(NOW())
SELECT DAYOFWEEK(NOW())
SELECT DAYOFMONTH(NOW())
SELECT DAYOFYEAR(NOW())
SELECT DATE_ADD('2019-10-12',INTERVAL 1 YEAR ) -- 对指定的日期加一年
SELECT DATE_ADD('2019-10-12',INTERVAL 3 MONTH )
SELECT DATE_ADD('2019-10-12',INTERVAL -3 DAY )
SELECT DATEDIFF('2020-10-13','2019-10-13') -- 计算两个日期之间相隔的天数
 

-- 需求:查询所有2016年入职的员工
SELECT *
FROM employees 
WHERE YEAR(hiredate) = 2016
-------------------------------------
SELECT *
FROM employees  
WHERE hiredate BETWEEN '2016-01-01' AND '2016-12-31'
-- 需求:查询所有已经在公司工作1000天的员工
SELECT *
FROM employees
WHERE DATEDIFF(NOW(),hiredate)>=10000
--
SELECT *
FROM employees
WHERE TO_DAYS(NOW())-TO_DAYS(hiredate)>=10000
-- 查询每个员工的姓名和工作年限
SELECT CONCAT(first_name,last_name) AS full_name,
YEAR(NOW())-YEAR(hiredate) AS work_year
FROM employees
ORDER BY 2 DESC
————————————————
版权声明:本文为CSDN博主「DaiQuan2206」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45935397/article/details/122047960

流程控制函数

if(值1,值2,值3):如果值1描述的条件成立则得到值2否则得到值3
-- 需求:查询每个员工的姓名 部门编号以及原工资和新工资
-- 标准:50号部门翻倍  其他员工+1000
SELECT first_name,department_id,salary,
IF(department_id =50,salary*2,salary+1000) AS new_salary
FROM employees
ifnull(值1,值2):如果为表达式1指定的值为null则取值2 否则取值1本身
-- 需求:查询所有员工的编号和绩效比例
-- 要求如果没有绩效则显示为0.0
-- 第一种写法
SELECT employee_id ,IF(commission_pct IS NULL,0,commission_pct)  commission_pct
FROM employees
-- 第二种写法
SELECT employee_id ,IFNULL(commission_pct,0) AS commission_pct
FROM employees
-- 查询所有员工的工资以及对应的等级
-- 要求:20000以上为A档  15000-20000 为B档 
--  10000-15000 C档 5000-10000 D档  5000以下 E档
-- 在mysql中提供了一个多选一的流程计算函数
--  语法:  case  when 条件1 then 值1 when 条件2 then 值2,....else  值n   end 
-- else可以省略
SELECT first_name,salary,
CASE 
 WHEN salary>=20000 THEN 'A'
 WHEN salary>=15000 THEN 'B'
 WHEN salary>=10000 THEN 'C'
 WHEN salary>=5000 THEN 'D'
 ELSE 'E'
END AS sal_level
FROM employees

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值