mysql 简单查询和聚合查询部分方法

– 1.查询特定的列
– 实例:查询出所有员工的编号和姓名
select eid,ename from emp;
– 练习:
select ename,sex,birthday,salary from emp;

–2.查询所有的列
select * from emp;
select eid,ename,sex,birthday,salary,deptid from emp;

– 3.给列起别名名:使用as设置别名,as关键字可以省略
– 实例:查询出所有员工的编号,姓名,使用一个字母作别名
select eid as a,ename as b from emp;
– 练习
select ename as 姓名,sex as 性别,salary as 工资 from emp;
– 简写:删除as
select ename 姓名,sex 性别,salary 工资 from emp;

--4. 显示不同的记录

– 示例:查询出员工都分布在那些部门
select distinct deptid from emp;
– 练习:查询出都有那些性别的员工
select distinct sex from emp;

–5.查询时执行计算
–示例: 查询出所有员工的姓名及其年薪
select ename,salary*12 as 年薪 from emp;

– 练习:
select ename 姓名,(salary+2000)*12+30000 年薪 from emp;

– 6.查询的结果排序
– 默认排序规则是升序,如果按照字符串排序,是按照字符编码排列
– asc->ascendant 升序的 默认就是升序排列
– 示例:查询出所有的部门,结果按照部门编号升序排列
select * from dept order by did asc;
– 示例:查询出所有的部门,结果按照部门编号升序排列
– desc->descendant 降序的
– desc->describe 描述
select * from dept order by did desc;
– 练习:查询出所有的员工,结果按照工资的降序排列
select * from emp order by salary desc;
– 练习 查询出所有的员工结果按照年龄从大到小排列
select * from emp order by birthday asc;
– 练习: 查询出所有的员工,结果按照姓名的升序排列
select * from emp order by ename; – 升序可以省略asc

– 示例:查询出所有的员工,结果按照工资降序排列,如果工资相同按照姓名排列
select * from emp order by salary desc,ename;
– 练习:查询出所有的员工,要求结果按照性别的升序排列,如果性别相同按照年龄从大到小排列
select * from emp order by sex,birthday;

– 7.条件查询
– 示例:查询出编号为5的员工
select * from emp where eid=5;
– 练习:查询姓名为King的员工
select * from emp where ename=‘King’;
– 练习:
select * from emp where sex=0;
select * from emp where deptid=20;
select * from emp where salary>=8000 order by salary asc;

– 比较运算符:> < >= <= = !=(不等于)
– 练习:查询出不在20号部门的员工
select * from emp where deptid!=20; – 没有找到为null的
– 练习:查询出没有明确出部门的员工
select * from emp where deptid is null;
– 练习:查询出有明确部门的员工
select * from emp where deptid is not null;

– is null 查找值为null的
– is not null 查找值不为null的
– 练习 查询出工资在8000~10000之间的员工有哪些
select * from emp where salary>=8000 && salary<=10000;
– 练习:8000以下男员工
select * from emp where sex=1 && salary<8000;
select * from emp where sex=1 and salary<8000; – 另一种写法
– 练习: 查询出10000以上或者8000以下的员工有哪些
select * from emp where salary>10000 || salary<8000;
– 练习:查询出20号部门或者30号部门的员工有哪些
select * from emp where deptid=20 || deptid=30;
select * from emp where deptid=20 or deptid=30; – 另一种写法
select * from emp where deptid in(20,30);
– 练习:查询出不再20号部门并且不在30号部门的员工
select * from emp where deptid not in(20,30);

– 练习
select * from emp where salary>=6000 && salary<=10000 && sex=1 order by salary desc;

– 8.模糊条件查询
– 示例:查询出姓名中含有字母e的员工
– % 匹配符号,匹配任意个字符 >=0
select * from emp where ename like ‘%e%’;
– 练习:查询出姓名中以e结尾的员工
select * from emp where ename like ‘%e’;
– _ 匹配符号,匹配任意一个字符
select * from emp where ename like ‘%e_’;

– 9.分页查询

– 练习 :假设每页显示5条数据,查询前4页
– 第一页
select * from emp limit 0,5;
– 第二页
select * from emp limit 5,5;
– 第三页
select * from emp limit 10,5;
– 第四页
select * from emp limit 15,5;

-- 注意事项 limit后不能写运算,必须是数字,不能加引号。

– 1.聚合查询,需要一组聚合函数
– count() sum() avg() max() min()
– 数量 总和 平均 最大 最小
– 示例: 查询出所有员工的数量
select count(*) from emp;
select count(eid) from emp; – 结果16
select count(deptid) from emp; – 结果15 null 统计不了,推荐使用主键列 主键列不允许为空
select distinct deptid from emp;
– 统计有几个部门
select count(distinct deptid) from emp;

– 查询出所有女员工的工资总和
select sum(salary) from emp where sex=0;
– 练习:查询出20号部门的平均工资
select avg(salary) from emp where deptid=20;
– 练习: 查询出10号部门的最高工资
select max(salary) from emp where deptid=10;
– 练习:查询出年龄最大的女员工
select min(birthday) from emp where sex=0;

– 分组查询
– 通常查询聚合函数和分组条件
– 示例:查询出男女员工的数量,工资总和分别是多少
select sex,count(eid),sum(salary) from emp group by sex;
– 练习:查询出各部门的平均工资,最高工资,最低工资
select deptid,avg(salary),max(salary),min(salary),sum(salary) from emp group by deptid;

– 函数:year() 获取日期中的年份部分
select year(‘2022-9-1’); – 2022
– 示例:查询出1990年出生的员工
select * from emp where year(birthday)=1990;
–练习:查询出每个员工的姓名及出生年份
select ename,year(birthday) from emp;

– 2.子查询:多个查询命令的组合,把一个查询结果作为另一个的查询条件
– 示例:查询出年龄最大的女员工是谁
select min(birthday) from emp where sex=0;
select * from emp where birthday=(select min(birthday) from emp where sex=0);
– 练习:查询高于平均工资的员工有哪些
select avg(salary) from emp;
select * from emp where salary>(select avg(salary) from emp);
– 练习:查询和xin同部门的员工
select deptid from emp where ename=‘xin’;
select * from emp where deptid=(select deptid from emp where ename=‘xin’) && ename !=‘xin’;
– 练习:查询和tom同一天出生的员工
select year(birthday) from emp where ename=‘tom’;
select * from emp where year(birthday)=(select year(birthday) from emp where ename=‘tom’) && ename!=‘tom’;

– 3.多表查询:要查询的列分布在多个表中
– 前提:表之间已经建立了关联
– 示例:查询出所有员工的姓名及其部门名称
select ename,dname from emp,dept where deptid=did;
select emp.ename,dept.dname,emp.salary from emp,dept where emp.deptid=dept.did;
– 内连接
select ename,dname from emp inner join dept on deptid=did;*

文章转自:mysql 简单查询和聚合查询部分方法_Java-答学网

作者:答学网,转载请注明原文链接:http://www.dxzl8.com/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值