tft每日頭條

 > 生活

 > sqlserver的講解及應用

sqlserver的講解及應用

生活 更新时间:2024-07-17 23:26:19

每日分享最新,最流行的軟件開發知識與最新行業趨勢,希望大家能夠一鍵三連,多多支持,跪求關注,點贊,留言。
在本文中,我們将學習 SQL 連接。我将解釋 Devart SQL Complete 的工作原理以及它對編寫 SQL 查詢的開發人員有何幫助。

在本文中,我們将學習 SQL 連接。此外,我們還将了解SQL IntelliSence功能及其用途。此外,我将解釋Devart SQL Complete 的工作原理以及它對編寫 SQL 查詢的開發人員有何用處。

SQL 連接通過使用公共列連接它們來填充來自不同表的數據。有四種類型的連接。

  1. 内部聯接
  2. 左連接或左外連接
  3. 右連接或右外連接
  4. 全連接

為了演示,我創建了一個名為 demodatabase 的數據庫,其中包含三個表。創建表的腳本如下:

USE [demodatabase]
GO
CREATE TABLE [dbo].[tblStudent](
[student_code] [varchar](10) NULL,
[student_name] [varchar](500) NULL,
[ADDRESS] [varchar](5000) NULL,
[School_ID] INT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[tblSchool](
[School_Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NULL,
[Category_ID] int
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[tblSchoolCategory](
[Category_Id] [int] IDENTITY(1,1) NOT NULL,
[Category_Name] [varchar](50) NULL
) ON [PRIMARY]
GO


插入數據的腳本如下:

INSERT INTO [tblStudent] (student_code, student_name, ADDRESS, School_ID) VALUES
('STUD0001', ' Kayla Woodcock', ' K201 PRAMUKH GLORY SARGASAN', 1),
('STUD0002', ' Hudson Onslow', ' K205 PRAMUKH GLORY SARGASAN', 1),
('STUD0003', ' Isabella Rupp', ' G201 PRAMUKH LOTUS SARGASAN', 2),
('STUD0004', ' Eva Muirden', ' A205 PRAMUKH NAGAR SARGASAN', 4),
('STUD0005', ' Sophia Hinton', ' A205 PRAMUKH NAGAR SARGASAN', 2),
('STUD0006', ' Amy Trefl', ' A205 PRAMUKH NAGAR SARGASAN', 1)
GO
INSERT INTO tblSchool(Name,Category_ID) VALUES
('NALANDA SCHOOL',1),
('BN HIGH SCHOOL',1),
('Sarvajanik School',2),
('LP Sawani School',NULL),
('Karvy School',NULL),
('S V Shah Vidhya vihar',NULL)
INSERT INTO tblSchoolCategory(Category_Name) VALUES
('A'),
('B'),
('C')

現在,讓我們了解 SQL Join 的工作原理。

内部聯接

當您合并兩個表的記錄并僅填充來自兩個表的匹配數據時,将使用内部聯接。INNER JOIN 的語法如下:

SELECT <column_1>,<column_2>… FROM <table_name_1> INNER JOIN <table_name_2> ON <table_name_1>.<column_1>=<table_name_2>.<column_2>


例如,我們要顯示學生名單和他們就讀的學校名稱。查詢如下:

SELECT s.student_code,s.student_name,s.ADDRESS,T.Name FROM tblSchool t
Inner JOIN tblStudent s ON s.School_ID=T.School_Id


查詢輸出:

sqlserver的講解及應用(SQLServer聯接概述)1


左連接或左外連接

當您想要合并兩個表的記錄、填充兩個表中的匹配記錄以及左表中的所有記錄時,使用左連接。如果右表沒有匹配的記錄,查詢将返回NULL。LEFT JOIN 的語法如下:

SELECT <column_1>,<column_2>… FROM <table_name_1> LEFT JOIN <table_name_2> ON <table_name_1>.<column_1>=<table_name_2>.<column_2>


例如,我們想要生成一個包含學校名稱和在校學生總數的學校列表。顯示學生總數和學校名稱的查詢如下:

SELECT T.Name SchoolName ,COUNT(s.student_code)TotalStudent FROM tblSchool t LEFT JOIN tblStudent s ON s.School_ID=T.School_Id GROUP BY t.Name

查詢輸出:

sqlserver的講解及應用(SQLServer聯接概述)2


如您所見,查詢返回了所有學校的學生人數。我們使用帶有聚合函數的左連接來顯示學生數為零的學校。

右連接或右外連接

當您想要合并兩個表的記錄、填充右表中的所有數據并匹配兩個表的數據時,使用内連接。如果左表沒有匹配的記錄,則查詢将返回 NULL。RIGHT JOIN 的語法如下:

SELECT <column_1>,<column_2>… FROM <table_name_1> RIGHT JOIN <table_name_2> ON <table_name_1>.<column_1>=<table_name_2>.<column_2>

例如,我們想要生成一個類别列表和屬于該類别的學校數量。

SELECT sc.Category_Name,COUNT(s.Name) FROM tblSchoolCategory sc RIGHT JOIN tblSchool s ON s.Category_ID=sc.Category_Id GROUP BY sc.Category_Name


查詢輸出:

sqlserver的講解及應用(SQLServer聯接概述)3

如您所見,查詢返回了所有類别以及屬于該類别的學校數量。

全連接

FULL JOIN 是 LEFT JOIN 和 RIGHT JOIN 的組合。FULL JOIN 生成的結果包含兩個表中的所有記錄。FULL JOIN 的語法如下:

SELECT <column_1>,<column_2>… FROM <table_name_1> , <table_name_2>

例如,我們想用匹配和不匹配的記錄填充 tblSchool 和 tblSchoolCategory 表中的記錄。

SELECT * FROM tblSchoolCategory sc , tblSchool s

查詢輸出:

sqlserver的講解及應用(SQLServer聯接概述)4

現在,讓我們看看 SQL Server IntelliSense 如何通過減少輸入工作量來幫助提高編碼速度。

SQL 智能感知

SQL Intellisense 是 SQL Server 2008 中引入的一項功能。它會自動收集 SQL Server 實例的對象列表和元數據。SQL IntelliSense 提供以下好處:

  • 它顯示名稱以鍵入的關鍵字開頭的數據庫對象列表。
  • 它提供有關用T-SQL 代碼編寫的對象的快速信息。當您将光标懸停在對象名稱上時,SQL Server IntelliSense 會顯示其信息。
  • 它顯示指定系統和用戶存儲過程和函數的輸入參數列表。
  • 它有另一個名為INSERT SNIPPET的選項,這是一個腳本模闆。假設您正在編寫一個腳本來在表上創建索引。您可以使用 INSERT SNIPPET 選項輕松生成創建索引模闆。您可以輸入所需的詳細信息。

要啟用或禁用 SQL IntelliSense,請選擇工具 -->選項 --> 展開文本編輯器--> 展開Transact-SQL --> IntelliSense --> 選擇啟用 IntelliSense。

sqlserver的講解及應用(SQLServer聯接概述)5

您可以參考 SQL Server IntelliSense 和自動完成文章以了解有關 SQL Server IntelliSense 的更多信息。現在,讓我們看看 Devart SQL Complete 如何成為 SQL IntelliSense 的良好替代品。

Devart SQL Complete 概述

Devart SQL Complete 是一個類似于 SQL Server IntelliSense 的 SQL 插件,但它還有許多其他功能可以提高 SQL 開發人員或 DBA 的工作效率。在本文中,我将展示 Devart 自動完成功能如何幫助使用 OUTER Join 編寫 SQL 查詢。例如,我們要填充所有學校和在這些學校學習的所有學生的列表。我已将整個查詢編寫過程拆分為多個圖像以了解SQL Complete 的功能。

圖片 1: 由 Devart SQL Complete IntelliSense 填充的 SQL 命令列表。

sqlserver的講解及應用(SQLServer聯接概述)6


圖片 2: Devart SQL Complete 通過鍵入 USE 語句自動填充 SQL 數據庫列表。如下圖所示,顯示了在名為Nisag-PC的 SQL 實例中創建的數據庫列表。

sqlserver的講解及應用(SQLServer聯接概述)7


圖片 3: Devart SQL Complete 通過鍵入 SELECT 語句自動填充表列表。下面的屏幕截圖顯示Devart SQL Complete 提供了DemoDatabase 數據庫中的表列表。您可以從列表中選擇多個表,然後通過按 TAB 鍵将它們添加到查詢編輯器中。

sqlserver的講解及應用(SQLServer聯接概述)8


圖 4: Devart SQL Complete 通過鍵入SELECT * FROM填充表列表、列列表及其選定列的數據類型和選定表中的總行。如下圖所示,我選擇了tblStudent 表,Devart SQL complete 顯示了列列表、它們的數據類型以及tblStudent 表的估計行數。

sqlserver的講解及應用(SQLServer聯接概述)9

圖 5:當我們在 T-SQL 查詢中使用 SQL 連接時,Devart SQL complete 會在INNER JOIN / LEFT JOIN / RIGHT JOIN關鍵字後顯示匹配列的列表。正如您在下圖中看到的,當我添加LEFT JOIN關鍵字并指定第二個表的名稱時,Devart SQL Complete 填充了來自tblStudent tblSchool表的匹配列列表。

所述特征提高了編碼速度,因為開發者不需要參考第二表的列。

sqlserver的講解及應用(SQLServer聯接概述)10


圖 6: 當我們在 T-SQL 查詢中使用 SQL 連接并添加WHERE 子句時,Devart SQL Complete 會填充兩個表的列列表,這有助于選擇适當的列。

正如您在下面的屏幕截圖中看到的,當我添加WHERE 子句時,Devart SQL Complete 填充了tblStudent tblSchool 表的列列表。所述特征提高了編碼速度,因為開發者不需要參考第二表的列。

sqlserver的講解及應用(SQLServer聯接概述)11


在我們的例子中,我們用 NULL 值填充記錄,所以我沒有在查詢中使用 WHERE 子句。下面是最終查詢:

USE demodatabase
go
SELECT * FROM tblSchool s LEFT JOIN tblStudent s1 ON s.School_Id=s1.School_ID


查詢輸出:

sqlserver的講解及應用(SQLServer聯接概述)12

上面的示例表明使用 Devart SQL Complete 查詢編寫變得更加容易。

概括

本文通過一個簡單示例解釋了 T-SQL 連接及其類型。本文還介紹了 SQL IntelliSense 和 Devart SQL Complete。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved