sql server查询(SELECT ,where,distinct,like 查询,in,is null,group by 和having,order by,as)

基本查询:

实例表

sql server查询(SELECT ,where,distinct,like 查询,in,is null,group by 和having,order by,as)
1 示例表
 2 --部门表
 3
 4 create table dept(
 5
 6    deptno int primary key,--部门编号
 7
 8    dname nvarchar(30),--部门名
 9
10    loc nvarchar(30)--地址
11
12 );
13
14
15
16 --雇员表
17
18 create table emp(
19
20    empno int primary key,--雇员号
21
22    ename nvarchar(30),--员工姓名
23
24    job   nvarchar(30),--雇员工作
25
26    mrg int,--雇员上级
27
28    hiredate datetime,--入职时间
29
30    sal numeric(10,2),--薪水
31
32    comm numeric(10,2),--奖金
33
34    deptno int foreign key references dept(deptno)--设置外键
35
36 );
37
38
39
40 insert into dept values (10,'ACCOUNTING','NEW YORK');
41
42 insert into dept values (20,'RESEARCH','DALLAS');
43
44 insert into dept values (30 ,'SALES','CHICAGO');
45
46 insert into dept values (40, 'OPERATIONS','BOSTON');
47
48
49
50 insert into emp values (7369,'SMITH','CLERK',7902,'1980-12-17',800.00,null,20);
51
52 insert into emp values(7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600.00,300.00,30);
53
54 insert into emp values(7521,'WARD','SALESMAN',7698,'1981-2-22',1250.00,500.00,30);
55
56 insert into emp values(7566,'JONES','MANAGER',7839,'1981-4-2',2975.00,null,20);
57
58 insert into emp values(7654,'MARTIN','SALESMAN',7698,'1981-9-28',1250.00,1400.00,30);
59
60 insert into emp values(7698,'BLAKE','MANAGER',7839,'1981-5-1',2850.00,null,30);
61
62 insert into emp values(7782,'CLARK','MANAGER',7839,'1981-6-9',2450.00,null,10);
63
64 insert into emp values(7788,'SCOTT','ANALYST',7566,'1987-4-19',3000.00,null,20);
65
66 insert into emp values(7839,'KING','PRESIDENT',null,'1981-11-17',5000.00,null,10);
67
68 insert into emp values(7844,'TURNER','SALESMAN',7698,'1981-9-8',1500.00,0.00,30);
69
70 insert into emp values(7876,'ADAMS','CLERK',7788,'1987-5-23',1100.00,null,20);
71
72 insert into emp values(7900,'JAMES','CLERK',7698,'1981-12-3',950.00,null,30);
73
74 insert into emp values(7902,'FORD','ANALYST',7566,'1981-12-3',3000.00,null,20);
75
76 insert into emp values(7934,'MILLER','CLERK',7782,'1982-1-23',1300.00,null,10);

View Code

1 select
 2 基本select语句
 3
 4 select [distinct] *|{列名1, 列名2,列名3...}
 5
 6 from  表名 [where (条件)];
 7
 8
 9
10 说明:
11
12 select 指定查询哪些列的数据。
13
14 *号代表查询所有列。
15
16 from指定查询哪张表。
17
18 where 表示条件。
19
20 distinct可选,指显示结果时,是否剔除重复数据
21
22
23
24 简单的查询语句
25
26
27
28 ■ 查询所有列
29
30 select * from 表名;
31
32 ■ 查询指定列
33
34 select 列1,列2... from 表名;
35
36 select ename,sal from emp;
37
38 ■ 如何取消重复行
39
40 select distinct deptno ,job from emp;
41
42 ?查询SMITH 的薪水,工作,所在部门
43
44 select sal,job,deptno from emp where ename='SMITH';
45
46 特别说明:SQLServer 的sql 不区分大小写,内容也不区分大小写
47
48
49
50 ■ 使用算数表达式
51
52 ?显示每个雇员的年工资(奖金为null的用0代替)
53
54 select ename,sal*12+isnull(comm,0)*12 as '年薪' from emp;
55
56 说明:isnull函数是 SQLserver提供的,用于处理数据 null 的问题
57
58
59
60 ■ 使用列的别名
61
62 select ename '姓名',sal*12 as '年收入' from emp;
63
64
65
66 使用别名时,as 可省略,别名可用单引号,双引号或者不加
67
68
69
70 查询工资在 2000 到 5000 的员工情况
71
72 ①,     select * from emp where sal>=2000 and sal3000;
73
74 ②,     select * from emp where sal between 2000 and 3000;

where

使用where子句

如何显示工资高于的员工

select ename from emp where sal>3000;

如何显示工资在到的员工情况

select * from emp where sal>=2000 and sal250;

select * from emp where sal between 2000 and 2500;(闭区间)

distinct

distinct可选,指显示结果时,是否剔除重复数据

select [distinct] * from emp;

like 查询

%: 表示任意0到多个字符

_: 表示任意单个字符

不区分大小写

如何显示首字符为S的员工姓名和工资

select ename,sal from emp where ename like 'S%';

如何显示第三个字符为O的所有员工的姓名和工资

select ename,sal from emp where ename like '__O%';

查询首字母不是 S 的雇员信息

select ename,job from emp where ename not like 'S%';

in

如何显示empno为123,345,800...的雇员情况

①,select * from emp where empno=123 or empno=345 or empno=800;

②,select * from emp where empno in (123,456,800);

一般我们使用 in 这个关键字,这样效率更高

is null

如何显示没有上级的雇员的情况

select * from emp where mgr is null;

group by 和having(重点)

1 group by用于对查询的结果分组统计,默认升序
 2
 3 having子句用于限制分组显示结果.

 4
 5
 6
 7 使用order by字句
 8
 9 如何按照工资的从低到高的顺序显示雇员的信息
10
11 select ename,sal from emp order by sal asc;
12
13 按照部门号升序而雇员的工资降序排列
14
15 select * from emp order by deptno asc,sal desc;
16
17 按照入职先后顺序排序
18
19 select ename,hiredate from emp order by hiredate asc;
20
21 ■使用列的别名排序
22
23 select ename,sal*12 '年薪' from emp order by '年薪' asc;
24
25 别名需要使用''号圈中,也可以不在''号圈中。
26
27
28
29 如何显示每个部门的平均工资和最高工资
30
31 select avg(sal),max(sal),deptno from emp group by deptno;
32
33
34
35 显示每个部门的每种岗位的平均工资和最低工资
36
37 select avg(sal),max(sal),deptno,job from emp group by deptno,job order by deptno;
38
39
40
41 显示部门平均工资低于2000的部门号和它的平均工资
42
43 思路:
44
45 1,查询出各个部门的平均工资
46
47 select avg(sal),deptno from emp group by deptno;
48
49
50
51 2,挑选出低于的
52
53 select avg(sal),deptno from emp group by deptno having avg(sal)<2000;
54
55
56
57
58
59 对数据分组的总结
60
61 1  分组函数只能出现在选择列表、having、order by子句种
62
63 2 如果在select 语句种同时包含有group by ,having ,
64
65 order by 那么他们的顺序是group by , having , order by
66
67 3 在选择列中,如果有列、表达式、和分组函数,那么这些列和
68
69 表达式必须有一个出现在group by 子句中,否则就会出错
70
71 select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)<2000;
72
73 这里deptno就一定要出现在 group by 中

order by

1 order by 子句用于排序结果集。
 2
 3 asc表示升序
 4
 5 desc表示降序
 6
 7
 8
 9 如何按照工资的从低到高的顺序显示雇员的信息
10
11 select * from emp order by sal [asc];
12
13
14
15 查询学生信息,按照学号升序排列
16
17 select * from student order by sno;
18
19 查询学生信息,按照年龄降序排列
20
21 select * from student order by sage desc;
22
23 查询学生信息,按照年龄降序排列,如果年龄相等再按照学号升序排列
24
25 select * from student order by sage desc,sno asc;

使用别名

1 1)   select ename,sal '薪水' from emp;
 2
 3 2)   select ename,sal "薪水" from emp;
 4
 5 3)   select ename,sal 薪水from emp;
 6
 7 4)   select ename,sal as '薪水' from emp;
 8
 9 5)   select ename,sal as "薪水" from emp;
10
11 6)   select ename,sal as 薪水from emp;
12
13
14
15 ■使用列的别名排序
16
17 select ename,sal*12 '年薪' from emp order by '年薪' asc;

Original: https://www.cnblogs.com/yijieyufu/p/11985910.html
Author: Aquiet
Title: sql server查询(SELECT ,where,distinct,like 查询,in,is null,group by 和having,order by,as)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581832/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Question04-查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩

    * SELECT stu.SID, stu.Sname, IFNULL(CAST(AVG(sc.score) AS DECIMAL(18,2)), 0) 平均成绩 FROM Stu…

    Linux 2023年6月7日
    0117
  • VMware虚拟机centOS7下配置桥接网络

    在VMware虚拟机下centOS7下配置桥接网络 首先,在以下的配置都操作好之后,要确认宿主机的网络连接方式, 若为需要认证的网络,则可能会出现宿主机与虚拟机能互相ping,但虚…

    Linux 2023年6月6日
    0121
  • MybatisPlus拓展——实现多数据源操作

    多数据源 适用:一般工作时候会有多个数据库,每个库对应不同的业务数据。程序如果每次数据都访问同一个数据库,该数据库压力很大访问会很慢。 1、导入依赖 com.baomidou dy…

    Linux 2023年6月7日
    068
  • Python 中 map() zip() list() 函数的介绍

    map() map(function , iterable, ….) : 依次将函数function作用在可迭代的list上,并返回对应的函数返回值,组成新的list(…

    Linux 2023年6月7日
    095
  • POJ1322Chocolate–概论DP

    每次从包装中取出一块巧克力并放在桌子上。如果桌子上有两个相同颜色的巧克力,则将这两个丢掉。如果包中有C种颜色的巧克力(颜色均匀分布),从包装中取出N个巧克力后,桌子上确实有M个巧克…

    Linux 2023年6月7日
    0106
  • 一篇文章剖析设计模式中的简单工厂、工厂方法和抽象工厂

    前言 大部分的面试者在IT行业面试中,提及设计模式,可以列举一大堆,但是面试官要求细说的时候,往往部分基础不够牢固的同学只能提及简单工厂。今天我们来对面试过程中最常见的简单工厂、工…

    Linux 2023年6月13日
    091
  • python动态网站爬虫实战(requests+xpath+demjson+redis)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0104
  • NTP和chrony时间同步

    古代计时方式 ●在远古时期,人类用来确定时间的方式是一些自然界”相对”亘古不变的周期。如地球的公转是为一年,月球的公转是为一月,地球的自转是为一天等,最早的…

    Linux 2023年6月7日
    098
  • jenkins使用ssh remote插件执行shell后无法退出的问题处理

    现象:通过jenkins发布代码后,执行远程命令,一直卡在执行远程命令那里打转,无法退出 脚本 #!/bin/bash 根据参数,执行进程的启动 停止 重启等 #source /e…

    Linux 2023年5月28日
    086
  • 001 研发同学必学哪些 Linux 命令?

    身为研发同学,Linux 是绕不过去的一个小山包,不是说要掌握的十分精通,在程序员界里做个极客,也不是说要抢了 Devops 同学的饭碗,但至少要做到摆脱对 Linux 命令认知的…

    Linux 2023年5月27日
    079
  • Hadoop伪分布式的搭建

    1.准备Linux环境1.1 开启网络,ifconfig指令查看ip 1.2 修改主机名为自己名字(hadoop) 1.3修改主机名和IP的映射关系 1.4关闭防火墙 1.5重启L…

    Linux 2023年5月27日
    063
  • shell 中使用 diff 比较两条命令的输出

    直接给出命令: diff <(command1) <(command2)< code></(command1)> 原理: 使用了进程替换的语法,…

    Linux 2023年6月14日
    085
  • Hadoop 调优

    Hadoop 调优 HDFS 调优 hdfs-site.xml 1. hadoop 文件块大小,通常为 128MB 或 256MB dfs.block.size 134217728…

    Linux 2023年6月8日
    088
  • 使用PowerShell收集多台服务器的性能计数器

    写在前面 当管理多台Windows Server服务器时(无论是DB、AD、WEB以及其他的应用服务器),当出现性能或其他问题后,参阅性能计数器都是一个非常好的维度从而推测出问题可…

    Linux 2023年5月28日
    085
  • MVC(二)

    通过前一篇文章,我们对MVC有了一定的了解。 三、MVC能做什么 网站——服务器返回页面——实际上就是一段文本(response header+html)。 实际上mvc的acti…

    Linux 2023年6月13日
    099
  • Debian目录的生成及打包

    故事背景 做linux开发的一般都会涉及到deb包,那么我们如何制作deb包,debian目录中都有哪些文件以及他们的含义是什么呢?那么我们就带着这些疑惑去探索了。 探索之路 首先…

    Linux 2023年5月27日
    0135
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球