`
backspace
  • 浏览: 137139 次
文章分类
社区版块
存档分类
最新评论

SQL Server高级内容之子查询和表链接

 
阅读更多

1.子查询概念

   (1)就是在查询的where子句中的判断依据是另一个查询的结果,如此就构成了一个外部的查询和一个内部的查询,这个内部的查询就是自查询。

   (2)自查询的分类

1)独立子查询

   ->独立单值(标量)子查询  (=)

复制代码
 1 Select
 2 
 3     testID,stuID,testBase,testBeyond,testPro 
 4 
 5 from Score
 6 
 7     where stuID=(
 8     
 9         select stuID from Student where stuName=’Kencery’
10 
11        )
复制代码

->独立多值子查询  (in)

复制代码
 1 Select
 2 
 3     testID,stuID,testBase,testBeyond,testPro 
 4 
 5 from Score
 6 
 7     where stuID in(
 8 
 9         select stuID from Student where stuName=’Kencery’
10 
11     )
复制代码

 2)相关子查询

   (3)写子查询的注意事项

1)子查询用一个圆括号阔气,有必要的时候需要为表取别名,使用“as 名字”即可。

2.表连接\

(1)表链接就是将多个表合成为一个表,但是不是向union一样做结果集的合并操作,但是表链接可以将不同的表合并,并且共享字段。

(2)表连接之交叉连接 (cross join)

 1)创建两张表

复制代码
 1  use Test
 2 
 3 go
 4 
 5 create table testNum1
 6 
 7 (
 8 
 9     Num1 int
10 
11 );
12 
13 create table testNum2
14 
15 (
16 
17     Num2 int
18 
19 );
20 
21 insert into testNum1 values(1),(2),(3)
22 
23 insert into testNum2 values(4),(5)
复制代码

 2) 执行交叉连接的SQL语句

   select * from testNum1 cross join testNum2

 3)注解

   交叉连接就是将第一张表中的所有数据与第二张表中的所有数据挨个匹配一次,构成一个新表。

 4)自交叉的实现

   执行插入SQL语句:

insert into testNum1 values(4),(5),(6),(7),(8),(9),(0)

   执行自交叉的SQL语句:

select t1.num1,t2.num2 from testNum1 as t1 cross join testNum2 as t2

 5)另外一种写法:

   select * from testNum1,testNum2不提倡使用,首先是有比较新的语法,缺陷是逗 号不明确,并且这个语法与内连接和外连接都可以使用,如果使用join声明,那么语法错误的时候可以报错,但是使用这个语法,可能因为部分语法的错误,会 被SQL Server解释为交叉连接而跳过这个语法的检查

  (3)表连接之内连接

  1)内链接是在交叉连接的基础之上添加一个约束条件

  2)语法:select * from 表1 inner join 表2 on 表1.字段=2.字段

复制代码
 1 Select  s1.stuID,
 2 
 3     s1.stuName,
 4 
 5     s1.stuSex,
 6 
 7     s2.testBase,
 8 
 9     s2.testBeyond 
10 
11         from Student as s1
12 
13     inner join Score as s2
14 
15         on s1.stuID=s2.stuID
16 
17     where s1.stuIsDel=0;
复制代码

  (4)表连接之外连接

  1)执行下面的SQL语句

复制代码
 1 create table tblMain
 2 
 3 (
 4 
 5     ID int,
 6 
 7     name nvarchar(20),
 8 
 9     fid int
10 
11 );
12 
13 create table tblOther
14 
15 (
16 
17     ID int,
18 
19     name nvarchar(20)
20 
21 )
22 
23 insert into tblMain values(1,'张三',1),(2,'李四',2)
24 
25 insert into tblOther values(1,'C++'),(2,'.net'),(3,'java')
26 
27 select * from 
28 
29     tblMain as t1
30 
31        inner join 
32 
33     tblOther as t2
34 
35         on 
36 
37     t1.fid=t2.id 
复制代码

 

  2)在内连接的基础之上,在做一件事儿,就是将tblOther中的Java也显示出来,这时候就要使用到外连接,外连接有左外连接和右外连接。

  3)左连接和右连接有什么区别呢??区别就是**连接就是以**表为主表,在内连接的基础之上,将没有数据的那张表的信息还是要显示出来供用户查看,那么这个主表就是要显示的那张表。左外连接和右外连接的分别是在前面的这张表就是左表,在后面的那张表就是右表,左连接使用left join ,有连接使用right join

  4)上面重新执行下面的SQL语句,就会显示出tblOther表中的Java

复制代码
1 select * from 
2 
3     tblMain as t1
4 
5         right join tblOther as t2
6 
7     on t1.fid=t2.id 
复制代码
1
0
分享到:
评论

相关推荐

    SQL Server高级内容之子查询和表链接概述及使用

    在SQL Server中,子查询和表链接是两个非常重要的高级概念,它们被广泛用于复杂的数据库查询和数据分析。接下来,我们将详细探讨这两个主题。 首先,让我们理解子查询的概念。子查询,顾名思义,就是在主查询(外部...

    SQL Server高级查询与T-SQL编程知识点汇总

    SQL Server高级查询与T-SQL编程是数据库管理与开发中的核心技能,涵盖了多个关键知识点。以下是对这些主题的详细说明: 1. **数据库设计**: - **需求分析**:这是设计过程的第一步,旨在理解用户的需求,确定系统...

    SQLServer数据库设计和高级查询15

    ### SQLServer数据库设计和高级查询15 #### 数据库设计基础 在进行SQL Server数据库设计时,我们需要关注以下几个核心方面: 1. **需求分析**:首先明确系统的需求,包括业务需求和技术需求。业务需求通常涉及...

    SQLServer2005高级查询

    在SQL Server 2005中,高级查询技术是数据库管理员和开发人员必备的技能,它们可以帮助用户更高效地从大型数据集中提取信息。本教程将深入探讨SQL Server 2005中的高级查询概念、技术和最佳实践。 一、联接操作 1. ...

    SQL Server T-SQL高级查询

    - 根据子查询返回的结果数量,可以分为标量子查询、行子查询和表子查询。 #### 9. 特定数据类型查询 - 示例中提到的`age`可能是查询中使用的某个数值类型的字段,用于进行数值相关的比较和计算。 #### 10. 数据库...

    SQLServer数据库设计和高级查询4_2

    根据给定的信息,“SQLServer数据库设计和高级查询4_2”,我们可以推断出这份材料主要聚焦于SQL Server数据库的设计原则以及高级查询技术。虽然提供的部分内容并未包含具体的知识点,但基于标题、描述和标签,我们...

    Sql Server高级查询练习题及答案

    在SQL Server中,高级查询是数据库管理与分析的关键技能,特别是在使用子查询、内外连接等技术时。这些功能使得我们能够处理复杂的数据关系,提取出有价值的信息。以下将详细讲解这些知识点。 首先,子查询是SQL中...

    SQL Server数据库设计和高级查询(1-3).rar

    在SQL Server数据库设计和高级查询的课程中,我们主要探讨如何高效地管理和操作数据库,以及如何利用复杂的查询技术获取所需信息。SQL Server是一款强大的关系型数据库管理系统,广泛应用于企业级数据存储和处理。 ...

    sql server 2005 技术内幕t-sql查询源码

    2. **子查询与联接**:讲解如何使用子查询进行嵌套查询,以及各种类型的联接操作,如内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN、FULL JOIN)和交叉连接(CROSS JOIN)。 3. **集合操作**:可能涉及到...

    SQL Server 2008高级程序设计 4/6

     本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...

    SQL Server基础内容

    5. **SQL查询语言**:深入探讨SELECT语句,包括选择列、连接表、分组与聚合、子查询、联接操作、窗口函数等高级查询技巧。 6. **数据的插入、更新与删除**:介绍INSERT、UPDATE和DELETE语句的使用,以及如何进行...

    Sql Server 电子教案

    3. **高级查询技巧**:涵盖联接(JOINs)操作,如内连接、外连接和交叉连接,以及子查询和集合函数的应用,用于处理更复杂的数据查询需求。 4. **存储过程和触发器**:介绍如何创建和使用存储过程来封装复杂的业务...

    SqlServer数据库设计和高级查询

    SqlServer数据库是Microsoft公司开发的一款关系型数据库管理系统,广泛应用于企业级数据存储和处理。本资料主要探讨了Sql Server的数据库设计原则以及高级查询技术,旨在帮助初学者掌握这些关键技能。 首先,数据库...

    SQL server 电子教程

    通过本教程的学习,读者将掌握SQL Server的基本操作和高级特性,能够独立完成数据库的设计、管理和维护工作。无论你是数据库新手还是希望进一步提升技能的专业人士,这都是一个不可多得的学习资源。

    SQLServer高频面试题及答案

    Sql Server笔试高级篇 1. 什么是内存泄漏? 内存泄漏是指数据库系统中的内存资源没有被正确释放,导致内存资源浪费和数据库性能下降。 2. 维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑? 触发器...

    SQL 高级查询课件

    本文将深入探讨“SQL 高级查询课件”中的核心知识点,包括查询、连接查询以及子查询。 首先,我们从基础的查询开始。查询是SQL的核心功能,用于从数据库中提取所需信息。在“查询基础2.ppt”中,你可能会学习到...

    易语言SQLSERVER查询分析器

    《易语言SQLSERVER查询分析器》是一款专为易语言编程环境设计的工具,它提供了连接、操作和分析SQL Server数据库的能力。源码的开放性使得开发者可以深入理解其内部工作原理,同时也为自定义功能和扩展提供了可能。...

    关系查询处理及优化_sqlserver_

    在SQL Server数据库管理系统中,关系查询处理是核心功能之一,它是数据检索的基础,涉及SQL语句的解析、执行计划的生成以及数据的检索与返回。本教程将深入探讨这一主题,对准备考取高级数据库管理认证的同学极具...

    SQL Server 2008高级程序设计 2/6

     本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...

Global site tag (gtag.js) - Google Analytics