SQL多表链接查询、嵌入SELECT语句的子查询技术

  次阅读 作者:智能小宝 来源:互联网 2016-03-01 10:21 我要评论(0)

高级查询技术主要是涉及多个表的链接查询技术、嵌入SELECT语句的子查询技术,把多个查询联合起来的联合技术等。

1. 连接查询

需要同时从两个或者连个以上的表中检索数据。链接就是允许同时从两个表或者两个以上的表中检索数据,指定这些表中的某个或者某些列作为连接条件。在SQL Server中,可以使用两种连接语法的形式,一种是ANSI链接语法形式,这是连接条件出现在FROM子句中;另外一种SQL Server链接语法形式,这是连接条件出现在WHERE条件中。

1. ANSI链接

链接错做可以同时查询两个或者多个表中的数据,所生成的结果集包含多个表中的字段,需要使用连个表中共同拥有的字段以连接多个表。

进行连接操作时,SQL一行一行地比较所指定的字段,然后把比较后的结果和满足条件的数据合并,并生成新的记录。

有三种连接方式:内连接、外连接和交叉连接。在一个SELECT语句中,可以连接多个表;链接通过扩展SELECT语句的FROM字句,增加了两个关键字:JOIN和ON

JOIN:指定要了链接的表

ON:指定这些表共同拥有的字段

在表的主键和外部键的基础上,指定连接条件。

ANSI链接语法形式如下所示:

SELECT table_name.column_name, table_name.column_name,……

FROM { table_name[ join_type] JOIN table_name ON search_conditions}

WHERE[ search_conditions]

其中[ join_type ]可以为如下三个关键字形式:

INNER(内连接):链接查询结果集中仅包含满足条件的行,内连接是SQL Server缺省的连接方式,可以把INNER JOIN简写成 JOIN;

OUTER(外连接):链接查询结果集中既包含哪些满足条件的行,还包含其中某个表的全部行,有三种形式的外连接:左外连接、右外连接、全外连接。

例如:已经选修了4号课程的同学信息的示例,该示例涉及到了学生表和选修课:

SELECT 学生表

FROM 学生表 JOIN 选课表 ON 学生表.学号 选课表.学号

WHERE 选课表 课程号=4

2. SQL Server链接

多表连接,可以在FROM子句后直接指定多个表,语义上表示从这几个表的笛卡尔积中检索数据,可以用WHERE子句设定过滤条件。

SQL Server链接语法形式如下:

SELECT table_name.column_name,table_name.column_name,……

FROM { table_name,table_name,……}

WHERE table_name.column_name join_operator table_name.column_name

在此种语法形式中,FROM子句列出了连接时所使用到的全部表名,WHERE子句指定哪些行应该出现在结果集中,即用WHERE子句设定过滤条件。在WHERE子句中,在两个连接的列中使用链接运算符。

例如:检索出至少已经有一门课程及格的同学的信息示例:

SELECT DISTINCT 学生表 *

FROM 学生表 选课表

WHERE 学生表.学号=选课表.学号 AND 选课表.成绩=60

3. 子查询

子查询是一系列SELECT语句。SELECT语句可以嵌套在其他许多语句中,例如SELECT、INSERT、UPDATE、DELETE等,这些嵌套的SELECT语句就称为子查询。子查询可以把一个复杂的查询分解成一系列的逻辑步骤,这样就可以用一个单个的语句解决一个复杂的查询问题。当一个查询依赖于另一个查询的结果时,子查询会很有用。

使用子查询时,应注意:

子查询要用括号起来

只需要一个值或一系列的值,就可以用子查询代替一个表达式

子查询中不能查询包含数据类型是text或image的字段

子查询中也可以再包含子查询,嵌套可以多至32层

1. 把子查询用作派生的表

可以用子查询产生一个派生的表,用于代替FROM子句中的表。派生表示FROM子句中子查询的一个特殊用法,用一个别名或用户自定义的名字来引用这个派生表。FROM子句中的子查询将返回一个结果集,这个结果集所形成的表将被外层SELECT语句使用。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...