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