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. 【转】牛逼闪闪的Ruby迭代器

    D瓜哥最近想做一个网站,另外,老早就有学习一门动态语言的想法,满足着两个条件的编程语言中,Ruby.Python是最合适的两种语言.现在Ruby on Rails如日中天,光芒万丈!所以,就选定了Ru ...

  2. Python在Windows上的安装

    1:下载 http://dlsw.baidu.com/sw-search-sp/soft/6e/17016/python-3.3.5.1395976247.msi 2:直接next安装 3:验证安装是 ...

  3. CDOJ 第七届ACM趣味程序设计竞赛第三场(正式赛) 题解

    宝贵资源 题目连接: http://acm.uestc.edu.cn/#/problem/show/1265 题意 平面上给n个点(n<=1000),要求找一个面积最小的正方形,将所有的点都囊括 ...

  4. CSS样式如何解决IE浏览器不同版本的兼容问题

    如果你想让浏览器是固定的IE6版本,那么你做网页的时候在<head>后面加上一句话: <meta http-equiv="X-UA-Compatible" con ...

  5. iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)   前面我们介绍了StoryBoard这个新技术,和纯技术 ...

  6. crm2011创建货币Money类型的字段

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Xrm.Sdk.Messages;     using Microsoft ...

  7. WEB免费打印控件推荐

    在WEB系统中,打印的确是个烦人的问题. 要么自己开发打印控件,如果项目时间紧,肯定来不及. 要么购买成熟的打印控件,如果是大项目可以考虑,但如果项目只有几K到1.2W之间,这就麻烦了. 前段时间有机 ...

  8. Asp.Net 之 母版页中对控件ID的处理

    一.问题提出 由于总体排版和设计的需要,我们往往创建母版页来实现整个网站的统一性,最近我由于统一性的需要,把原来整个项目单独的页面全部套用了母版页.但是出现了一系列失效错误. 二. 抽象模型 由于整个 ...

  9. SQL操作XML

    前面一段时间为了赶项目的进度,一直在加班,现在空闲了下来将前面碰到的问题整理了一下,发现了一些十分有用的,在此记录下来,看能不能帮助到遇到同样问题的朋友,此文仅是自己个人的意见,若存在问题,还望不宁赐 ...

  10. Java SE ---类,方法,对象等

    1,面向对象程序设计的三大基本特征:继承(Inheritence).封装(Encapsulation).多态(Polymorphism)     2,如何定义类?            修饰符 cla ...