SQL Server高级查询
简介
关于数据库,我们经常会听说“增查删改”之类的词语,听起来很简单,但是如果想要准确的获取到需要的数据的话,还是要花点功夫的。下面由我来和大家谈谈高级查询的用法以及和普通查询的区别
高级查询
子查询
语法: select ...列名... from 表1 where 列1 (逻辑运算符,大于'>',等于'='...) ( select ...列名... from 表2 where 列2 (逻辑运算符,大于'>',等于'='...) 1)
简化: select ... from 表1 where 列1 > (子查询)
描述: 1.子查询就是一个查询语句又嵌套了一个查询语句。比如你想要以一列中筛选出的数据来作为条件去查询另一列中的数据。其中标红的部分称为子查询,而蓝色部分就是父查询。这只是一种称呼。
2.子查询还可以用于不同的表间查询,就像是表连接查询。以A表筛选出来的数据作为条件去查询B表中的数据。想必大家都了解表连接查询,其中最重要的一点就是表间要有主外键引用关系,所以这
也成为了子查询和表连接查询的不同之处。子查询在表连接查询的基础上,还可以用于没有表间连接的情况。所以子查询比表连接查询更为强大,可用用于多种场合。
3.子查询通常用于查询的筛选条件,就是where后面的条件。而表连接查询常用于查看多表的数据,就是只做查看数据操作。
4.需要确保子查询语句不会返回多个值,可以用逻辑运算符。否则会报错。但也有可以包含多个值的子查询,后文会讲到。
IN子查询和NOT IN子查询
IN子查询语法:select ...列名... from 表1 where 列1 IN ( select ...列名... from 表2 where 列2 (逻辑运算符,大于'>',等于'='...) 1)
简化: select ... from 表1 where 列1 IN (子查询)
NOT IN子查询语法:select ...列名... from 表1 where 列1 NOT IN ( select ...列名... from 表2 where 列2 (逻辑运算符,大于'>',等于'='...) 1)
简化: select ... from 表1 where 列1 NOT IN (子查询)
描述: 1.可以明显的看出,(IN子查询和NOT IN子查询)和前文的子查询语法上的区别只是where后面的逻辑运算符变成了IN和NOT IN。其他方面没有任何区别。
2.(IN子查询和NOT IN子查询)和前文的子查询性质基本上一样,只是IN子查询中的子查询语句可以返回多个值的,IN子查询会将这些值都作为条件来判断。而NOT IN则是取反。是不是很像普通查询
中的 [] 和 between 1 and 10 呢?条件都是一个范围的值。(这里需要注意,只能是一列的多个值。)
EXISTS和NOT EXISTS子查询
语法: IF EXISTS(子查询语句)
...语句...
描述: EXISTS一般用于if语句的条件检测。如果子查询的结果非空,EXISTS就返回true,执行if结构内的语句,否则返回false,不执行if结构内的语句。而NOT EXISTS则是将返回的结果取反。
总结
可以用到子查询的地方非常多。子查询语句可以嵌套在SQL语句中任何表达式出现的位置。SELECT语句、from子句、where子句、Group by子句、having子句......,还可以嵌套多层...
虽然子查询很强大,但使用哪种查询并不重要,重要的是我们需要哪种查询。
附加代码

ps:如若对此文有疑义,欢迎提出。
SQL Server高级查询的更多相关文章
- sql server 高级查询
--in和not in子查询 --采用in子查询获得参加考试的在读学生名单select StudentId,StudentName from Student where StudentId in(se ...
- 转载 50种方法优化SQL Server数据库查询
原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...
- Sql Server中查询今天、昨天、本周、上周、本月、上月数据
Sql Server中查询今天.昨天.本周.上周.本月.上月数据 在做Sql Server开发的时候有时需要获取表中今天.昨天.本周.上周.本月.上月等数据,这时候就需要使用DATEDIFF()函数及 ...
- Sql Server参数化查询之where in和like实现详解
where in 的参数化查询实现 首先说一下我们常用的办法,直接拼SQL实现,一般情况下都能满足需要 string userIds = "1,2,3,4"; using (Sql ...
- 【转】Sql Server参数化查询之where in和like实现之xml和DataTable传参
转载至: http://www.cnblogs.com/lzrabbit/archive/2012/04/29/2475427.html 在上一篇Sql Server参数化查询之where in和li ...
- 【转】Sql Server参数化查询之where in和like实现详解
转载至:http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html 文章导读 拼SQL实现where in查询 使用CHARINDE ...
- SQL Server中查询用户的对象权限和角色的方法
--SQL Server中查询用户的对象权限和角色的方法 -- 查询用户的object权限 exec sp_helprotect NULL, 'sa' -- 查询用户拥有的role exec sp_h ...
- 优化SQL Server数据库查询方法
SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列 ...
- SQL Server 2008 查询所有用户表
SQL Server 2008 查询所有用户表的T-SQL语句是: SELECT * FROM sysobjects WHERE [xtype] = 'U' 或者是: SELECT * FROM sy ...
随机推荐
- ZOJ Problem Set - 1338 Up and Down Sequences 解释 ac代码
这道题目我一开始一头雾水,怎么都数不对,参考了下网上的博文,才弄懂. 题意是这样的,如果是上升序列,上升序列的长度不是所有上升数字的,是这么规定的,如果它与前一个数字构成上升,那么这个数字算上长度.所 ...
- 「UI 测试自动化selenium」汇总
<selenium 基础之java实现> selenium RC 环境配置 菜鸟学自动化测试(一)----selenium IDE 菜鸟学自动化测试(二)----selenium IDE ...
- JavaMail发送邮件的笔记及Demo
最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的demo自己试着运行了一下,发件时我用的是网易163邮箱,收件时用QQ邮箱,运行后报了一个错误: 网络上搜索解决方式,多次尝 ...
- LeetCode - 72. Edit Distance
最小编辑距离,动态规划经典题. Given two words word1 and word2, find the minimum number of steps required to conver ...
- 图片每天换及纯css3手风琴特效
<a target="_blank" id="a"><img id="img" /></a> <s ...
- git版本回退, github版本回退
上周提交了更改,过了周末回来说要撤销上个story.于是,需要找到上周提交的版本,rollback回来. git版本管理命令,自从习惯使用管理工具之后就很少接触了,当突然寻找其他指令的时候就成浆糊了, ...
- nodejs学习笔记一——nodejs安装
a.nodejs安装 nodejs的安装没有什么说的默认安装即可.安装包官网下载即可:nodejs官网 本人用的是window的安装包node-v4.2.6-x64.msi 安装完成后打开命令行查看使 ...
- 详解Javascript的继承实现(二)
上文<详解Javascript的继承实现>介绍了一个通用的继承库,基于该库,可以快速构建带继承关系和静态成员的javascript类,好使用也好理解,额外的好处是,如果所有类都用这种库来构 ...
- .NET设计模式(1):1.1 单例模式(Singleton Pattern)
概述 单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并为客户程序提供一个获取该实例的全局访问点. 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单 ...
- [无聊的事-连载之连开100个VS] 折腾你的骚机吧,骚年们!!!
[无聊的事-连载之连开100个VS] 折腾你的骚机吧,骚年们!!! 只有8G内存的,用这个:打开你的CMD命令提示符如果只装了Visual Studio 2010,用这条命令,打开50个VSfor / ...