【SQL】- 基础知识梳理(三) - SQL连接查询
一、引言
有时为了得到一张报表的完整数据,需要从两个或更多的表中获取结果,这时就用到了“连接查询”。
二、连接查询
连接查询的定义:
数据库中的表通过键将彼此联系起来,从而获取这些表中的数据
连接查询的语法:
ROM join_table join_type join_table[ON (join_condition)]
其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。join_type 指出连接类型。join_condition指连接条件。使用比较运算符(包括=、>、<、<>、>=、<=、!>和!<)进行表间的比较操作
三、连接类型
连接类型的分类:内连接、外连接、交叉连接
下面做数据准备:
- create table Student
- (
- id int not null,
- Studentname varchar(),
- ClassId nvarchar()
- )
- go
- insert into Student values
- (,'michael',),
- (,'cumming',),
- (,'andy',),
- (,'pgone',)
- go
- create table Class
- (
- id int not null,
- name varchar()
- )
- go
- insert into Class values
- (,'一班'),
- (,'二班'),
- (,'三班'),
- (,'四班')
- go
内连接:返回左右表中相互匹配的
- select * from Student a inner join Class b on a.ClassId=b.id
- “等于”
- select * from Student a,Class b where a.ClassId=b.id
外连接:左连接(LEFT JOIN)或左外连接(LEFT OUTER JOIN)、右连接(RIGHT JOIN)或右外连接(RIGHT OUTER JOIN)、全连接(FULL JOIN)或全外连接(FULL OUTER JOIN)。我们就简单的叫:左连接、右连接和全连接。
左连接:返回左表中的行,如果左表中的行在右表中没有匹配行,则结果集中右表的行返回空值
- select * from Student a left join Class b on a.ClassId=b.id
右连接:与左连接相对,返回右表中的行,如果右表中的行在左表中没有匹配行,则结果集中左表的行返回空值
- select * from Student a right join Class b on a.ClassId=b.id
全连接:返回左右两表中的所有行,当某行在另一表中没有匹配行时,则另一表返回空值
- select * from Student a full join Class b on a.ClassId=b.id
交叉连接:返回被连接两个表的笛卡尔积,返回的行数等于两个表行数的乘积(例如:student和class,返回4*4=16条记录)
- select * from Student a cross join Class b
(注:cross join后加条件只能用where,不能用on)
【SQL】- 基础知识梳理(三) - SQL连接查询的更多相关文章
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式
SQL 基础知识梳理(六)- 函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2. ...
- [SQL] SQL 基础知识梳理(七)- 集合运算
SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...
- 学习如何看懂SQL Server执行计划(三)——连接查询篇
三.连接查询部分 --------------------嵌套循环-------------------- /* UserInfo表数据少.Coupon表数据多嵌套循环可以理解为就是两层For循环,外 ...
- 常见SQL语句和SQL基础知识
引自:http://blog.csdn.net/u012467492/article/details/46790205 SQL语句考察(一) 1.查询出每门课都大于80 分的学生姓名 name k ...
- [SQL基础教程] 3-1 对表进行聚合查询
[SQL基础教程] 3-1 对表进行聚合查询 聚合函数 用于合计的函数称为聚合函数或者集合函数 COUNT SUM AVG MAX MIN SELECT COUNT(*) FROM table; SE ...
随机推荐
- jenkins 从git拉取代码
步骤 jenkins已集成git插件(如无,请自行下载) 1. 去到源码管理栏,选中Git: 使用http协议去获取代码 Repository URL填写http的git地址,此时未选择相应的Cred ...
- Android 主题theme说明 摘记
主题Theme就是用来设置界面UI风格,可以设置整个应用或者某个活动Activity的界面风格.在Android SDK中内置了下面的Theme,可以按标题栏Title Bar和状态栏Status B ...
- 【Centos7】安装memcached
1.Linux系统安装memcached,首先要先安装libevent库. 安装libevent库有两种方式 (1)rpm安装 yum install libevent libdeve (2)源码包安 ...
- 【2016北京集训测试赛(十)】 Azelso (期望DP)
Time Limit: 1000 ms Memory Limit: 256 MB Description 题解 状态表示: 这题的状态表示有点难想...... 设$f_i$表示第$i$个事件经过之 ...
- ASM的备份集在文件系统上恢复测试
背景:最近时常有客户咨询这类问题,其实很简单一个操作,但由于每个人的理解差异,也容易出现各种问题或者误解,本文主要总结下这个过程以及常遇到的问题处理. 环境:Site A(Oracle RAC 11. ...
- Intelli IDEA学习系列之快捷键篇
Intelli IDEA学习系列之快捷键篇 IDEA简介: IDEA 全称IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能 ...
- SQL Server内存
背景 最近一个客户找到我说是所有的SQL Server 服务器的内存都被用光了,然后截图给我看了一台服务器的任务管理器.如图 这里要说明一下任务管理器不会完整的告诉真的内存或者CPU的使用情况,也就是 ...
- MySQL(二)之服务管理与初始化文件修改和连接MySQL
上一篇给大家介绍了怎么在linux和windows中安装mysql,本来是可以放在首页的,但是博客园说“安装配置类文件”不让放在首页.接下来给大家介绍一下在linux和windows下MySQL的一下 ...
- Tomcat Cluster负载均衡
author:JevonWei 版权声明:原创作品 Tomcat Cluster负载均衡 环境 tomcatA 172.16.253.108 tomcatB 172.16.253.105 代理服务器 ...
- sqlserver自定义函数
标量函数 RETURNS 子句指定一种标量数据类型,则函数为标量值函数. 语法 Create function 函数名(参数) Returns 返回值数据类型 [with {Encryption | ...