MySQL:函数,复合查询

函数

内置函数
current_date() 当前日期 2019年7月28日
current_time() 当前时间 15:33:20
current_timestamp() 当前时间戳 2019年7月28日15:33:57
datediff(date1,date2) 两个日期的差时间是天
date_add(‘0000-00-00’,interval n day) 在date上添加时间,可添加year minute second day
date_sub(‘0000-00-00’,interval n day) 在date上减少时间,可添加year minute second day
now()当前日期时间

显示两分钟内发布的消息
select * from 表 where date_add(time,interval 2 miunte)>now()
字符串函数
charset(str)返回字符串字符集
select charset(name) from 表
concat(a,‘str’,b,‘str’)连接字符串
select concat(name, ‘的语文是’,chinese,‘分)as ‘分数’ from 表
将EMP表中ename中有S的替换成’上海’
select replace(ename, ‘S’, ‘上海’) ,ename from EMP;
substring(ename, 2, 2)截取字符串
ucase()大写
lcase()小写
数学函数
绝对值 abs()
向上取整ceiling()
向下取整floor()
保留n位小数format(num,n)
随机数0-1之间 rand()
求长度lenth()

复合查询

查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J
select * form emp where (sal >500 or job=‘MANAGER’)and name like ‘J%’
按照部门号升序而雇员的工资降序排序
select * form emmp order by deptno ,sal desc
使用年薪进行降序排序
select sal*12 as ‘nianxin’ from emp order by nianxin desc
显示工资最高的员工的名字和工作岗位
select name,job from emp order by sal desc limit 1
显示工资高于平均工资的员工信息
select * from emp where sal>(select avg(sal) from emp)
显示每个部门的平均工资和最高工资
select depno,avg(sal),max(sal) from emp group by deptno
多表查询
自连接:在同一张表连接查询
子查询:select empno,ename from emp where emp.empno=(select mgr from emp where ename=‘fo’)
多表查询:select leade.empno,leader.ename frpm leader,worker where leader.empno=worker,mgr and worker.ename=‘fo’
多行子查询
查询和10号部门的工作相同的雇员的信息,不包括10自己
select * from emp
where job in(select distinct job from emp where deptno=10)
and deptno<>10
显示工资比部门30的所有员工的工资高的员工的信息
select * from emp where sal>all(select sal from emp where bumen=30)
查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人
select ename from EMP where (deptno, job)=(select deptno, job from EMP where ename=‘SMITH’) and ename <> ‘SMITH’
合并
union 去掉重复行
union all不会去掉结果集中的重复行。

内外链接

内连接
select 字段 from 表1 [inner] join 表2 on 连接条件 and 其他条件;
select ename, dname from EMP, DEPT where EMP.deptno=DEPT.deptno
select ename, dname from EMP inner join DEPT on EMP.deptno=DEPT.deptno

左外链接 如果联合查询,左侧的表完全显示我们就说是左外连接。
select 字段名 from 表名1 left join 表名2 on 连接条件
如果联合查询,右侧的表完全显示我们就说是右外连接。
select 字段 from 表名1 right join 表名2 on 连接条件;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值