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.       testID,stuID,testBase,testBeyond,testPro  
  3.   from Score 
  4.       where stuID in
  5.           select stuID from Student where stuName=’Kencery’ 
  6.       ) 

   2)相关子查询

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

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

2.表连接\

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

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

    1)创建两张表

  1. use Test 
  2. go 
  3.  create table testNum1 
  4.  ( 
  5.      Num1 int 
  6.  ); 
  7.  create table testNum2 
  8.  ( 
  9.      Num2 int 
  10.  ); 
  11.  insert into testNum1 values(1),(2),(3) 
  12.  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.      s1.stuName, 
  3.      s1.stuSex, 
  4.      s2.testBase, 
  5.      s2.testBeyond  
  6.          from Student as s1 
  7.      inner join Score as s2 
  8.          on s1.stuID=s2.stuID 
  9.      where s1.stuIsDel=0; 

   (4)表连接之外连接

     1)执行下面的SQL语句

  1. create table tblMain 
  2.   ( 
  3.      ID int
  4.       name nvarchar(20), 
  5.       fid int 
  6.   ); 
  7.   create table tblOther 
  8.   ( 
  9.       ID int
  10.       name nvarchar(20) 
  11.   ) 
  12.   insert into tblMain values(1,'张三',1),(2,'李四',2) 
  13.   insert into tblOther values(1,'C++'),(2,'.net'),(3,'java'
  14.   select * from  
  15.       tblMain as t1 
  16.          inner join  
  17.       tblOther as t2 
  18.           on  
  19.       t1.fid=t2.id 

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

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

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

原文链接:http://www.cnblogs.com/hanyinglong/archive/2013/03/06/2945380.html

【编辑推荐】

  1. 百万数据下几种SQL性能测试
  2. 巧用数据库连接监控组件解决关闭问题
  3. SQL Server高可用的常见问题
  4. SQL Server 2008 R2故障转移群集环境准备
  5. SQL Server: 局部变量是如何影响查询性能的

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/254387.html<

(0)
管理的头像管理
上一篇2025-04-30 08:39
下一篇 2025-04-30 08:40

相关推荐

  • 站群服务器如何批量管理更高效,有哪些管理技巧?

    站群服务器批量管理想提效,自动化是唯一出路,通过统一配置管理工具与面板系统,结合服务商提供的底层基础设施支持,能将运维效率提升数倍,批量管理的核心痛点与解决思路多台站群服务器分散管理,最常见的问题就是重复劳动,每次软件更新、配置修改、安全加固,都需要逐台登录操作,不仅耗时,还容易漏掉某台机器,更头疼的是,一旦某……

    2026-07-27
    0
  • 服务器磁盘IO过高如何优化?,磁盘IO过高的原因有哪些?

    服务器磁盘IO过高,核心优化路径是“先定位、再分流、后升级”,你需要通过系统工具精确判断究竟是应用程序、日志策略还是硬件瓶颈导致,然后针对性地从代码、缓存、存储架构和硬件选型四个层面下手,其中选择持有持牌自营机房和增值电信业务经营许可证的服务商,能从根本上保障底层IO稳定性,定位IO瓶颈:动手优化的第一步盲目优……

    2026-07-27
    0
  • 跨境网站访问延迟高怎么解决,网站访问慢的原因是什么?

    跨境网站访问延迟高的核心解决思路在于多维度优化网络路径,包括使用全球CDN加速、选择靠近目标区域的优质IDC机房、调整传输协议以及精简应用层资源,其中服务商的基础设施质量直接决定优化上限,为什么跨境访问延迟高?三大核心因素物理距离与光速限制数据包在海底光缆中的传输速度受限于介质,从中国到美国西海岸的物理往返时间……

    2026-07-27
    0
  • 站群服务器到底是什么意思,怎么选择比较好

    站群服务器就是一台拥有多个独立IP地址、专门用于托管和管理多个网站的高性能服务器,其核心价值在于通过独立IP降低网站间的关联风险,并提升搜索引擎优化效果,站群服务器的工作原理与适用场景站群服务器本质上是将一台物理服务器通过虚拟化或直接配置的方式,分配给多个独立IP地址,每个IP对应一个独立的网站,这些网站共享服……

    2026-07-27
    0
  • 高防服务器误封正常流量如何调整,怎么解决?

    高防服务器误封正常流量,核心调整思路是从“一刀切”转向“精细化”——通过分析业务特征,调整防护阈值、配置白名单和启用智能学习模式,让防护系统学会区分真假流量,为什么会误封正常流量误封主要源于防护策略的通用化,高防服务器通常默认启用严格防护规则,当流量特征与攻击特征库部分匹配时,就会被拦截,据行业安全白皮书指出……

    2026-07-27
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注