先上干货,看完直接上才艺


文章目录

  • 干货
  • Select
  • from
  • where
  • group by
  • having
  • order by xxx (asc|desc)
  • 聚集函数
  • 连接
  • 才艺
  • 查询person表中所有不重复的职称
  • 查询person表中男员工的信息
  • 查询person表中00102部门的女员工的信息
  • 查询000001员工的基本工资增长1.5倍后实际收入
  • 查询00102部门的员工的基本信息和工资情况,按实发工资降序排列
  • 查询各部门2005年实发工资总数
  • 查询2005年1月平均奖金不小于400的部门,按平均奖金升序排列
  • 查询市场部所有员工姓名和2005年1月工资明细
  • 拓展


干货

数据查询基本格式:

必选:

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表中所有不重复的职称

sql server 100万数据查询需要1分钟 sql查询10万条数据_sqlserver

use pay
select distinct professor
	from person

查询person表中男员工的信息

sql server 100万数据查询需要1分钟 sql查询10万条数据_sql_02

select *
	from person
where Sex = '男'

查询person表中00102部门的女员工的信息

sql server 100万数据查询需要1分钟 sql查询10万条数据_升序_03

select *
	from person
where Sex = '女' and DeptNo = 00102

查询000001员工的基本工资增长1.5倍后实际收入

sql server 100万数据查询需要1分钟 sql查询10万条数据_sqlserver_04

select Base*1.5 + bonus - deduct '基本工资'
	from pay
where No = 000001

查询00102部门的员工的基本信息和工资情况,按实发工资降序排列

sql server 100万数据查询需要1分钟 sql查询10万条数据_升序_05

select	 pay.*,person.*
	from person,pay
where DeptNo = 00102 and pay.No = person.No
order by Fact desc

查询各部门2005年实发工资总数

sql server 100万数据查询需要1分钟 sql查询10万条数据_sql_06

select deptno as 部门, sum(fact) as 总额
	from pay,person
	where pay.no = person.no and year = 2005
	group by DeptNo

查询2005年1月平均奖金不小于400的部门,按平均奖金升序排列

sql server 100万数据查询需要1分钟 sql查询10万条数据_数据库_07

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月工资明细

sql server 100万数据查询需要1分钟 sql查询10万条数据_sql_08

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'\';