章节2:SQL之多表连接
原文:章节2:SQL之多表连接
Sql的多表连接关系有:内连接、外连接和交叉连接。
先建立两个用于演示的表:
TB_Characters:
| Id | Character |
| 1 | 内向 |
| 2 | 外向 |
| 3 | 中性性格 |
TB_Colors:
| Id | Color |
| 1 | 绿色 |
| 2 | 红色 |
| 4 | 蓝色 |
一、内连接:
内连接(JOIN 或 INNER JOIN):内连接取交集
示意图:

SELECT * FROM tb_characters INNER JOIN tb_colors ON tb_characters.ID = tb_colors.ID;
结果:

二、外连接:
外连接可分为:左连接、右连接、完全外连接。
1、左连接(LEFT JOIN):
示意图:

SELECT * FROM tb_characters LEFT JOIN tb_colors ON tb_characters.ID = tb_colors.ID;
结果:

2、右连接(RIGHT JOIN):
示意图:

SELECT * FROM tb_characters RIGHT JOIN tb_colors ON tb_characters.ID = tb_colors.ID;
结果:

3、完全外连接:
示意图:

select * from tb_characters LEFT JOIN tb_colors on tb_characters.ID=tb_colors.ID
UNION
select * from tb_characters RIGHT JOIN tb_colors on tb_characters.ID=tb_colors.ID
结果:

三、交叉连接( CROSS JOIN ):
交叉连接产生连接所涉及的表的笛卡尔积。
SELECT * FROM tb_characters CROSS JOIN tb_colors;
结果:

补充:
1、如下可获取内连接结果:
SELECT * FROM tb_characters,tb_colors WHERE tb_characters.ID = tb_colors.ID;
2、如下可获取交叉连接结果:
SELECT * FROM tb_characters,tb_colors;
章节2:SQL之多表连接的更多相关文章
- SQL的多表连接查询
SQL的多表连接查询 多表连接查询具有两种规范,SQL92和SQL99规范. SQL92规范支持下列多表连接查询: (1)等值连接: (2)非等值连接: (3)外连接: (4)广义笛卡尔积: SQL9 ...
- sql之多表连接
最近遇到特别多多表连接的问题,因此随笔记下,开始学java和mysql的时间太短,有见解不周的地方,希望读者可以提出探讨. 对于left join.right join和inner join(join ...
- sql数据库的表连接方式图文详解
sql数据库表连接,主要分为:内连接.外连接(左连接.右连接 .全连接).交叉连接,今天统一整合一下,看看他们的区别. 首先建表填充值. 学生表:student(id,姓名,年龄,性别 ) 成绩表 ...
- SQL语句多表连接查询语法
一.外连接 1.左连接 left join 或 left outer join SQL语句:select * from student left join score on student.Num= ...
- SQL server 数据库——表连接(多表横向连接,纵向连接)
表连接 1.select * from student,score --笛卡尔积 2.两个表的连接: 法1:select student.sno, sname, degree from student ...
- SQL update 多表连接方法
SQL Update多表联合更新的方法 () sqlite 多表更新方法 //---------------------------------- update t1 set col1=t2.col1 ...
- SQL语法 之 表连接
一.连接条件 连接查询中用来连接连个表的条件称为连接条件或连接谓词.其形式为: [<表1>].<列名1> <连接运算符> [<表2>].<列2&g ...
- sql语句左右表连接理解
一句话,左连接where只影响坐标,右连接where只影响右表
- SQL优化之表连接方式
1.嵌套循环(DESTED LOOPS) Note:嵌套循环被驱动表必须走索引,而且索引只能走INDEX UNIQUE SCAN或者INDEX RANGE SCAN SQL> select /* ...
随机推荐
- 实现strcmp非常easy的思维
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> void strcom(char *s ...
- 通过action 跨进程启动activity
在一些场景中我们需要从一个进程启动另外的一个应用的activity,这有什么好办法? 这里介绍一种方法,通过自定义 action 通过filter来启动. 如果你需要启动一个你自己写的另一个app的a ...
- uva 11427 - Expect the Expected(概率)
题目链接:uva 11427 - Expect the Expected 题目大意:你每天晚上都会玩纸牌,每天固定最多玩n盘,每盘胜利的概率为p,你是一个固执的人,每天一定要保证胜局的比例大于p才会结 ...
- android 编译调用C代码
博客地址:www.zalezone.cn 前言 需求来源 这几天帮别人做一个简单的androidclient,也没什么功能,主要就是调用C代码来对手机的Wifi网络进行设置.于是也就引出了技术难点所在 ...
- Java进阶 创建和销毁对象
最近准备写点Javase的东西,希望可以帮助大家写出更好的代码. 1.给不可实例化的类提供私有构造器 比如:每个项目中都有很多工具类,提供了很多static类型的方法供大家使用,谁也不希望看到下面的代 ...
- Java Metrics
Java Metrics Java Metrics是一个功能比較强大的java统计库,它的输出组件也非常强大,帮我们做好了: 输出到Ganglia 输出到控制台 输出到JMX 输出Json 具体见:d ...
- 什么是“Bash”破绽?
摘要:近来的linux系统出现"Bash"漏洞可以被认为是第一个互联网造成安全讨论和思考.错的资料. 什么是"Bash"漏洞?它是怎样工作的?它是否可以成为新的 ...
- 【原创】leetCodeOj --- Excel Sheet Column Title 解题报告
题目地址: https://oj.leetcode.com/problems/excel-sheet-column-title/ 题目内容: Given a positive integer, ret ...
- Android开发之Handler和Looper的关系
关于Handler的总结. Message:消息,当中包括了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理. Handler:处 ...
- 相关Jquery Validator采用
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs& ...