简介

    关于数据库,我们经常会听说“增查删改”之类的词语,听起来很简单,但是如果想要准确的获取到需要的数据的话,还是要花点功夫的。下面由我来和大家谈谈高级查询的用法以及和普通查询的区别


高级查询

    子查询

          语法:  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高级查询的更多相关文章

  1. sql server 高级查询

    --in和not in子查询 --采用in子查询获得参加考试的在读学生名单select StudentId,StudentName from Student where StudentId in(se ...

  2. 转载 50种方法优化SQL Server数据库查询

    原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...

  3. Sql Server中查询今天、昨天、本周、上周、本月、上月数据

    Sql Server中查询今天.昨天.本周.上周.本月.上月数据 在做Sql Server开发的时候有时需要获取表中今天.昨天.本周.上周.本月.上月等数据,这时候就需要使用DATEDIFF()函数及 ...

  4. Sql Server参数化查询之where in和like实现详解

    where in 的参数化查询实现 首先说一下我们常用的办法,直接拼SQL实现,一般情况下都能满足需要 string userIds = "1,2,3,4"; using (Sql ...

  5. 【转】Sql Server参数化查询之where in和like实现之xml和DataTable传参

    转载至: http://www.cnblogs.com/lzrabbit/archive/2012/04/29/2475427.html 在上一篇Sql Server参数化查询之where in和li ...

  6. 【转】Sql Server参数化查询之where in和like实现详解

    转载至:http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html 文章导读 拼SQL实现where in查询 使用CHARINDE ...

  7. SQL Server中查询用户的对象权限和角色的方法

    --SQL Server中查询用户的对象权限和角色的方法 -- 查询用户的object权限 exec sp_helprotect NULL, 'sa' -- 查询用户拥有的role exec sp_h ...

  8. 优化SQL Server数据库查询方法

    SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列 ...

  9. SQL Server 2008 查询所有用户表

    SQL Server 2008 查询所有用户表的T-SQL语句是: SELECT * FROM sysobjects WHERE [xtype] = 'U' 或者是: SELECT * FROM sy ...

随机推荐

  1. C语言 基础练习40题

    一.题目 1.输入2个整数,求两数的平方和并输出. 2. 输入一个圆半径(r)当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息. 3.函数y=f(x)可表示为: 4.编写一个程序,从4 ...

  2. Android Studio的下载和安装教程(从ADT到AS)

    之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从 ...

  3. TCP的阻塞和重传机制

    TCP的阻塞和重传机制 网络拥堵 现在网络上大部分的网络请求都是以TCP的方式进行传输的了.网络链路是固定的,各种链路情况也是不一样的.网络拥堵一直是TCP协议设计和使用的时候尽力要避免的.比如,从T ...

  4. Ajax制作智能提示搜索

    一.效果图: 二.实现过程: 思路: 三.部分代码: html: <div id="searchbox"> <div><input type=&quo ...

  5. WPF平台Grid控件性能比较

    WPF官方发布第一个版本至今已经有10年了, 我们几乎在同时也开始了XAML开发.即使经过多年打造,我们依旧尝试提高:我们真的成功打造了高效灵活的控件吗?我没有在其他地方找到任何关于优秀的WPF表格性 ...

  6. 如何在window下查看文件的md5

    软件的话可以用Hash 不用软件,可以用window自带的命令行,首先在一个目录下按住Shift点击鼠标右键,调出CMD界面(或者直接win+R,cmd),命令行如下: certutil -hashf ...

  7. 2分钟在eclipse下使用SpringBoot搭建Spring MVC的WEB项目

    1. 首先用eclipse创建一个maven工程, 普通maven工程即可 2. 修改pom如下: <?xml version="1.0" encoding="UT ...

  8. css之颜色值、单位

    颜色值 英文命令颜色:p{color:red;} RGB颜色:p{color:rgb(133,45,200);}每一项的值可以是 0~255 之间的整数,也可以是 0%~100% 的百分数.如:p{c ...

  9. JQuery 实现两列等高并自适应高度

    想要使用 JQuery 实现两列等高并自适应高度,其实也很简单,原理就是取得左右两边的高度,然后判断这个值,把大的值赋给小的就行了.看代码: $(document).ready(function() ...

  10. express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(三)完结篇

    终于完成了所有自己想要的功能(鼓励下自己),虽然还是很简陋,但是还是挺有满足感的,哈哈. 附上前两篇的链接: 第一篇 第二篇 进入正题,在第二篇里面已经完成了连接数据库,并且实现了对数据库的增删改查, ...