我是靠谱客的博主 愤怒水池,最近开发中收集的这篇文章主要介绍mysql中部分语句日期,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

–mysql删除语句
DROP TABLE IF EXISTS dept;
– %匹配0~多个字符 _匹配一个字符
select * from emp where ename like ‘%s%’
select * from emp where ename like ‘s%’
– 第二个字母是o的人员信息
select * from emp where ename like ‘_o%’
–此处@符号表示将该字符后面的一个字符作为真实字符进行转义
select * from emp where ename like ‘_o@%%’ escape ‘@’

– 查询奖金为空的人员信息
select * from emp where comm is null

– 1.查询员工姓名以W开头的员工姓名。
select ename from emp where ename like ‘W%’
– 2.查询员工姓名倒数第2个字符为T的员工姓名。
select * from emp where ename like ‘%T_’
– 3.查询奖金为空的员工姓名,奖金。
select * from emp where comm is null

– 1.查询工资超过2000并且职位是MANAGER,或者职位是SALESMAN的员工姓名、职位、工资
select ename,job,sal from emp where (sal>2000 and job=‘manager’) or job=‘salsman’
– 2.查询工资超过2000并且职位是 MANAGER或SALESMAN的员工姓名、职位、工资。
select * from emp where (sal>2000 and (job ='manager’or job=‘salesman’))
– 3.查询部门在10或者20,并且工资在3000到5000之间的员工姓名、部门、工资。
select ename,sal,DEPTNO from emp where deptno in (10,20) and (sal between 2000 and 5000)
– 4.查询入职日期在81年,并且职位不是SALES开头的员工姓名、入职日期、职位。
select * from emp where hiredate like ‘1981%’
– 5.查询职位为SALESMAN或MANAGER,部门编号为10或者20,姓名包含A的员工姓名、职位、部门编号。
select * from emp where DEPTNO in (10,20)and job in (‘salesman’,‘manager’) and ename like ‘%A%’

– 查询人员信息按照 工资升序 /降序 desc
select * from emp ORDER BY sal desc

– mysql 与其他数据库不一样的地方 comm 如果为空 注意排序是数据的位置
–如果为空的在升序时会排到前面
select * from emp ORDER BY comm desc
– 按照部门编号 从小到大 工资从大到小显示
select * from emp ORDER BY deptno,sal desc
– 1.查询部门在20或30的员工姓名,部门编号,并按照工资升序排序。
– 2.查询工资在2000-3000之间,部门不在10号的
– 员工姓名,部门编号,工资,并按照部门升序,工资降序排序。
select ename,deptno,sal
from emp where sal BETWEEN 2000 and 3000 and deptno !=10
order by deptno ,sal desc
– 3.查询入职日期在82年至83年之间,职位以SALES或者MAN开头的员工姓名,入职日期,职位,并按照入职日期降序排序。
– 每页展示m条数据 显示第n页
– 每页展示三条
select * from emp limit 0,3 – 第一页
select * from emp limit 3,3 – 第二页
select * from emp limit 6,3 – 第三页

– select * from emp limit (n-1)m,m
select count(*) from emp – 数据总数

– 1.查询入职日期最早的前5名员工姓名,入职日期。
– 2.查询工作在CHICAGO并且入职日期最早的前2名员工姓名,入职日期。
– 3.按照每页显示5条记录,分别查询第1页,第2页,第3页信息,要求显示员工姓名、入职日期、部门名称。
– 1.查询入职时间在1982-7-9之后,并且不从事SALESMAN工作的员工姓名、入职时间、职位。
– 2.查询员工姓名的第三个字母是a的员工姓名。
– 3.查询除了10、20号部门以外的员工姓名、部门编号。
– 4.查询部门号为30号员工的信息,先按工资降序排序,再按姓名升序排序。
– 5.查询没有上级的员工(经理号为空)的员工姓名。
– 6.查询工资大于等于4500并且部门为10或者20的员工的姓名工资、部门编号。

–第五章
– 数字
–绝对值,上取整,下取整ROUND(x,y):返回保留小数点后面y位,四舍五入的整数;
– TRUNCATE(x,y):返回被舍弃的小数点后y位的数字x;
– RAND():每次产生不同的随机数;

select abs(-1),CEIL(-0.5),floor(-0.5) ,ROUND(5.4567,0),TRUNCATE(5.4567,1)
– 字符串
– 求长度,注意utf8可以存储全世界的语言,但汉语占三个字节
– CHAR_LENGTH(str):返回字符串str的所包含字符个数;
– LENGTH(str)返回字符串所占字节长度
select CHAR_LENGTH(‘中国’),LENGTH(‘中国’)
select CONCAT(“aaa”,“bbb”,“cccc”)
– emp enamesal
select CONCAT(ename,sal) es from emp
–全部大写,小写输出
select UPPER(“hello HOW ARe you”),LOWER(“hello HOW ARe you”)
–REPLACE(1,2,3)1处写要修改的语句,2写修改的字符串,3写对应修改为,注意此处时所有对应字符都完全修改
–直接是用3替换2
select TRIM(" aa a “),REPLACE(“aa a”,” “,”")
select REPLACE(TRIM(“aaa “),””,"")
select REPLACE(“fuck you”,“fuck”,"*")
–返回一个开始于第二个字符串长度为2 的字符串
select SUBSTR(“abcdefg”,2,2)

–倒叙输出
select REVERSE(“abc”)

日期

select now(),CURDATE(),CURRENT_DATE(),CURRENT_TIME()
select UTC_DATE(),UTC_TIME()
select TIMEDIFF(‘2019-07-09 10:51:21’,‘2019-07-09 10:50:21’)
select DateDIFF(‘2020-07-09’,CURDATE())
select DATE_ADD(now(),INTERVAL 1 DAY)
select DATE_ADD(now(),INTERVAL 2 MONTH)
#提取时间
select hour(now()),MINUTE(now()),SECOND(now())
select EXTRACT(YEAR FROM now())

select DAYOFWEEK(now()),DAYOFMONTH(now()),DAYOFYEAR(now())

select DATE_FORMAT(now(),’%M_%d_%Y’)

#case when 相当于switch
select case 11 when 1 then 1 when 2 then 2 else ‘orthers’ end
–if(boolean ,true,false)如果1条件成立就执行2否则执行3
select if(5>3,‘a’,‘b’)
select comm,NULLIF(comm,1400) from emp

– 1.写一个查询,分别计算100.456 四舍五入到小数点后第2位,第1位,整数位的值。
– 2.写一个查询,分别计算100.456 从小数点后第2位,第1位,整数位截断的值。
– 1.显示所有员工姓名的前三个字符
– 2.显示正好为5个字符的员工的姓名,工资,部门号

– 1.写一个查询,用首字母大写,其它字母小写显示雇员的 ename,
– 显示名字的长度,并给每列一个适当的标签,
– 条件是满足所有雇员名字的开始字母是J、A 或 M 的雇员,
– 并对查询结果按雇员的ename升序排序。(提示:使用length、substr)
select
CONCAT(SUBSTR(ename,1,1),
LOWER(SUBSTR(ename,2,LENGTH(ename))))
from emp
– 2.查询员工姓名中中包含大写或小写字母A的员工姓名。
– 3.显示所有员工的姓名,用a替换所有"A"
– 4.查询部门编号为10或20,入职日期在81年5月1日之后,并且姓名中包含大写字母A的员工姓名,员工姓名长度
– 5.查询每个职工的编号,姓名,工资
– 要求将查询到的数据按照一定的格式合并成一个字符串.
– 前10位:编号,不足部分用填充,左对齐
– 中间10位:姓名,不足部分用
填充,左对齐
– 后10位:工资,不足部分用*填充,右对齐
– 1.查询服务器当前时间
– 2.查询部门10,20的员工截止到2000年1月1日,工作了多少个月,入职的月份。
– 3.如果员工试用期6个月,查询职位不是MANAGER的员工姓名,入职日期,转正日期,入职日期是第多少月,第多少周
– 1.计算2000年1月1日到现在有多少月,多少周(四舍五入)。
– 2.查询员工ENAME的第三个字母是A的员工的信息(使用2个函数)。
– 3.使用trim函数将字符串‘hello’、‘ Hello ’、‘bllb’、‘ hello ’分别处理得到下列字符串ello、Hello、ll、hello。
– 4.将员工工资按如下格式显示:123,234.00 RMB
– 查询员工的姓名及其经理编号,要求对于没有经理的显示“No Manager”字符串。
– 6.将员工的参加工作日期按如下格式显示:月份/年份。
– 7.在员工表中查询出员工的工资,并计算应交税款:如果工资小于1000,税率为0,如果工资大于等于1000并小于2000,税率为10%,如果工资大于等于2000并小于3000,税率为15%,如果工资大于等于3000,税率为20%。
– 8.创建一个查询显示所有雇员的 ename和 sal。格式化sal为 15 个字符长度,用 $

– 多表链接
– 用户信息及 工作所在地 等值链接
select t1.deptno from emp t1,dept t2 where t1.deptno=t2.deptno
– 显示用户姓名 工资 工资级别 不等值链接
select ename,sal,salgrade.GRADE
from emp,salgrade
where emp.SAL BETWEEN salgrade.LOSAL and salgrade.HISAL

– 查询每个员工的姓名和直接上级姓名
– 自身链接 将一个表根据业务条件抽象成多张表进行链接
select employer.ename ,manager.ename
from emp employer,emp manager
where employer.mgr=manager.empno

– sql99标准
– 笛卡尔积
select * from emp cross join dept
– 自然连接 自然而然的就连接了
– 列名相同 且数据类型相同 自动进行等值链接
select * from emp NATURAL join dept
– using子句 可以属性不相同
select * from emp join dept using(deptno)
– on字句 --实现降低耦合性 里面只写表连接条件
select * from emp join dept on(emp.deptno=dept.deptno)
select * from emp join dept where emp.deptno=dept.deptno
– 查询工资高于1000的员工信息及工作所在地信息
select * from emp join dept on(emp.deptno=dept.deptno)
where emp.sal>1000

– emp dept
select * from emp join dept on(emp.deptno=dept.deptno)
– 如何显示40部门 外链接
–右外连接和左外链接
select * from emp RIGHT OUTER join dept on(emp.deptno=dept.deptno)
select * from dept left OUTER join emp on(emp.deptno=dept.deptno)

– 1.写一个查询,显示所有员工姓名,部门编号,部门名称。
– 2.写一个查询,显示所有工作在CHICAGO并且奖金不为空的员工姓名,工作地点,奖金
– 3.写一个查询,显示所有姓名中含有A字符的员工姓名,工作地点。
– 1.查询每个员工的编号,姓名,工资,工资等级,所在工作城市,按照工资等级进行升序排序。
– 1.查询所有工作在NEW YORK和CHICAGO的员工姓名,
– 员工编号,以及他们的经理姓名,经理编号。
select employer.empno,employer.ename,manager.empno,manager.ename
from emp employer,emp manager,dept
where employer.mgr=manager.empno
and employer.deptno=dept.deptno – 员工与部门表关联条件
and dept.loc in(‘new york’,‘chicago’)
– 使用SQL-99写法,完成如下练习
– 1.创建一个员工表和部门表的交叉连接。
– 2.使用自然连接,显示入职日期在80年5月1日之后的员工姓名,部门名称,入职日期
– 3.使用USING子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点
– 4.使用ON子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点,薪资等级
select emp.ename,dept.dname,dept.loc,salgrade.GRADE
from emp join dept on(emp.deptno=dept.deptno)
join salgrade on(emp.SAL BETWEEN salgrade.LOSAL and salgrade.HISAL)
where dept.LOC=‘chicago’
– 5.使用左连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。
利用left outer语句表示左外连接
select employer.ename,manager.ename
from emp employer
left outer join emp manager
on(employer.mgr=manager.empno)
– 6.使用右连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。
– 1.显示员工SMITH的姓名,部门名称,直接上级名称
select employer.ename,dept.dname,manager.ename
from emp employer,emp manager ,dept
where employer.mgr=manager.empno
and employer.deptno=dept.deptno
and employer.ename=‘smith’
– 2.显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4级。
– 3.显示员工KING和FORD管理的员工姓名及其经理姓名。
select employer.ename,midmanager.ename,manager.ename
from emp midmanager
join emp employer on(midmanager.empno=employer.mgr)
left outer join emp manager on(midmanager.mgr=manager.empno)
where midmanager.ename in(‘king’,‘ford’)
– 4.显示员工姓名,参加工作时间,经理名,参加工作时间,要求参加时间比经理早

– 1.查询每个员工的编号,姓名,工资,工资等级,所在工作城市,按照工资等级进行升序排序。
select empno,ename ,sal,grade,loc from emp,salgrade,dept where emp.DEPTNO =dept.DEPTNO and emp.sal BETWEEN losal and hisal order by grade

–1.查询所有工作在NEW YORK和CHICAGO的员工姓名,员工编号,以及他们的经理姓名,经理编号。
select per.ename,per.empno,ma.ename,ma.empno
from emp per,emp ma ,dept
where per.mgr=ma.empno and per.deptno=dept.deptno and ( loc=‘NEW YORK’ or loc=‘CHICAGO’)

– 1.创建一个员工表和部门表的交叉连接。

– 2.使用自然连接,显示入职日期在80年5月1日之后的员工姓名,部门名称,入职日期

– 3.使用USING子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点
– 4.使用ON子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点,薪资等级
select emp.ename,dept.dname,dept.loc,salgrade.grade
from emp join dept on (emp.deptno=dept.deptno )
join salgrade on(emp.sal between salgrade.losal and salgrade.hisal)
where dept.loc=‘chicago’
– 5.使用左连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。
–利用左外连接
select employer.ename ,manager.ename from emp employer left outer join emp manager on(employer.mgr=manager.empno)
– 6.使用右连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。

– 1.显示员工SMITH的姓名,部门名称,直接上级名称
select per.ename,dept.dname,ma.ename
from emp per,emp ma,dept
where per.mgr=ma.empno
and dept.deptno=per.deptno
and per.ename=“smith”
– 2.显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4级。
– 3.显示员工KING和FORD管理的员工姓名及其经理姓名。
select employer.ename,midmanager.ename,manager.ename
from emp midmanager join emp employer on (midmanager.empno=employer.mgr)
left outer join emp manager on (midmanager.mgr=manager.empno)
where midmanager.ename in (‘king’,‘ford’)
– 4.显示员工姓名,参加工作时间,经理名,参加工作时间,要求参加时间比经理早。

–第七章 分组函数
–员工开支共多少钱
select sum(sal),avg(sal),max(sal),min(sal) from emp

–每个部门最高最低工资
select deptno,max(sal),min(sal) from emp group by deptno

–在select列表中只能出现 查询数据和group by 所包含的属性,否则如果select显示的属性中有和group by不是一对一关系的属性时会产生脏数据

–查询每个部门每个岗位的工资总和
select sum(sal) from emp group by deptno,job

–每个组内最高薪水大于2900才输出
select deptno,max(sal) from emp group by deptno having max(sal)>2900

– 1.通过FROM子句中找到需要查询的表;
– 2.通过WHERE子句进行非分组函数筛选判断;
– 3.通过GROUP BY子句完成分组操作;
– 4.通过HAVING子句完成组函数筛选判断;
– 5.通过SELECT子句选择显示的列或表达式及组函数;
– 6.通过ORDER BY子句进行排序操作。

–显示和雇员7369从事相同工作并且工资大于雇员7876的雇员的姓名和工作。
SELECT * FROM emp
WHERE job =
(SELECT job FROM emp WHERE empno = 7369)
AND sal >
(SELECT sal
FROM emp
WHERE empno = 7876)

–查询工资最低的员工姓名,岗位及工资

–查询部门编号不为10,且工资比10部门任意一名员工工资高的员工编号,姓名,职位,工资。
select *
from emp where deptno!=10 and sal >any(select sal from emp where deptno=10)

–查询部门编号不为20,且工资比20部门所有员工工资高的员工编号,姓名,职位,工资。

select * from emp where deptno!=20 and sal >all(select sal from emp where deptno=20)

– 1.查询部门20的员工,每个月的工资总和及平均工资。
– 2.查询工作在CHICAGO的员工人数,最高工资及最低工资。
– 3.查询员工表中一共有几种岗位类型。

–查询比自己部门平均工资高的员工姓名,工资,部门编号,部门平均工资
– 主句中部门编号放到子句中
select ename,sal,deptno ,(select avg(sal) from emp t where t.deptno=k.deptno)
from emp k
where sal >(select avg(sal) from emp t where t.deptno=k.deptno)

select ename,sal,emp.deptno
from emp,(select avg(sal) avgsal,deptno from emp group by deptno )t
where emp.deptno=t.deptno and sal>t.avgsal

– 1.查询每个部门的部门编号,部门名称,部门人数,最高工资,最低工资,工资总和,平均工资。
select emp.deptno,dname,COUNT(empno),MAX(sal),MIN(sal),SUM(sal),AVG( sal)
from emp,dept
where emp.deptno=dept.deptno
group by deptno
– 2.查询每个部门,每个岗位的部门编号,部门名称,岗位名称,部门人数,最高工资,最低工资,工资总和,平均工资。
– 3.查询每个经理所管理的人数,经理编号,经理姓名,要求包括没有经理的人员信息。

select mana.empno,mana.ename,count(emo.empno)
from emp mana right outer join emp emo on(emo.mgr=mana.empno)
group by mana.empno

– 5.显示经理号码和经理姓名,这个经理所管理员工的最低工资,没有经理的KING也要显示,不包括最低工资小于3000的,按最低工资由高到低排序。
select mama.empno,mama.ename,min(emo.sal) minsal
from emp mama
right outer join emp emo
on(emo.mgr=mama.empno)
GROUP BY mama.empno
having min(emo.sal)>=3000
order by minsal desc

–查询不是经理的员工姓名。
–利用排除select

create table emp1 as select * from emp

–创建索引
create table index1(
id int,
name varchar(20),

最后

以上就是愤怒水池为你收集整理的mysql中部分语句日期的全部内容,希望文章能够帮你解决mysql中部分语句日期所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部