1.子查询概念

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

(2)自查询的分类

  1)独立子查询

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

 Select

     testID,stuID,testBase,testBeyond,testPro 

 from Score

     where stuID=(

         select stuID from Student where stuName=’Kencery’

        )

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

 Select

     testID,stuID,testBase,testBeyond,testPro 

 from Score

     where stuID in(

         select stuID from Student where stuName=’Kencery’

     )

   2)相关子查询

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

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

2.表连接\

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

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

    1)创建两张表

  use Test

 go

 create table testNum1

 (

     Num1 int

 );

 create table testNum2

 (

     Num2 int

 );

 insert into testNum1 values(),(),()

 insert into testNum2 values(),()

    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.字段

 Select  s1.stuID,

     s1.stuName,

     s1.stuSex,

     s2.testBase,

     s2.testBeyond 

         from Student as s1

     inner join Score as s2

         on s1.stuID=s2.stuID

     where s1.stuIsDel=;

  (4)表连接之外连接

     1)执行下面的SQL语句

 create table tblMain

 (

     ID int,

     name nvarchar(),

     fid int

 );

 create table tblOther

 (

     ID int,

     name nvarchar()

 )

 insert into tblMain values(,'张三',),(,'李四',)

 insert into tblOther values(,'C++'),(,'.net'),(,'java')

 select * from 

     tblMain as t1

        inner join 

     tblOther as t2

         on 

     t1.fid=t2.id 

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

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

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

 select * from 

     tblMain as t1

         right join tblOther as t2

     on t1.fid=t2.id 

SQL Server高级内容之子查询和表链接的更多相关文章

  1. [SQL SERVER系列]之嵌套子查询和相关子查询

    子查询有两种类型,一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数:另外一种是返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的 ...

  2. SQL Server高级内容之case语法函数

    1.Case函数的用法  (1)使用类似:switch-case与if-else if. (2)语法: case [字段] when 表达式 then 显示数据 when 表达式 then 显示数据 ...

  3. SQL server 数据库基础语句 子查询 基础函数

    上一章 说了下   子查询的意义是 把一条查询语句当做值来使用 select *from car   //查询汽车的信息 假设我知道一个汽车的编号是 c021 但是我要查询 比这个汽车价格高的汽车信息 ...

  4. SQL Server高级内容之表表达式和复习

    1. 表表达式 (1) 将表作为一个源或将查询的一个结果集作为一个源,对源做处理,然后得到一个新的数据源,对其进行查询.  (2)表表达式放在from子句中 (3)派生表,将表的查询得到的结果集作为一 ...

  5. SQL Server高级查询

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

  6. SQL Server温故系列(3):SQL 子查询 & 公用表表达式 CTE

    1.子查询 Subqueries 1.1.单行子查询 1.2.多行子查询 1.3.相关子查询 1.4.嵌套子查询 1.5.子查询小结及性能问题 2.公用表表达式 CTE 2.1.普通公用表表达式 2. ...

  7. 你真的会玩SQL吗?无处不在的子查询

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  8. SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比

    原文:SQL点滴10-使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比 今天偶尔看到sql中也有with关键字,好歹也写了几年的sql语句,居然第一次接触,无知啊.看了一位博主的文章 ...

  9. SQL Server 全文搜索 配置、查询初体验

    原文:SQL Server 全文搜索 配置.查询初体验 一.使用SQL Server全文搜索配置 要使用SQL Server的全文搜索服务,需要进行如下配置. 1.开启全文搜索服务: 2.开启数据库的 ...

随机推荐

  1. IPv6 相关的工作简介

    这里说明下,仅仅是IPv6在开发板上的相关的工作简介,没有很详细,都是自己一边积累,一边实践的.能帮助其他人最好,也算是给自己做个备忘录. 一.首先说下DHCPv6相关的.这里我使用的是DHCP6s. ...

  2. 10 款精美的 CSS3 全新特效

    大家都知道,在网页制作时使用CSS技术,可以有效地对页面的布局.字体.颜色.背景和其它效果实现更加精确的控制.只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和 ...

  3. C#中Thread类中Join方法的理解(转载)

    指在一线程里面调用另一线程join方法时,表示将本线程阻塞直至另一线程终止时再执行      比如 using System; namespace TestThreadJoin { class Pro ...

  4. 移动端折腾国外分享(facebook、twitter、linkedin)

    一.前言 国内做HTML5页面,关注最多就是微信分享了,之前也写过关于微信分享的文章,可以点击查看:分享相关文章 再者,就是国内的其它分享,比如常用的新浪微博.腾讯微博.QQ空间等等,最方便的就是直接 ...

  5. iOS开发——路径篇&混编路径与全局宏路径

    混编路径与全局宏路径 最近在做东西的时候有一个地方要用到一个第三方库的,但是目前swift版的还没有找到,自己又不想写(其实是不会写),所以就想到了混编,但是中间出现了好多问题,其中印象最深的就是桥接 ...

  6. Spark目录

    1. Spark1.0.0 应用程序部署工具spark-submit 2. Spark Streaming的编程模型 3. 使用java api操作HDFS文件 4. 用SBT编译Spark的Word ...

  7. 乐观锁(optimistic locking)与悲观锁(pessimistic locking)

    首先,乐观锁(optimistic locking)与悲观锁(pessimistic locking)基本是针对数据处理来说,也就是跟数据库有关的术语,目的是为了解决并发处理时所遇到的相关性能问题,以 ...

  8. kafka监控之KafkaOffsetMonitor

    参考自:http://www.cnblogs.com/sunxucool/p/3904850.html 流行的kafka监控有kafka-web-console.KafkaOffsetMonitor. ...

  9. C# 文本框 TextChanged 延时触发

    public partial class DelayTextBox : TextBox { #region private globals private System.Timers.Timer De ...

  10. SQL Server数据库自增字段正确的插入值的描述

    我们今天主要向大家讲述的是SQL Server数据库之向SQL Server自增字段正确的插入值的实际操作步骤,在一般的情况下,我们不能向 SQL Server 数据库自增字段中插入值,如果非要这么干 ...