SQL的連接分為三種:內連接、外連接、交叉連接。

先給出兩張表:


一、內連接:

????內連接(INNER JOIN):有兩種,顯式的和隱式的,返回連接表中符合連接條件和查詢條件的數據行。(所謂的鏈接表就是數據庫在做查詢形成的中間表)。

1、等值連接

? ? ?概念:在連接條件中使用等于號(=)運算符,其查詢結果中列出被連接表中的所有列,包括其中的重復列。

例子:

select? *?

from T_student s,T_class c?

where s.classId = c.classId

等價于

select? *?

?from T_student s inner join T_class c on s.classId = c.classId

2、不等連接

? ?概念:在連接條件中使用除等于號之外運算符(>、<、<>、>=、<=、!>和!<)

select * from T_student s inner join T_class c on s.classId <> c.classId

二、外連接

? ? 外連接分為左連接(LEFT JOIN)或左外連接(LEFT OUTER JOIN)、右連接(RIGHT JOIN)或右外連接(RIGHT OUTER JOIN)、全連接(FULL JOIN)或全外連接(FULL OUTER JOIN)。我們就簡單的叫:左連接、右連接和全連接。

1、左連接:

? ? 概念:返回左表中的所有行,如果左表中行在右表中沒有匹配行,則結果中右表中的列返回空值。

例如:

select? *

from T_student s left join T_class c on s.classId = c.classId

檢索結果:

? 總結:左連接顯示左表全部行,和右表與左表相同行。

2、右連接:

? ?概念:恰與左連接相反,返回右表中的所有行,如果右表中行在左表中沒有匹配行,則結果中左表中的列返回空值。

例如:

????? select?*?from??T_student?s?right?join?T_class?c?on?s.classId?=?c.classId

檢索結果:

 總結:右連接恰與左連接相反,顯示右表全部行,和左表與右表相同行。

3、全連接:

  概念:返回左表和右表中的所有行。當某行在另一表中沒有匹配行,則另一表中的列返回空值。

?????select?*?from??T_student?s?full?join?T_class?c?on?s.classId?=?c.classId

 ? 總結:返回左表和右表中的所有行。

三、交叉連接(CROSS JOIN):也稱迪卡爾積

概念:不帶WHERE條件子句,它將會返回被連接的兩個表的笛卡爾積,返回結果的 行數等于兩個表行數的乘積 (例如:T_student和T_class,返回4*4=16條記錄),如果帶where,返回或顯示的是匹配的行數。

1、不帶where:

  1. ???select?*from?T_student?cross?join?T_class? ? //cross join 可以省略不寫
  2. ??等于
  3. ???select?*from?T_student,?T_class
總結:相當與笛卡爾積,左表和右表組合。

2、有where子句,往往會先生成兩個表行數乘積的數據表,然后才根據where條件從中選擇。

  1. select?*?from?T_student?s?cross?join?T_class c?where?s.classId?=?c.classId???
  2.  ??(注:cross?join后加條件只能用where,不能用on)??
查詢結果跟等值連接的查詢結果是一樣。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/274033.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/274033.shtml
英文地址,請注明出處:http://en.pswp.cn/news/274033.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在使用摩托羅拉上的RSS閱讀器應用進行一次訂閱

訂閱一個CSDN的RSS為例。 1、打開RSS閱讀器。 2、設置->新增訂閱->手動新增 訂閱URL:輸入http://articles.csdn.net/api/rss.php?tid1000 &#xff08;可以先在PC上打開下該網頁&#xff0c;發現他是一個xml網頁。&#xff09; 訂閱名稱&#xff1a;自己起一個名字&…

RTP與RTCP協議介紹

本文轉自&#xff1a;http://blog.51cto.com/zhangjunhd/25481 1&#xff0e;流媒體( Streaming Media) 1.1流媒體概念 流媒體技術是網絡技術和多媒體技術發展到一定階段的產物。術語流媒體既可以指在網上傳輸連續時基媒體的流式技術,也可以指使用流式技術的連續時基媒體本身…

JSP學習

一、JSP 簡介 什么是Java Server Pages? JSP全稱Java Server Pages&#xff0c;是一種動態網頁開發技術。它使用JSP標簽在HTML網頁中插入Java代碼。標簽通常以<%開頭以%>結束。 JSP是一種Java servlet&#xff0c;主要用于實現Java web應用程序的用戶界面部分。網頁開發…

Java給定一個字符串數組,判斷每個字符出現次數

題目要求&#xff1a;給定一個字符串&#xff0c;判斷每個字符出現多少次&#xff1f; 解決思路&#xff1a;利用Map的特性&#xff1a;即Map集合中如果兩個key&#xff08;鍵&#xff09;值是一樣相同的&#xff0c;那么&#xff0c;后放&#xff08;put&#xff09;入的值會將…

Java-n個人報數

題目&#xff1a; 有n個人圍成一圈&#xff0c;順序排號。從第一個人開始報數&#xff08;從1到3報數&#xff09;&#xff0c;凡報到3的人退出圈子&#xff0c;問最后留下的是原來第幾號的哪一位&#xff1f; 大概思路&#xff1a;假設有3個人&#xff0c;它們圍成一圈&#x…

100個直接可以拿來用的JavaScript實用功能代碼片段

http://www.cnblogs.com/wxydigua/p/3314274.html轉載于:https://www.cnblogs.com/kevinge/p/3316315.html

[轉]JS Cookie 中文亂碼

首先是一個解析cookie的函數&#xff1a; <script type"text/javascript"> function getCookie(name) { var cookies document.cookie.split(";"); for(var i0;i<cookies.length;i) { var cookie cookies[i]; var cookieStr cookie.…

Java線程中關于Synchronized的用法

synchronized是Java中的關鍵字&#xff0c;是一種同步鎖。它修飾的對象有以下幾種&#xff1a; 1. 修飾一個代碼塊&#xff0c;被修飾的代碼塊稱為同步語句塊&#xff0c;其作用的范圍是大括號{}括起來的代碼&#xff0c;作用的對象是調用這個代碼塊的對象&#xff1b; 2. 修飾…

cmd命令行設置環境變量

http://blog.sciencenet.cn/blog-51026-566742.html 1、查看當前所有可用的環境變量&#xff1a;輸入 set 即可查看。 2、查看某個環境變量&#xff1a;輸入 “set 變量名”即可&#xff0c;比如想查看path變量的值&#xff0c;即輸入 set path。 3、修改環境變量 &#xff1a;…

Java線程之多線程與多進程(1)——以操作系統的角度述說線程與進程

任務調度 線程是什么&#xff1f;要理解這個概念&#xff0c;須要先了解一下操作系統的一些相關概念。大部分操作系統(如Windows、Linux)的任務調度是采用時間片輪轉的搶占式調度方式&#xff0c;也就是說一個任務執行一小段時間后強制暫停去執行下一個任務&#xff0c;每個任務…

用 PS 調整服務器時間

用 PS 調整服務器時間 Powershell 有一個命令用來調整計算機的時間&#xff0c; Set-Date -Adjust&#xff0c;但是&#xff0c;只能調整本地時間&#xff0c;不能調整遠程的計算機時間。 function AdjustDCTime ( $Server, $addTime ){ $Svr Get-WmiObject Win32_Operatin…

Java線程之多線程與多進程(2)——線程優先級與線程安全

線程優先級 現在主流操作系統(如Windows、Linux、Mac OS X)的任務調度除了具有前面提到的時間片輪轉的特點外&#xff0c;還有優先級調度(Priority Schedule)的特點。優先級調度決定了線程按照什么順序輪流執行&#xff0c;在具有優先級調度的系統中&#xff0c;線程擁有各自的…

mahout貝葉斯算法開發思路(拓展篇)1

首先說明一點&#xff0c;此篇blog解決的問題是就下面的數據如何應用mahout中的貝葉斯算法&#xff1f;&#xff08;這個問題是在上篇&#xff08;。。。完結篇&#xff09;blog最后留的問題&#xff0c;如果想直接使用該工具&#xff0c;可以在mahout貝葉斯算法拓展下載&#…

Java線程之多線程與多進程(3)——Java中的多線程

單線程 任何程序至少有一個線程&#xff0c;即使你沒有主動地創建線程&#xff0c;程序從一開始執行就有一個默認的線程&#xff0c;被稱為主線程&#xff0c;只有一個線程的程序稱為單線程程序。如下面這一簡單的代碼&#xff0c;沒有顯示地創建一個線程&#xff0c;程序從mai…

幾種常用控件的使用方法

1.UIActivityIndicatorView的使用 UIActivityIndicatorView *activity[[[UIActivityIndicatorViewalloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]autorelease]; z [activity setFrame:CGRectMake(150,150, 50, 50)]; [self.window addSubview:activ…

Java-正則表達式

什么是正則表達式&#xff1f; 正則表達式(Regular Expression)就是用某種模式去匹配一類字符串的公式。如你要在一篇文章中查找第一個字是“李”最后一個字是“建”的三個字的姓名&#xff0c;即“李*建”&#xff1b;那么“李*建”就是公式&#xff0c;也稱作模式(Pattern)&a…

tab標簽的另一種寫法

<div class"good"><ul><li><span>歌曲精選</span></li><li class"other"><span>MV精選</span></li></ul><div class"music_good"><p><span>丁當</span…

java 中 if與while的區別

if&#xff1a;就是一個判斷的&#xff0c;如果滿足后面的條件就繼續運行if語句里面的東西的&#xff0c;要是不滿足就跳出來&#xff0c;執行else語句或執行下面的語句的 。while&#xff1a;就是循環語句的&#xff0c;當滿足while里面的條件時&#xff0c;就會執行里面的循環…

install yael on the ubuntu 12.04

1. bits/predefs.h no such file or directory ??? sudo apt-get install gcc-multilib 2. sudo gedit /etc/profile PATH$PATH:/usr/local/MATLAB/R2012a/bin source /etc/profile 3.ubuntu 切換gcc 版本 1&#xff09;sudo apt-get install gcc-4.4 g-4.4 g-4.4-multi…

Java 線程多線程編程3---線程同步之生產者與消費者問題

生產者與消費者問題&#xff1a; 第一步&#xff1a;把架子搭起來 package com.zhj.www;public class ProceduerConsumer {public static void main(String[] args) {} }//饅頭實體 class wotou{int id;wotou(int id) {this.id id;}public String toString() {return "wo…