sqlserver基本查询

一、distinct去重查询

--1、查询去重emp表中comm列所有的数据
    select distinct comm from emp

--2、查询去重emp表中comm列和deptno列的组合的所有的数据
    select distinct comm,deptno from emp

2、between条件查询

--1、查询工资在1500到3000之间的所有员工信息
    select * from emp where sal>=1500 and sal<=300;
等价于
    select * from emp where sal between 1500 and 3000;

3、in属于若干个孤立的值

--1、查询emp表中工资为1500、3000、5000的员工信息
    select * from emp where sal in(1500,3000,5000);
等价于
    select * from emp where sal=1500 or sal=3000 or sal=5000;

4、top查询前几个若干记录

--1、查询emp表中前五个员工信息
    select top 5 * from emp;
--2、查询emp表中前15%个员工信息
    select top 15 percent * from emp;

5、order by (以某个字段排序)(asc是默认为升序可以不写,desc是降序)

--1、查询emp表中工资在1500到3000之间的员工中,工资最高的前4人
    select top 4 * from emp where sal>=1500 and sal<=3000 order by sal desc
--2、宣勋emp表中所有员工信息,按照deptno降序,sal升序
    select * from emp order by deptno desc,sal
--1、a和b都是升序(默认asc时升序)
order by a,b

--2、a是升序,b降序
order by a,b 

--3、a是降序,b降序
order by a desc ,b desc 

6、like模糊查询

  • "%" 百分号通配符: 表示任何字符出现任意次数 (可以是0次)。
  • "_" 下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。
  • like操作符:LIKE作用sql后面的搜索模式是利用通配符而不是直接相等匹配进行比较;
  • 但如果like后面没出现通配符(%或_),则在SQL执行优化时将 like 默认为 “=”执行
--1、查询员工表emp中,员工姓名中带有A的员工信息
    select * from emp where ename like '%A%';

--2、查询员工表emp中,员工姓名中以A开头的员工信息
    select * from emp where ename like 'A%';

--3、查询员工表emp中,员工姓名中以A结尾的员工信息
    select * from emp where ename like '%A';

--4、查询员工表emp中,员工姓名中以A为结尾的,长度为三个字的数据
    select * from emp where ename like '__A';

--5、查询员工表emp中,员工姓名中第二个字母为A的员工信息
    select * from emp where ename like '_A%';
[a-f]查询a-f中任意单个字符,只能是其中一个字符
--2、查询员工表中,姓名中第二个字符带有A-F中任意一个的员工信息
select * from emp where ename like '_[a-f]%'

[a,f]查询a或者f中任意单个字符,只能是其中一个字符
--3、查询员工表中,姓名中第二个字符带有A或者F中任意一个的员工信息
select * from emp where ename like '_[a,f]%'

[^a-f]查询取反a或者f中任意单个字符,只能是其中一个字符
--1、查询员工表中,姓名中第二个字符不是A-F中任意一个的员工信息
select * from emp where ename like '_[^a-f]%'
--转义字符 \

--1、查询员工表中,姓名中含有%的员工信息
select * from emp where ename like '%\%%'

--2、查询员工表中,姓名中含有_的员工信息
select * from emp where ename like '%\_%'

7、聚合函数(多行记录返回一个值,用于统计分组信息)

        max()求最大值

        min()求最小值

        avg()求平均值

        count()求最个数

--1、查询表中所有记录的个数
select count(*) from emp

--2、查询emp表中deptno记录的个数(包含重复,但是为null的值不会被记录)
select count(deptno) from emp

--2、查询emp表中deptno记录的个数(不含重复)
select count(distinct deptno) from emp

8、as起别名

--1、查询emp表中员工工资大于3000的员工姓名和工作(as可以省略)
select ename as '员工姓名',job as '工作' from emp where sal>=3000

9、group by(分组查询),把表中的记录按照字段分成不同的组

group by 之后的select查询中只能出现分组后整体信息,不能出现组内详细信息
--1、查询不同部门的平均工资
select deptno,avg(sal) as '部门平均工资' from emp group by deptno;

-- 根据性别分组 , 统计男性员工 和 女性员工的数量
select gender, count(*) from emp group by gender ;

--根据性别分组 , 统计男性员工 和 女性员工的平均年龄
select gender, avg(age) from emp group by gender ;
group by a,b,c
先按照a分组,a相同的按照b分组,b相同的再按照c分组

10、having(对分组之后的信息进行过滤)

  • 通常跟在GROUP BY后边作用相当于WHERE
  • WHERE 子句只能指定的条件,而不能指定的条件
  • having是对分组后的的记录进行过滤
  • 如果没使用group by分组但是用了having,则把所有查询结果当成一个组
select count(*) from emp having avg(sal)>1000
group by 之后的select查询中只能出现分组后整体信息,不能出现组内详细信息
--1、查询不同部门的平均工资
select deptno,avg(sal) as '部门平均工资' from emp group by deptno having count(*)>3;

having字句中不能出现字段的别名

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢迅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值