连接查询

值得注意的是:字段前必须加表名,以便混淆

 -- 多表连接查询和子查询
select * from dbo.stu_info ,dbo.sname2
-- 加连接规则的查询 where
select * from dbo.stu_info ,dbo.sname2 where dbo.stu_info.sname= dbo.sname2.姓名

使用where前

使用where后

使用逻辑运算符 and

 select dbo.stu_info.sno,dbo.stu_info.sname,dbo.stu_info.sex,dbo.stu_info.depart
,dbo.sname2.score,dbo.sname2.姓名,dbo.sname2.sno
from dbo.stu_info,dbo.sname2
where dbo.stu_info.sname='张三'
and dbo.stu_info.sno=dbo.sname2.sno
order by dbo.sname2.score desc

表别名简化语句

 select A.sno,A.sname,A.sex,A.depart
,B.score,B.姓名,B.sno
from dbo.stu_info as A,dbo.sname2 as B
where A.sname='张三'
and A.sno=B.sno
order by B.score desc

多表连接查询

跟上面的相似,只是 from 后面多了n个表名 同时多了n-1 个  and  。。。

使用  inner join 连接查询

在where子句中表达式变的臃肿,为了变得清晰,让人理解,所以 ansi SQL 建议使用 inner join 进行多表连接

语法格式 :

select * from 表名1

inner join 表名2

on  连接规则1

inner join 表名3

on  连接规则2

. . .   . . .

inner join 表名n

on  连接规则n-1

举例 :

 -- 使用 inner join
select * from dbo.stu_info as A
inner join dbo.sname2 as B
on A.sno=B.sno
where A.depart='心理学'
order by B.score desc

/**/  相比上面的 where + and 更简单

高级连接查询

// 这里只是粗略的概括下,来自 书本:《21 天学通SQL Server》  第11章 P226

1、自动连接查询

/**/

select 表名1.* from 表名1,表名2 where 表名1.字段=表名2.字段 and 表名2.字段=‘字段值’

2、内连接查询

等值连接    : 表名1.*=表名2.*

自然连接    : select 后面不使用* ,而是字段名

不等值连接 : 由 >、>=、< 、<= 、<>  、between . . . 查询某些范围内的值

3、左外连接查询

语法         :select * from 表名1 left outer join 表名2 on 表名1.字段=表名2.字段

4、右外连接查询

语法         :select * from 表名1 right outer join 表名2 on 表名1.字段=表名2.字段

5、全外连接查询

语法         :select * from 表名1 full outer join 表名2 on 表名1.字段=表名2.字段

6、交叉连接查询

语法         :select * from 表名1 cross join 表名2

     组合查询

 -- 使用组合查询union

 select * from dbo.stu_info where depart='心理学'
union
select * from dbo.stu_info where datediff(year,date,getdate())>30 -- union 、group by 、聚合函数 三者共同使用
select sno,姓名,score from dbo.sname2
union
select '总分:',姓名,sum(score) from dbo.sname2 group by 姓名
union
select '平均分:',姓名,avg(score) from dbo.sname2 group by 姓名

子查询

select语句中中镶陶一个select语句

语法 :

select  字段1 ,字段2 from 表

where 字段2=(select 字段2 from 表2 where 字段3=‘字段值’)

order by 字段4 desc

SQL Server 基础 05 多链表查询和子查询的更多相关文章

  1. 数据库开发基础-SQl Server 主键、外键、子查询(嵌套查询)

    主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个 ...

  2. 在 SQL Server 数据库的 WHERE 语句中使用子查询

    这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Serv ...

  3. SQL Server的优化器会缓存标量子查询结果集吗

    在这篇博客"ORACLE当中自定义函数性优化浅析"中,我们介绍了通过标量子查询缓存来优化函数性能: 标量子查询缓存(scalar subquery caching)会通过缓存结果减 ...

  4. SQL server基础知识(表操作、数据约束、多表链接查询)

    SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...

  5. MS sql server 基础知识回顾(二)-表连接和子查询

    五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...

  6. SQL Server 基础:子查询

    1.子查询的概念:子查询就是嵌套在主查询中的查询.子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY.2.子查询的分类:2.1按 ...

  7. 【SQL Server】SQL Server基础之存储过程

    SQL Server基础之存储过程  阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...

  8. Sql Server 基础语法

    来自:http://www.cnblogs.com/AaronYang/archive/2012/04/24/2468093.html Sql Server 基础语法 -- 查看数据表 select  ...

  9. 《SQL Server基础——SQL语句》

    SQL Server基础--SQL语句       一.创建和删除数据库: 1.创建数据库(默认化初始值) 格式: CREATE DATABASE 数据库名称 例如: CREATE DATABASE ...

随机推荐

  1. Java "==和equals区别" 示例

    import java.util.Calendar; import java.util.Date; import java.util.Locale; public class test { publi ...

  2. 【转】DevExpress控件安装

    原文链接: DevExpress控件安装.汉化使用教程 - 田园里的蟋蟀 学习网址: 1.DevExpress控件中文网 2.DevExpress控件中文网使用教程 3.DevExpress控件使用经 ...

  3. libcprops

    Install Howto Download the latest epel-release rpm from http://dl.fedoraproject.org/pub/epel/6/x86_6 ...

  4. Teclast/台电 P98HD四核测评9.7寸台电P98HD 评测体验 (转载)

    自从苹果新iPad上市推出后,拥有Retina高清屏幕分辨率的平板让我们的视线一下子变得“清晰”起来,超高2048x1536分辨率也成为厂商们追捧的对象,在经历了双核时代配备高清分辨率对于硬件性能承载 ...

  5. ListBox控件例子

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ListBox.aspx.c ...

  6. angulajs 当input使用 bootstrap的email类型时,如果是无效的email格式,则ng-model无效的情况

    当使用bootstrap的如下input时 <input type="email" ng-model="userid"> 如果输入的内容是无效的em ...

  7. Bug驱动开发(Bug-driven development)

    说实话,作为一个Domino开发者,像測试驱动开发(Test-driven development).功能驱动开发(Feature-driven development)之类软件开发的高大上的方法论( ...

  8. JS中window.document对象

    小知识点注:外面双引号,里面的双引号改为单引号:                  在div里面行高设置和整个外面高度一样,才能用竖直居中,居中是行居中                  文本框取出来 ...

  9. [译]Stairway to Integration Services Level 18 – 部署和执行

    介绍 在本文中,我们要创建一个SSIS Catalog 实例,部署我们的项目,并且运行 weather data loader 包. SSIS 2012 部署模型   SSIS 2012 Deploy ...

  10. CSS: inline-block的应用和float块高度塌陷

    普通流高度塌陷: 当块float浮动时,不会对块布局产生影响,块仍然会按照左右或者上下的顺序排列.但是会影响文档的排列,当文档的高度超过块的高度时,块的高度会产生塌陷现象.   高度塌陷解决方法:   ...