SqlServer之连接
在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表:
交叉连接:
1.如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积;
<span>select</span> <span>*</span> <span>from</span> Course <span>cross</span> <span>join</span> Teacher
结果为:
由此结果可知,它的结果与 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#
结果为:
一般情况下,在效率上,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#
结果为:
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#
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#
结果为:
自连接
其实,在Sql Server中,我们还经常用到一种连接——自连接。
通过以下的例子,来了解自连接:
表树形结构表tb_TestTreeView
解决问题: 树形层次结构显示
/*
这是一个地区表,里面存放了地区名及其所属上级地区,假设现在需要查询出各地区及其所属上级地区。
*/
自连接的方法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
自连接的方法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
结果为:
自连接三级(左联接):
<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
结果为:
自连接三级(内联接):
<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
结果为:
自连接四级(左链接):
<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
结果为:
自连接四级(内链接):
<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
结果为:

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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.

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).

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 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.

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.

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.

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
