mysql 怎么算第二天_mysql 第二天 常用的函数

---   常用的函数

--  日期函数

-- 用date_format将文本'2019-01-01'转换为日期型

select date_format('2019-01-01','%Y-%m-%d'); ##大写y为四位数字的年,小写为两位数字的年

-- 用last_day函数返回当前月份的最后一天的日期

select now();

select last_day(curdate());

-- 用datediff函数计算两个日期相隔天数

select datediff(last_day(curdate()),curdate()); ##第一参数为结束时间,第二位开始时间

-- 字符串函数

-- 用instr函数查找w在hello world短语中出现的字符位置

select instr('cda','c'); ##查找所在位置

-- 用lower函数将HELLO转换为小写

select lower('HELLO');

-- 用upper函数将world转换为大写

-- 用concat函数将两个文本连接在一起 只能用concat函数 ||拼接是在oracle中 &连接是在excel中

select concat('c','da');

-- 用replace函数将hello earth短语中的earth替换为world

select replace('hello.earth','earth','world');

-- 用substr函数提取hello world文本中第三位开始5个字符

select substr('hello world',3,5); ##excal中的mid()函数一样

select mid('hello world',3,5);

-- 用cast函数将fruit表中的f_id整数型转换为字符串型

select cast(f_id as char(9)) from fruit; ##转换类型有一定的局限

-- 分组合并函数

-- 查询每个客户购买了哪几种水果

-- 分组合并函数

-- 查询每个客户购买了哪几种水果

select s_name group concat (f_name)

from fruit

group by s_name;

-- 逻辑函数

-- ifnull 将空值填充为0

select * ,ifnull(f_price,0)

from fruit;

-- if函数

-- 查询f_id,f_name,f_price和价格区间(f_price<10低,10<=f_price<20中,f_price>=20高)

select f_id,f_name,f_price,if(f_price<10,'低',if(f_price>=20,'高','中') as 价格区间

from fruit;

-- 逻辑表达式 case when ... then...else ... end

-- 查询f_id,f_name,f_price和价格区间(f_price<10低,10<=f_price<20中,f_price>=20高)

select f_id,f_name,f_price,case when f_price <10 then '低' when f_price >=20 then '高' else '中' end as 价格区间

from fruit;

单表查询练习

-- 创建雇员表

CREATE TABLE emp1 (

empno INT AUTO_INCREMENT PRIMARY KEY,

ename VARCHAR(15),

job VARCHAR(10),

mgr INT,

hiredate DATE,

sal DECIMAL(7 , 2 ),

comm DECIMAL(7 , 2 ),

deptno INT

);

-- 导入雇员信息

INSERT INTO EMP1 VALUES (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);

INSERT INTO EMP1 VALUES (7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600,300,30);

INSERT INTO EMP1 VALUES (7521,'WARD','SALESMAN',7698,'1981-2-22',1250,500,30);

INSERT INTO EMP1 VALUES (7566,'JONES','MANAGER',7839,'1981-4-2',2975,NULL,20);

INSERT INTO EMP1 VALUES (7654,'MARTIN','SALESMAN',7698,'1981-9-28',1250,1400,30);

INSERT INTO EMP1 VALUES (7698,'BLAKE','MANAGER',7839,'1981-5-1',2850,NULL,30);

INSERT INTO EMP1 VALUES (7782,'CLARK','MANAGER',7839,'1981-6-9',2450,NULL,10);

INSERT INTO EMP1 VALUES (7788,'SCOTT','ANALYST',7566,'1987-4-19',3000,NULL,20);

INSERT INTO EMP1 VALUES (7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);

INSERT INTO EMP1 VALUES (7844,'TURNER','SALESMAN',7698,'1981-9-8',1500,0,30);

INSERT INTO EMP1 VALUES (7876,'ADAMS','CLERK',7788,'1987-5-23',1100,NULL,20);

INSERT INTO EMP1 VALUES (7900,'JAMES','CLERK',7698,'1981-12-3',950,NULL,30);

INSERT INTO EMP1 VALUES (7902,'FORD','ANALYST',7566,'1981-12-3',3000,NULL,20);

INSERT INTO EMP1 VALUES (7934,'MILLER','CLERK',7782,'1982-1-23',1300,NULL,10);

SELECT * FROM emp1;

SELECT COUNT(*) FROM emp1;

-- 1.查询基本工资大于1500的员工信息

select *

from emp

where sal >1500;

-- 2.查询员工姓名不以S开头的任意长度的员工信息

select *

from emp

where ename not like 's%';

-- 3.查询职位为president或manager的员工信息

select *

from emp

where job = 'president' and job = 'manager'

或者

select *

from emp

where job in ('president','manager');

-- 4.查询工资在2000-3000元之间的员工信息

select *

from emp

where sal between 2000 and 3000 ;

-- 5.查询emp表中没有奖金的员工信息

select *

from emp

where comm is null;

-- 6.查询各部门平均工资、最高工资、最低工资、以及员工数量

select deptno,avg(sal),max(sal),min(sal),count(empno)

from emp1

group by deptno;

-- 7.查询平均工资在2000元以上的职位信息,并按照平均工资的降序显示

select job, avg(sal)

from emp1

group by job

having avg(sal)>2000

order by avg(sal) desc;

-- 8.查询各部门manager的平均工资

select job ,acg(sal),deptno

from emp

where job = 'manager'

group by deptno;

-- 9.查询员工姓名、入职日期、试用截止日期和工龄 ##工龄的计算now()还可以用curdate()

select ename,hiredate,date_add(hiredate,interval 3 month),datediff(now(),hiredate)/365

from emp;

-- 10.查询上层管理者工号及其对应的下属员工姓名

select mgr,group_concat(ename) ##group_concat() 分组连接

from emp

group by mgr;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值