基本查询:

实例表

 示例表
--部门表 create table dept( deptno int primary key,--部门编号 dname nvarchar(30),--部门名 loc nvarchar(30)--地址 ); --雇员表 create table emp( empno int primary key,--雇员号 ename nvarchar(30),--员工姓名 job nvarchar(30),--雇员工作 mrg int,--雇员上级 hiredate datetime,--入职时间 sal numeric(10,2),--薪水 comm numeric(10,2),--奖金 deptno int foreign key references dept(deptno)--设置外键 ); insert into dept values (10,'ACCOUNTING','NEW YORK'); insert into dept values (20,'RESEARCH','DALLAS'); insert into dept values (30 ,'SALES','CHICAGO'); insert into dept values (40, 'OPERATIONS','BOSTON'); insert into emp values (7369,'SMITH','CLERK',7902,'1980-12-17',800.00,null,20); insert into emp values(7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600.00,300.00,30); insert into emp values(7521,'WARD','SALESMAN',7698,'1981-2-22',1250.00,500.00,30); insert into emp values(7566,'JONES','MANAGER',7839,'1981-4-2',2975.00,null,20); insert into emp values(7654,'MARTIN','SALESMAN',7698,'1981-9-28',1250.00,1400.00,30); insert into emp values(7698,'BLAKE','MANAGER',7839,'1981-5-1',2850.00,null,30); insert into emp values(7782,'CLARK','MANAGER',7839,'1981-6-9',2450.00,null,10); insert into emp values(7788,'SCOTT','ANALYST',7566,'1987-4-19',3000.00,null,20); insert into emp values(7839,'KING','PRESIDENT',null,'1981-11-17',5000.00,null,10); insert into emp values(7844,'TURNER','SALESMAN',7698,'1981-9-8',1500.00,0.00,30); insert into emp values(7876,'ADAMS','CLERK',7788,'1987-5-23',1100.00,null,20); insert into emp values(7900,'JAMES','CLERK',7698,'1981-12-3',950.00,null,30); insert into emp values(7902,'FORD','ANALYST',7566,'1981-12-3',3000.00,null,20); insert into emp values(7934,'MILLER','CLERK',7782,'1982-1-23',1300.00,null,10);
 select
基本select语句 select [distinct] *|{列名1, 列名2,列名3...} from 表名 [where (条件)]; 说明: select 指定查询哪些列的数据。 *号代表查询所有列。 from指定查询哪张表。 where 表示条件。 distinct可选,指显示结果时,是否剔除重复数据 简单的查询语句 ■ 查询所有列 select * from 表名; ■ 查询指定列 select 列1,列2… from 表名; select ename,sal from emp; ■ 如何取消重复行 select distinct deptno ,job from emp; ?查询SMITH 的薪水,工作,所在部门 select sal,job,deptno from emp where ename='SMITH'; 特别说明:SQLServer 的sql 不区分大小写,内容也不区分大小写 ■ 使用算数表达式 ?显示每个雇员的年工资(奖金为null的用0代替) select ename,sal*12+isnull(comm,0)*12 as '年薪' from emp; 说明:isnull函数是 SQLserver提供的,用于处理数据 null 的问题 ■ 使用列的别名 select ename '姓名',sal*12 as '年收入' from emp; 使用别名时,as 可省略,别名可用单引号,双引号或者不加 查询工资在 2000 到 5000 的员工情况 ①, select * from emp where sal>=2000 and sal<=3000; ②, 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 sal<=250;

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(重点)

 group by用于对查询的结果分组统计,默认升序

 having子句用于限制分组显示结果.

 使用order by字句

 如何按照工资的从低到高的顺序显示雇员的信息

 select ename,sal from emp order by sal asc;

 按照部门号升序而雇员的工资降序排列

 select * from emp order by deptno asc,sal desc;

 按照入职先后顺序排序

 select ename,hiredate from emp order by hiredate asc;

 ■使用列的别名排序

 select ename,sal*12 '年薪' from emp order by '年薪' asc;

 别名需要使用''号圈中,也可以不在''号圈中。

 如何显示每个部门的平均工资和最高工资

 select avg(sal),max(sal),deptno from emp group by deptno;

 显示每个部门的每种岗位的平均工资和最低工资

 select avg(sal),max(sal),deptno,job from emp group by deptno,job order by deptno;

 显示部门平均工资低于2000的部门号和它的平均工资

 思路:   

 1,查询出各个部门的平均工资

 select avg(sal),deptno from emp group by deptno;

 2,挑选出低于的

 select avg(sal),deptno from emp group by deptno having avg(sal)<2000;

 对数据分组的总结

 1  分组函数只能出现在选择列表、having、order by子句种

 2 如果在select 语句种同时包含有group by ,having ,

 order by 那么他们的顺序是group by , having , order by

 3 在选择列中,如果有列、表达式、和分组函数,那么这些列和

 表达式必须有一个出现在group by 子句中,否则就会出错

 select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)<2000;

 这里deptno就一定要出现在 group by 中

order by

 order by 子句用于排序结果集。

 asc表示升序

 desc表示降序

 如何按照工资的从低到高的顺序显示雇员的信息

 select * from emp order by sal [asc];

 查询学生信息,按照学号升序排列

 select * from student order by sno;

 查询学生信息,按照年龄降序排列

 select * from student order by sage desc;

 查询学生信息,按照年龄降序排列,如果年龄相等再按照学号升序排列

 select * from student order by sage desc,sno asc;

使用别名

 1)   select ename,sal '薪水' from emp;

 2)   select ename,sal "薪水" from emp;

 3)   select ename,sal 薪水from emp;

 4)   select ename,sal as '薪水' from emp;

 5)   select ename,sal as "薪水" from emp;

 6)   select ename,sal as 薪水from emp;

 ■使用列的别名排序

 select ename,sal*12 '年薪' from emp order by '年薪' asc;

sql server查询(SELECT ,where,distinct,like 查询,in,is null,group by 和having,order by,as)的更多相关文章

  1. SQL Server中INNER JOIN与子查询IN的性能测试

    这个月碰到几个人问我关于"SQL SERVER中INNER JOIN 与 IN两种写法的性能孰优孰劣?"这个问题.其实这个概括起来就是SQL Server中INNER JOIN与子 ...

  2. SQL SERVER技术内幕之6 集合查询

    1.定义 集合运算会对两个输入查询的结果集进行逐行比较,根据比较结果和所使用的集合运算来确定某一行是否应该包含在集合运算的结果中.因为集合运算是针对集合之间进行的计算,所以集合运算涉及的两个查询不能包 ...

  3. 不同SQL Server数据库之间的跨数据库查询

    --不同SQL Server数据库之间的跨数据库查询 EXEC sp_addlinkedserver @server=N'OldDatabase', --自己定义别名 @srvproduct=N'', ...

  4. SQL Server中Table字典数据的查询SQL示例代码

    SQL Server中Table字典数据的查询SQL示例代码 前言 在数据库系统原理与设计(第3版)教科书中这样写道: 数据库包含4类数据: 1.用户数据 2.元数据 3.索引 4.应用元数据 其中, ...

  5. SQL Server中SELECT会真的阻塞SELECT吗?

    在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...

  6. SQL Server 2017 SELECT…INTO 创建的新表指定到文件组

    原文:SQL Server 2017 SELECT-INTO 创建的新表指定到文件组 SELECT-INTO 在 SQL Server 中也是常见的一个功能,过去用此方法创建的新表只能存储到默认的文件 ...

  7. 深入理解SQL Server数据库Select查询原理(一)

    使用SQL Server十年有余,但是一直对其Select查询机制原理一致不明,直到最近有个通讯录表,很简单的一张表(但因简单,所以当时并没有考虑按部门排序问题),结果想查询某个单位所有部门(不重复) ...

  8. SQL Server性能优化(6)查询语句建议

    1. 如果对数据不是工业级的访问(允许脏读),在select里添加 with(nolock) ID FROM Measure_heat WITH (nolock) 2. 限制结果集的数据量,如使用TO ...

  9. Sql Server系列:多表连接查询

    连接查询是关系数据中最主要的查询,包括内连接.外连接等.通过连接运算符可以实现多个表查询.内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值.SQL Server中的内连接有 ...

  10. SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法

    本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种 ...

随机推荐

  1. 这事没完,继续聊spring cloud stream和kafka的这些小事

    上一篇文章讲了如何用spring cloud stream集成kafka,并且跑起来一个demo,如果这一次宣传spring cloud stream的文章,其实到这里就可以啦.但实际上,工程永远不是 ...

  2. 【Android - 控件】之V - ViewPager的使用

    ViewPager是Android V4包中的一个控件,常常用来作为首页的滚动广告,也常常结合Fragment来实现页面的切换效果. ViewPager和ListView有很多相似的地方,都是适配器控 ...

  3. yum更换国内源、yum下载rpm包、源码包安装 使用介绍

    第5周第4次课(4月19日) 课程内容: 7.6 yum更换国内源7.7 yum下载rpm包7.8/7.9 源码包安装 7.6 yum更换国内源 当yum仓库的软件不好用时,例如很多yum源都是国外的 ...

  4. 【Luogu P3174 】[HAOI2009]毛毛虫

    前言: 虽然很多人和我想法一样 ,但我还是不要脸地写了这题解 题目: 链接 大意: 在一棵树上取一条最长链以及它所连接的结点总共的结点个数 思路: 取链: 用树形\(DP\)就可以轻而易举的解决这个问 ...

  5. Linux下利用nginx实现负载均衡

    linux下利用nginx实现负载均衡 前提条件: 1,安装好jdk 2,安装好tomcat和nginx(可以参考我前两篇文章) 满足前提条件后,要用nginx实现负载均衡,主要是靠配置nginx的配 ...

  6. js递归优化

    递归优化 递归在我们平时撸码中会经常用到,不过可能很多人不知道递归的弊端,就是会导致调用栈越来越深.如果没有节制的使用递归可能会导致调用栈溢出. 那什么是递归呢? 递归调用是一种特殊的嵌套调用,是某个 ...

  7. 大规模机器学习在LinkedIn预测模型中的应用实践

    预测模型在 LinkedIn 的产品中被广泛应用,如 Feed.广告.工作推荐.邮件营销.用户搜索等.这些模型在提升用户体验时起到了重要的作用.为了满足建模需求,LinkedIn 开发并且开源了 Ph ...

  8. springboot整合activiti

    1.第一步添加bpmn文件得插件,不然没法查看和编辑bpmn文件,添加插件的方法各自百度即可,很简单 2.安装好bpmn插件后开始新建bpmn文件,也就是画流程图 一般是在代码中进行指定流程审批人的, ...

  9. Docker系列-(2) 镜像制作与发布

    上篇文章引入了Docker的基本原理和操作,本节文章主要介绍如何制作Docker镜像和发布. 镜像文件结构 Docker镜像的本质是一系列文件的集合,这些文件依次叠加,形成了最后的镜像文件,类似于下图 ...

  10. 从零开始的openGL——四、纹理贴图与n次B样条曲线

    前言 在上篇文章中,介绍了如何加载绘制模型以及鼠标交互的实现,并且遗留了个问题,就是没有模型表面没有纹理,看起来很丑.这篇文章将介绍如何贴纹理,以及曲线的绘制. 纹理贴图 纹理加载 既然是贴图,那首先 ...