先上干货,看完直接上才艺
文章目录
干货
数据查询基本格式:
必选:
Select
选择列
from
从哪个表来
可选:
where
选择行
group by
表里有部分行被聚集(加和、平均等),就得用表里的一列作为分组依据否则报错
having
where变式(某一列是加和、平均等聚集函数,而且要求用该列筛选就得用having)
order by xxx (asc|desc)
通过哪一列进行排序,asc升序desc降序不填默认升序
聚集函数
函数名 | 作用 |
---|---|
Count(*) | 统计元组个数 |
Count(Distinct|All column列名) | 统计某列中值的个数 |
Sum(Distinct|All column) | 计算某列加和 |
Avg(Distinct|All column) | 计算某列平均值 |
Max(Distinct|All column) | 计算某列最大值 |
Min(Distinct|All column) | 计算某列最小值 |
ps:Distinct是消除重复值,All是全部输出
连接
一个查询同时涉及两个以上的表
通常用‘,’连接。连接需要在where语句把两个表相同列串起来(后面有例子)
才艺
原始表在上一篇博客
查询person表中所有不重复的职称
use pay
select distinct professor
from person
查询person表中男员工的信息
select *
from person
where Sex = '男'
查询person表中00102部门的女员工的信息
select *
from person
where Sex = '女' and DeptNo = 00102
查询000001员工的基本工资增长1.5倍后实际收入
select Base*1.5 + bonus - deduct '基本工资'
from pay
where No = 000001
查询00102部门的员工的基本信息和工资情况,按实发工资降序排列
select pay.*,person.*
from person,pay
where DeptNo = 00102 and pay.No = person.No
order by Fact desc
查询各部门2005年实发工资总数
select deptno as 部门, sum(fact) as 总额
from pay,person
where pay.no = person.no and year = 2005
group by DeptNo
查询2005年1月平均奖金不小于400的部门,按平均奖金升序排列
select DeptNo as 部门,avg(bonus) as 平均奖金
from pay,person
where pay.no = person.no and year = 2005 and month = 1
group by DeptNo
having avg(Bonus) > 400
order by avg(bonus);
查询市场部所有员工姓名和2005年1月工资明细
select person.Name as 姓名,pay.base as 基本工资,pay.bonus as 奖金,pay.deduct as 扣除,pay.fact as 实发工资
from dept,person,pay
where DeptName = '市场部' and dept.DeptNo = person.DeptNo and person.no = pay.no and year = 2005 and month = 1;
拓展
所有姓刘的学生
Where Sname Like '刘%';
姓欧阳且全名为三个汉字
Where Sname Like '欧阳_';
名字中第二个字为阳
Where Sname Like '_阳%';
所有不姓刘的学生
Where Sname Not Like '刘%';
查询DB_Design课程的课程号和学分
Where Cname Like 'DB\_Design' Escape'\';
查询以“DB_”开头,且倒数第三个字符为i
Where Cname Like 'DB\_%i__' Escape'\';