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. hdu 3339 In Action 背包+flyod

    In Action Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=333 ...

  2. HDU 4099 Revenge of Fibonacci(高精度+字典树)

    题意:对给定前缀(长度不超过40),找到一个最小的n,使得Fibonacci(n)前缀与给定前缀相同,如果在[0,99999]内找不到解,输出-1. 思路:用高精度加法计算斐波那契数列,因为给定前缀长 ...

  3. Android ListView标题置顶效果实现

    一. 有图有真相     二.实现: 1. 基于ListView分类效果 2. TitleView即标题的处理(创建) 3. 处理TitleView的三种状态 三.源码: 例子下载 实现可以看代码,具 ...

  4. PHP定时执行任务的实现(转)

    ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $int ...

  5. JS分割字符串并放入数组的函数

    JS分割字符串并放入数组的函数: var InterestKeywordListString = $("#userInterestKeywordLabel").html();  v ...

  6. iOS 10 推送必看(高阶1)

    来源:徐不同 链接:http://www.jianshu.com/p/3d602a60ca4f iOS10 推送必看(基础篇) 虽然这篇文章比较长,也不好理解,但是还是建议大家收藏,以后用到的时候,可 ...

  7. java.util Pattern 和 Mathcer

    1.测试给定的正则表达式是否匹配输入的字符串,这里该正则表达式只使用一次 private String regex ; private String input; @Before public voi ...

  8. LOG4J.PROPERTIES配置详解(转载)

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...

  9. 沈逸老师PHP魔鬼特训笔记(3)

    一.由于上两节课我们把程序放到了/usr/local/bin里面.每次编辑需要sudo .这节课我们使用PHPSTORM来编辑代码,专门把它拷贝出来,然后放到一个叫做home/godpro的文件夹下. ...

  10. cat命令的作用

    1.显示文件内容,如more的功能. 使用方法: cat  filename. 注:cat,无论文件多长,一次性全部显示:more,一次只显示一个屏幕高度的内容. 2.创建文件,如touch功能. 使 ...