连接查询

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

 -- 多表连接查询和子查询
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. bzoj 1857: [Scoi2010]传送带 三分

    题目链接 1857: [Scoi2010]传送带 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 934  Solved: 501[Submit][Stat ...

  2. Centos 安装docker报错

    错误信息: 安装报错:Transaction check error:  file /usr/lib/systemd/system/blk-availability.service from inst ...

  3. Linux C 实现Ping功能的程序.

    ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具.ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,这 ...

  4. Sublime Text2

    Ctrl+L选择整行(按住-继续选择下行) Ctrl+KK 从光标处删除至行尾 Ctrl+Shift+K 删除整行 Ctrl+Shift+D 复制光标所在整行,插入在该行之前 Ctrl+J 合并行(已 ...

  5. angularjs学习总结(快速预览版)

    对html标签的增强 -> 指令 指令的本质是什么 声明的方式调用相应的脚本,实现一些操作,声明的所在的dom就是脚本的执行上下文? 自定义标签 -- 标签指令自定义属性 -- 属性指令特定格式 ...

  6. 查看LINUX系统版本和硬件信息

    查看发行版本 # cat /etc/issue Red Hat Enterprise Linux Server release 6.2 (Santiago) 查看内核 # uname -a Linux ...

  7. Oracle 动态查询,EXECUTE IMMEDIATE select into使用方法

    create or replace procedure TEST_TABLE is l_table_name varchar2(50); query_stat varchar2(100); l_zyq ...

  8. DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents

    上一节,已经介绍了ASPxGridView的自定义列和基本事件 ,本节接着将介绍Dev控件的客户端事件模型. 在上节示例基础上,我们增加一行菜单,使用Dev的ASPxMenu来实现,如下图所示. 图一 ...

  9. WRTnode 的 HTTP Web 开关实验(2016-05-16)

    前言 这里是节取自 物联网的任意门——WRTnode2R 评测 中的 http web 开关灯实验,所以有一些前置设置如果没有描述清楚可参考该处. 正文 步骤一:编辑一个 html 文件,放在 /ww ...

  10. Java,js,多条件split字符分割

    后台字符串分割处理: String s = "i20002/400|i3030/300";        String[] s1 = s.split("\\||/&quo ...