MYSQL 数据库基础(三 流程函数的学习,多行函数相当于统计计算等等、group by的使用、goup by衍生出的having、排序关键字order by、升序ASC、降序DESC、模糊查询等)
流程函数
类似与java中的判断情况 的学习
实际应用:
-- 满足条件执行 第一个逗号后面的 否则执行第二个逗号
SELECT ename,sal,IF(sal<2500,'低于2500','高于2500') as'工资状态' from emp
-- ifnull 如果不为空 就是括号里第一个值,如果为空就是第二个值
select ename,sal,comm,sal+IFNULL(comm,0)as'到手工资=工资加津贴comm' from emp
select ename,sal,
case when sal<2500 then '工资低于2500'
else '工资高于2500'
end as '工资水平'
from emp
-- 多分枝判断语句
select ename ,sal,
case when sal<2000 then '工资小于2000'
when sal<2500 then '工资小于2500但是大于2000'
ELSE '工资大于2500'
end as '工资水平'
from emp
SELECT ename,max(sal)-- 最大工资人名:
from emp-- 最小工资人的全部信息
select *,min(sal)
from emp-- count 是用于记录查询数据的,可以查看表中有多少记录 -----行
select count(*)
from emp-- 平均数
SELECT avg(sal)as'平均工资'
from emp
多行函数通常可以与group by关键字一起使用,group by的作用就是分组
我们也可以称之为 一类一类,比如说查某个部门工资,这样一类一类的 举例说明
-- 查询职位对应 工资情况
SELECT job,MIN(sal)
FROM empGROUP BY job--查询每种职位的最高薪水,每种职位的人数
select job,max(sal),count(*) from emp group by job;--查询每个部门的最高薪水,部门总人数
select job,max(sal),count(*) from emp where deptno is not null group by deptno;
having 是搭配group by来使用了,他和where的使用方法一致,但是此时,
where是使用分组前的 列名来进行条件判断,where中只能写字段名
having 是可以使用group by之后的数据进行查询
--查询每个部门的总人数,
select deptno,count(*) from emp where deptno is not null group by deptno;--查询每个部门的总人数多于5人的部门
select deptno,count(*) from emp where deptno is not null group by deptno
having count(*)>5;
-- where 是对基本表中符合条件的数据进行分组 ,where之后只能放字段(列名)-- having是对分组查询之后的“虚拟表”进行的条件限定,-- having 之后可以放分组函数,也可以放字段(列名)select deptno,count(*) from emp group by deptno
having deptno is not null and count(*) >5;
最后一个关键字叫order by ,排序 ,对查询结果进行排序,升序asc和降序 desc
-- 查询员工的编号,姓名,薪水,按照薪水降序排序
select empno,ename,sal from emp ORDER BY sal desc;-- 查询每种职位的平均薪水,按照薪水降序
select job,avg(sal) from emp group by job order by avg(sal) desc;
-- 查询每个部门的最高薪水,排序薪水小于3000的部门,按照薪水降序select deptno, max(sal)from emp where deptno is not NULL
group by deptno having max(sal)>=3000 order by max(sal) desc;-- 查询员工的编号,姓名,入职时间,入职时间升序
select empno,ename,hiredate from emp order by hiredate asc;
单表查询的语法为:
select ... from ..[where]....[group by]..[having] ...[order by asc/desc];
执行顺序
from where group by select having order by
模糊查询以及一些常用的查询方式
like,between ...and... in(' ',' ')
like只用于字符型
select * from emp where ename='SMITH' -- 等值查询-- 模糊查询,查询的结果不确定,比如说,查询姓名中含有M的员工信息
-- 需要使用通配符 % -->代表0个或多个字符 _ -->代表一个字符
select * from emp where ename like '%M%';-- 查询姓名中第一个字符是M的员工信息
select * from emp where ename like 'M%';-- 查询姓名中第三个字符是M的员工信息
select * from emp where ename like '__M%';还有between...and 相当于 >= and <=
--查询薪水在2000到5000之间的员工信息
select * from emp where sal>=2000 and sal<=5000 order by sal ; -- and是逻辑运算符 “与”
select * from emp where sal>=2000 && sal<=5000 order by sal ;-- MySQL可以,oracle不可以
select * from emp where sal between 2000 and 5000 order by sal;
select * from emp where sal between 5000 and 2000 order by sal; -- 没有查到数据--查询1980年1月1日到1985年12月31日入职的员工信息
select * from emp where hiredate>='1980-1-1' and hiredate<='1985-12-31' order by hiredate;
select * from emp where hiredate between '1980-1-1' and '1985-12-31' order by hiredate;-- in,在指定的集合中选择其一即可,相当于or 或者
-- 查询 职位是职员,销售或者是分析师的员工信息
select * from emp where job='CLERK' OR JOB='SALESMAN' OR JOB='ANALYST' order by job;
select * from emp where job in('CLERK','SALESMAN','ANALYST')order by job;
MYSQL 数据库基础(三 流程函数的学习,多行函数相当于统计计算等等、group by的使用、goup by衍生出的having、排序关键字order by、升序ASC、降序DESC、模糊查询等)相关推荐
- Mysql数据库基础大全
关系型数据库:表 非关系型数据库:不支持连接查询,它的数据是独立设置的 反引号区分Mysql保留字的 列–>字段 decimol(13,2) :浮点数字长度13位小数点后面有两位 AUTO_IN ...
- 数据库升序和降序查询
desc是降序: asc是升序 默认:查询 加上 order by [列名] [方法] 如:升序 select sid from t_s order by sid asc; 降序: select si ...
- Mysql数据库基础知识(五)之:视图、变量、存储过程、函数、流程控制结构
第一部分:Mysql数据库基础知识(一)之 基础查询----分组查询 第二部分:Mysql数据库基础知识(二)之 连接查询----子查询-----分页查询------union联合查询 第三部分:My ...
- MySQL数据库基础(五)——SQL查询
MySQL数据库基础(五)--SQL查询 一.单表查询 1.查询所有字段 在SELECT语句中使用星号""通配符查询所有字段 在SELECT语句中指定所有字段 select fro ...
- MySQL数据库(三):数据库设计与查询语句
MySQL数据库:数据库设计与查询语句 1.1 目录 文章目录 1.1 目录 1.2 数据库基本概念 1.3 实体和实体之间的关系 1.3.1 一对多 1:N 1.3.2 一对一(1:1) 1.3.3 ...
- (19)一篇掌握MySQL数据库基础下 基本操作(外键约束、建表原则、多表查询、子查询)
MySQL数据库基础下 一.修改表--添加外键约束 二.多表之间的建表原则 1.建数据库原则:通常情况下,一个项目/应用建一个数据库 2.多表之间的表原则: (1)一对多:分类和商品 (一个分类对应多 ...
- MySQL数据库基础详解
文章大纲 一.数据库简介 二.Mysql数据库简介 三.Mysql安装与服务启动(Windows版本) 四.Mysql图形化工具 五.Mysql存储引擎精讲 六.Mysql数据类型介绍 七.Mysql ...
- MySQL数据库基础详解(非原创)
文章大纲 一.数据库简介 二.Mysql数据库简介 三.Mysql安装与服务启动(Windows版本) 四.Mysql图形化工具 五.Mysql存储引擎精讲 六.Mysql数据类型介绍 七.Mysql ...
- Linux Mysql 数据库基础
目录 Linux Mysql 数据库基础 一.数据库 数据库简介 数据库的分类 数据库的发展史 数据库系统发展阶段 DBMS 数据库管理系统 数据库管理系统的优点 数据库管理系统的基本功能 数据库系统 ...
最新文章
- 为什么使用mq?具体的使用场景是什么?
- ファイルアップロード関連のjQueryプラグイン10攻略
- 每日英语:Go Ahead, Hit the Snooze Button
- 管理项目的问题跟踪器的提示
- Libelle(容灾)
- 第三章:顺序栈及其应用之三---数制转换
- 编译器——指令的汇编
- matlab环境下图像分形维数的计算,MATLAB环境下图像分形维数的计算_杨书申
- 没有无线网络设备时如何共享无线网络
- access考试素材_access数据库考试试题及答案.doc
- 计算机科学与技术学科带头人,计算机专业学科带头人—陆玉昌教授
- 下一个20年: 从搜索经济到算法经济 (从B站跨年爆红 等想到的)
- DDD 实战 (11):冲刺 1 代码 TDD 实现之道
- 前端需要了解的5G网络知识
- ffmpeg批量从视频中提取出mp3音频
- 视频无损编辑、截取工具
- tcp短连接TIME_WAIT问题解决方法大全(1)——高屋建瓴
- 一键通(手机实现对讲机功能)
- 立根铸魂 崛起数智时代 欧拉部署超300万套
- ORB-SLAM2代码详解08: 局部建图线程LocalMapping