Heim Datenbank MySQL-Tutorial SqlServer之连接

SqlServer之连接

Jun 07, 2016 pm 03:51 PM
server sql sqlserver uns 连接

在sql server中,我们经常能用到连接,今天总结一下连接的基础知识。 连接的分类: 交叉连接 CROSS JOIN 内连接 INNER JOIN 外连接{左外连接 LEFT [OUTER] JOIN ;右外连接 RIGHT [OUTER] JOIN ;全外连接 full [outer] join } 自连接 以下通过例子来了解各

在sql server中,我们经常能用到连接,今天总结一下连接的基础知识。
连接的分类:

  • 交叉连接CROSS JOIN
  • 内连接INNER JOIN
  • 外连接{左外连接LEFT [OUTER] JOIN ;右外连接RIGHT [OUTER] JOIN;全外连接full [outer] join}
  • 自连接

以下通过例子来了解各个连接的异同点:

有两张表Teacher表和Course表:

SqlServer之连接

SqlServer之连接

交叉连接:

1.如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积;

<span>select</span> <span>*</span> <span>from</span> Course <span>cross</span> <span>join</span> Teacher
Nach dem Login kopieren

结果为:

SqlServer之连接

由此结果可知,它的结果与 SELECT * FROM Course,Teacher 的结果相同。

2.如果有WHERE子句的话,往往会先生成两个表行数乘积的数据表然后才根据WHERE条件从中选择。

<span>1. select</span> <span>*</span> <span>from</span> Course,Teacher <span>where</span> Course.T#<span>=</span>Teacher.T#
<span>2. select</span> <span>*</span> <span>from</span> Course <span>cross</span> <span>join</span> Teacher <span>where</span> Course.T#<span>=</span>Teacher.T#<strong><span><span>  (</span><span>注:cross join后加条件只能用where,不能用on)</span></span></strong>
<span>3. select</span> <span>*</span> <span>from</span> Course <span>inner</span> <span>join</span> Teacher <span>on</span> Course.T#<span>=</span>Teacher.T#
Nach dem Login kopieren

结果为:

SqlServer之连接

一般情况下,在效率上,Where可能具有和Inner join一样的效率,但是,在多表连接时,我们并不推荐使用where语句。
所以如果可以选择,我们最好使用语句3,有时使用Join语句可以帮助检查语句中的无效或者误写的关联条件。

内连接

内连接表示两边表同时符合条件的组合,就相当于普通的CROSS JOIN,只是格式不一样,
INNER JOIN在后面有一个ON子句(相当于WHERE)的搜索条件,用于过滤返回的行。
内连接没有笛卡尔积那么复杂要先生成行数乘积的数据表,所以内连接的效率要高于笛卡尔积的交叉连接。

外连接

指定条件的内连接,仅仅返回符合连接条件的条目。
外连接则不同,返回的结果不仅包含符合连接条件的行,而且包括左表(左外连接时), 右表(右连接时)或者两边连接(全外连接时)的所有数据行。

1)左外连接LEFT [OUTER] JOIN
显示符合条件的数据行,同时显示左边数据表不符合条件的数据行,右边没有对应的条目显示NULL

<span>select</span> <span>*</span> <span>from</span> Course <span>left</span> <span>outer</span> <span>join</span> Teacher <span>on</span> Course.T#<span>=</span>Teacher.T#
Nach dem Login kopieren

结果为:

SqlServer之连接

2)右外连接RIGHT [OUTER] JOIN
显示符合条件的数据行,同时显示右边数据表不符合条件的数据行,左边没有对应的条目显示NULL

<span>select</span> <span>*</span> <span>from</span> Course <span>right</span> <span>outer</span> <span>join</span> Teacher <span>on</span> Course.T#<span>=</span>Teacher.T#
Nach dem Login kopieren
结果为:

SqlServer之连接



3)全外连接full [outer] join

显示符合条件的数据行,同时显示左右不符合条件的数据行,相应的左右两边显示NULL,即显示左连接、右连接和内连接的并集。

<span>select</span> <span>*</span> <span>from</span> Course <span>full</span> <span>outer</span> <span>join</span> Teacher <span>on</span> Course.T#<span>=</span>Teacher.T#
Nach dem Login kopieren

结果为:

SqlServer之连接

自连接

其实,在Sql Server中,我们还经常用到一种连接——自连接。
通过以下的例子,来了解自连接:
表树形结构表tb_TestTreeView

SqlServer之连接

解决问题: 树形层次结构显示
/*
 这是一个地区表,里面存放了地区名及其所属上级地区,假设现在需要查询出各地区及其所属上级地区。
*/

自连接的方法1:

<span>select</span> <span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>地区名</span><span>'</span>,
  (<span>select</span> <span>[</span><span>Name</span><span>]</span> <span>from</span> tb_TestTreeView <span>as</span> a
    <span>where</span> a.ID <span>=</span> b.Parent ) <span>as</span> <span>'</span><span>上级地区名</span><span>'</span>
<span>from</span> tb_TestTreeView <span>as</span> b
Nach dem Login kopieren

自连接的方法2:

<span>select</span> a.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>地区名</span><span>'</span>,
       b.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上级地区名</span><span>'</span>
<span>from</span> tb_TestTreeView <span>as</span> a
<span>left</span> <span>join</span> tb_TestTreeView <span>as</span> b
     <span>on</span> a.Parent <span>=</span> b.ID
Nach dem Login kopieren

结果为:

SqlServer之连接

自连接三级(左联接):

SqlServer之连接

<span>select</span> a.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>地区名</span><span>'</span>,
       b.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上级地区名</span><span>'</span>,
       c.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上上级地区名</span><span>'</span>
<span>from</span> tb_TestTreeView <span>as</span> a
<span>left</span> <span>join</span> tb_TestTreeView <span>as</span> b
     <span>on</span> a.Parent <span>=</span> b.ID 
<span>left</span> <span>join</span> tb_TestTreeView <span>as</span> c
     <span>on</span> b.parent<span>=</span>c.id
Nach dem Login kopieren

SqlServer之连接

结果为:

SqlServer之连接

自连接三级(内联接):

SqlServer之连接

<span>select</span> a.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>地区名</span><span>'</span>,
       b.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上级地区名</span><span>'</span>,
       c.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上上级地区名</span><span>'</span>
<span>from</span> tb_TestTreeView <span>as</span> a
<span>inner</span> <span>join</span> tb_TestTreeView <span>as</span> b
     <span>on</span> a.Parent <span>=</span> b.ID 
<span>inner</span> <span>join</span> tb_TestTreeView <span>as</span> c
     <span>on</span> b.parent<span>=</span>c.id
Nach dem Login kopieren

SqlServer之连接

结果为:SqlServer之连接

自连接四级(左链接):

SqlServer之连接

<span>select</span> a.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>地区名</span><span>'</span>,
       b.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上级地区名</span><span>'</span>,
       c.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上上级地区名</span><span>'</span>,
       d.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上上上级地区名</span><span>'</span>
<span>from</span> tb_TestTreeView <span>as</span> a
<span>left</span> <span>join</span> tb_TestTreeView <span>as</span> b
     <span>on</span> a.Parent <span>=</span> b.ID 
<span>left</span> <span>join</span> tb_TestTreeView <span>as</span> c
     <span>on</span> b.parent<span>=</span>c.id
<span>left</span> <span>join</span> tb_TestTreeView <span>as</span> d
     <span>on</span> c.parent<span>=</span>d.id
Nach dem Login kopieren

SqlServer之连接

结果为:


SqlServer之连接



自连接四级(内链接):

SqlServer之连接

<span>select</span> a.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>地区名</span><span>'</span>,
       b.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上级地区名</span><span>'</span>,
       c.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上上级地区名</span><span>'</span>,
       d.<span>[</span><span>Name</span><span>]</span> <span>as</span> <span>'</span><span>上上上级地区名</span><span>'</span>
<span>from</span> tb_TestTreeView <span>as</span> a
<span>inner</span> <span>join</span> tb_TestTreeView <span>as</span> b
     <span>on</span> a.Parent <span>=</span> b.ID
<span>inner</span> <span>join</span> tb_TestTreeView <span>as</span> c
     <span>on</span> b.Parent <span>=</span> c.ID
<span>inner</span> <span>join</span> tb_TestTreeView <span>as</span> d
     <span>on</span> c.Parent <span>=</span> d.ID
Nach dem Login kopieren

SqlServer之连接

结果为:

SqlServer之连接



Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So importieren Sie eine MDF-Datei in SQL Server So importieren Sie eine MDF-Datei in SQL Server Apr 08, 2024 am 11:41 AM

Die Importschritte sind wie folgt: Kopieren Sie die MDF-Datei in das Datenverzeichnis von SQL Server (normalerweise C:\Programme\Microsoft SQL Server\MSSQL\DATA). Öffnen Sie in SQL Server Management Studio (SSMS) die Datenbank und wählen Sie Anhängen aus. Klicken Sie auf die Schaltfläche „Hinzufügen“ und wählen Sie die MDF-Datei aus. Bestätigen Sie den Datenbanknamen und klicken Sie auf die Schaltfläche OK.

So lösen Sie das Problem, dass das genannte Objekt bereits in der SQLServer-Datenbank vorhanden ist So lösen Sie das Problem, dass das genannte Objekt bereits in der SQLServer-Datenbank vorhanden ist Apr 05, 2024 pm 09:42 PM

Für Objekte mit demselben Namen, die bereits in der SQL Server-Datenbank vorhanden sind, müssen folgende Schritte ausgeführt werden: Bestätigen Sie den Objekttyp (Tabelle, Ansicht, gespeicherte Prozedur). Mit IF NOT EXISTS kann die Erstellung übersprungen werden, wenn das Objekt leer ist. Wenn das Objekt Daten enthält, verwenden Sie einen anderen Namen oder ändern Sie die Struktur. Verwenden Sie DROP, um vorhandene Objekte zu löschen (Vorsicht, Sicherung empfohlen). Suchen Sie nach Schemaänderungen, um sicherzustellen, dass keine Verweise auf gelöschte oder umbenannte Objekte vorhanden sind.

Was ist der Unterschied zwischen HQL und SQL im Hibernate-Framework? Was ist der Unterschied zwischen HQL und SQL im Hibernate-Framework? Apr 17, 2024 pm 02:57 PM

HQL und SQL werden im Hibernate-Framework verglichen: HQL (1. Objektorientierte Syntax, 2. Datenbankunabhängige Abfragen, 3. Typsicherheit), während SQL die Datenbank direkt betreibt (1. Datenbankunabhängige Standards, 2. Komplexe ausführbare Datei). Abfragen und Datenmanipulation).

Was tun, wenn der SQLServer-Dienst nicht gestartet werden kann? Was tun, wenn der SQLServer-Dienst nicht gestartet werden kann? Apr 05, 2024 pm 10:00 PM

Wenn der SQL Server-Dienst nicht gestartet werden kann, können Sie die folgenden Schritte beheben: Überprüfen Sie das Fehlerprotokoll, um die Grundursache zu ermitteln. Stellen Sie sicher, dass das Dienstkonto über die Berechtigung zum Starten des Dienstes verfügt. Überprüfen Sie, ob Abhängigkeitsdienste ausgeführt werden. Deaktivieren Sie die Antivirensoftware. Reparieren Sie die SQL Server-Installation. Wenn die Reparatur nicht funktioniert, installieren Sie SQL Server neu.

So überprüfen Sie die SQLServer-Portnummer So überprüfen Sie die SQLServer-Portnummer Apr 05, 2024 pm 09:57 PM

So zeigen Sie die SQL Server-Portnummer an: Öffnen Sie SSMS und stellen Sie eine Verbindung zum Server her. Suchen Sie den Servernamen im Objekt-Explorer, klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften. Sehen Sie sich auf der Registerkarte „Verbindung“ das Feld „TCP-Port“ an.

So stellen Sie eine versehentlich gelöschte Datenbank in SQL Server wieder her So stellen Sie eine versehentlich gelöschte Datenbank in SQL Server wieder her Apr 05, 2024 pm 10:39 PM

Wenn Sie eine SQL Server-Datenbank versehentlich löschen, können Sie die Datenbankaktivität stoppen; Party-Tools. Bitte sichern Sie Ihre Datenbank regelmäßig und aktivieren Sie die Transaktionsprotokollierung, um Datenverlust zu verhindern.

Wo ist die SQLServer-Datenbank? Wo ist die SQLServer-Datenbank? Apr 05, 2024 pm 08:21 PM

SQL Server-Datenbankdateien werden normalerweise am folgenden Standardspeicherort gespeichert: Windows: C:\Programme\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data Der Speicherort der Datenbankdatei kann durch Ändern des Datenbankdateipfads angepasst werden Einstellung.

Wie lösche ich SQL Server, wenn die Installation fehlschlägt? Wie lösche ich SQL Server, wenn die Installation fehlschlägt? Apr 05, 2024 pm 11:27 PM

Wenn die SQL Server-Installation fehlschlägt, können Sie sie mit den folgenden Schritten bereinigen: Deinstallieren Sie SQL Server. Löschen Sie Registrierungsschlüssel. Löschen Sie Dateien und Ordner. Starten Sie den Computer neu

See all articles