关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » SQL Server »SQL编程之高级查询及注意事项

    SQL编程之高级查询及注意事项

    2015-10-16 00:00:00 出处:ITJS
    分享

    1.什么是子查询

    当一个查询是另一个查询的条件时,称之为子查询。子查 询可以使用几个简单命令构造功能强大的复合命令。子查询最常用于SELECT-SQL命令的 WHERE子句中。子查询是一个 SELECT 语句,它嵌套在一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。

    语法:select ....from 表1 where 列1 > (子查询)

    外面的查询成为父查询,圆括号嵌入的查询成为称为子查询。SQL Server 执行时,先执行子查询部分,求出子查询部分的值,再执行整个父查询,返回最后的结果。

    查看多表的数据也可使用表连接,表连接(join on...),表连接都可用子查询替换,但有的子查询不能用表连接替换,子查询比较灵活,方便,形式多样,适合于作为查询的筛选条件。

    例如:

    SQL编程之高级查询及注意事项

    结果为:

    SQL编程之高级查询及注意事项

    2.In 和 Not In子查询

    1> 假如你的子查询将返回多个数据行,你可以用IN和NOT IN操作符来构造主查询的检索条件。IN和NOT IN操作符的用途是测试一个给定的比较值有没有出现在一个特定的集合里。只要主查询里的数据行与子查询所返回的任何一个数据行匹配,IN操作符的比较结果 就将是true。假如主查询里的数据行与子查询所返回的所有数据行都不匹配,NOT IN操作符的比较结果将是true。

    例如:SELECT * FROM student WHERE student_id IN (SELECT student_id FROM absence); name | sex | student_id |

    +-------+-----+------------+

    | Kyle | M | 3 |

    | Abby | F | 5 |

    2>IN和NOT IN操作符还可以用在将返回多个数据列的子查询里。换句话说,你可以在数据表子查询里使用它们。此时,你需要使用一个数据行构造器来给出将与各数据列比较的比较值。

    例 如:SELECT last_name, first_name, city, state FROM president WHERE (city, state) IN (SELECT city, state FROM president WHERE last_name = 'Roosevelt'); +-----------+-------------+-----------+-------+

    | last_name | first_name | city | state |

    +-----------+-------------+-----------+-------+

    | Roosevelt | Theodore | New York | NY |

    | Roosevelt | Franklin D. | Hyde Park | NY |

    +-----------+-------------+-----------+-------+

    3.Exists 和 Not Exists 子查询

    Exists可以检测数据是否存在。假如子查询的结果非空,则Exists(子查询)将返回真(true),否则返回假(false)。

    If Exists (子查询) 语句

    Exists 和 In 一样,同样允许添加Not关键字实现取反操作,Not Exists 表示不存在。

    4.子查询的注意事项

    <1>使用子查询的原则

    1.一个子查询必须放在圆括号中。

    2.将子查询放在比较条件的右边以增加可读性。

    子查询不包含 ORDER BY 子句。对一个 SELECT 语句只能用一个 ORDER BY 子句,

    并且假如指定了它就必须放在主 SELECT 语句的最后。

    ORDER BY 子句可以使用,并且在进行 Top-N 分析时是必须的。

    3.在子查询中可以使用两种比较条件:单行运算符和多行运算符。

    <2>子查询的类型

    单行子查询:从内 SELECT 语句只返回一行的查询

    多行子查询:从内 SELECT 语句返回多行的查询

    <3>单行子查询

    单行子查询是从内查询返回一行的查询。在该子查询类型中用一个单行操作符。幻灯片中列出了单行操作符。

    5.查询的方法:<1>联合:合并多个数据集中的行 <2>子查询:将一个查询嵌套在另一个查询中 <3>连接:合并多个数据表中的列

    6.什么是相关子查询

    相关子查询依赖于外部查询。外部查询和SQL Server子查询是有联系的,尤其在子查询的WHERE语句中更是如此。相关子查询的工作方式是:在子查询中找到外部查询的参考时执行外部查询,此时将结果返回给子查询。然后在外部查询返回的结果集上执行子查询操作。

    相关子查询的执行性能:由于相关子查询中的子查询在外部查询返回的结果集上进行执行,其效率肯定下降。子查询的性能完全依赖于查询和有关的数据。但是,假如相关子查询的语句写得很有效率,则其执行性能能够胜过那些使用几个连接和临时表的程序。

    博文出处:http://www.cnblogs.com/yimeng-com/archive/2015/05/03/4474746.html

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    IT头条

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    严重缩水!NVIDIA将推中国特供RTX 5090 DD:只剩24GB显存

    00:17

    无线路由大厂 TP-Link突然大裁员:补偿N+3

    02:39

    Meta 千万美金招募AI高级人才

    00:22

    技术热点

    微软已修复windows 7/windows 8.1媒体中心严重漏洞 用户可下载安

    卸载MySQL数据库,用rpm如何实现

    windows 7中使用网上银行或支付宝支付时总是打不开支付页面

    一致性哈希算法原理设计

    MySQL数字类型中的三种常用种类

    如何解决SQL Server中传入select语句in范围参数

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。