教學課程:在 Azure SQL 資料庫中設計關聯式資料庫

適用於:Azure SQL Database

Azure SQL Database 是 Microsoft Azure 中的關聯式資料庫即服務 (DBaaS)。 在本教學課程中,您會了解如何:

  • 連結至資料庫
  • 使用 T-SQL 命令建立數據表
  • 使用 BCP 大量載入資料
  • 使用 T-SQL 命令查詢數據

注意

基於本教學課程的目的,我們是使用 Azure SQL Database。 您也可以使用彈性集區中的集區資料庫或 SQL 受控執行個體。 如需連線至 SQL 受控執行個體,請參閱這些 SQL 受控執行個體快速入門:快速入門:設定 Azure VM 以連結到 Azure SQL 受控執行個體快速入門:設定從內部部署連線至 Azure SQL 受控執行個體的點對站連結

必要條件

登入 Azure 入口網站

登入 Azure 入口網站

建立伺服器層級 IP 防火牆規則

Azure SQL Database 會在伺服器層級建立 IP 防火牆。 此防火牆會防止外部應用程式和工具連線到伺服器及伺服器上的任何資料庫,除非防火牆規則允許其 IP 通過防火牆。 若要啟用對資料庫的外部連結,您必須先新增 IP 位址 (或 IP 位址範圍) 的 IP 防火牆規則新增。 依照下列步驟來建立伺服器層級的 IP 防火牆規則

重要

Azure SQL Database 會透過連接埠 1433 通訊。 如果您嘗試從公司網路連結到這項服務,您網路的防火牆可能不允許透過連接埠 1433 的輸出流量。 若情況如此,除非系統管理員開啟連接埠 1433,否則您無法連線至您的資料庫。

  1. 部署完成後,從 Azure 入口網站的功能表中選取 SQL 資料庫 ,或從任何頁面搜尋並選取 SQL 資料庫

  2. SQL 資料庫 頁面上,選取 您的資料庫。 資料庫的概觀頁面隨即開啟,其中會顯示完整伺服器名稱 (例如 contosodatabaseserver01.database.windows.net),並提供進一步的組態選項。

    Screenshot of the Azure portal, database overview page with the server name highlighted.

  3. 請複製此完整伺服器名稱,以便從 SQL Server Management Studio 連結到伺服器和資料庫。

  4. 設定 底下,選取 網路。 選擇 公用存取 索引標籤,然後選取 公用網路存取 下方的 選取的網路 以顯示 防火牆規則 區段。

    Screenshot of the Azure portal, networking page, showing where to set the server-level IP firewall rule.

  5. 選取工具列上的 新增您的用戶端 IPv ,將目前的 IP 位址新增至新的 IP 防火牆規則。 IP 防火牆規則可以針對單一 IP 位址或 IP 位址範圍開啟連接埠 1433。

  6. 選取 儲存。 系統便會為目前的 IP 位址建立伺服器層級 IP 防火牆規則,以便在伺服器上開啟連接埠 1433。

  7. 選取 確定 ,然後關閉 防火牆設定 頁面。

您的 IP 位址現在可以通過 IP 防火牆。 您現在可以使用 SQL Server Management Studio 或您選擇的其他工具來連結至您的資料庫。 務必使用先前建立的伺服器管理帳戶。

重要

根據預設,已對所有 Azure 服務啟用透過 SQL Database IP 防火牆存取。 選取此頁面上的 [關閉] 即可對所有 Azure 服務停用。

連結至資料庫

Azure SQL 資料庫存在於邏輯 SQL 伺服器內。 可以使用登入連線到邏輯 SQL Server master ,然後連結到您的資料庫。 或者,使用 自主使用者,您可以直接連線到 Azure SQL 資料庫。

使用 SQL Server Management Studio 或 Azure Data Studio 連結到 Azure SQL 資料庫。

  1. 開啟 SQL Server Management Studio。

  2. 連結至伺服器 對話方塊中,輸入下列資訊。 將其他選項保留為預設值。

    設定 建議值 描述
    伺服器類型 資料庫引擎 這是必要的值。
    伺服器名稱 完整 Azure SQL Database 邏輯伺服器名稱 例如: your_logical_azure_sql_server.database.windows.net
    驗證 SQL Server 驗證 使用您的 SQL Server 驗證輸入使用者名稱和密碼。
    Microsoft Entra 驗證 若要使用 Microsoft Entra 識別符進行連結,如果您是 Microsoft Entra 伺服器管理員,請選擇 [Microsoft Entra MFA]。 如需詳細資訊,請參閱使用 Azure SQL 設定和管理 Microsoft Entra 驗證
    登入 伺服器系統管理員帳戶 如果使用 SQL Server 驗證,則表示您在建立伺服器時所指定的帳戶。
    密碼 伺服器系統管理員帳戶的密碼 如果使用 SQL Server 驗證,則表示您在建立伺服器時所指定的密碼。

    Screenshot of the connect to an Azure SQL Database logical server server dialog box in SQL Server Management Studio (SSMS).

  3. 選取 連結到伺服器 對話方塊中的 選項。 在 連結到資料庫 區段中,輸入 yourDatabase 以連線到這個資料庫。

    Screenshot of the options tab of the connect to server dialog box in SQL Server Management Studio (SSMS).

  4. 選取 連接物件總管 視窗隨即在 SSMS 中開啟。

  5. 物件總管中,展開 資料庫 ,然後展開 yourDatabase 以檢視範例資料庫中的物件。

    Screenshot of SQL Server Management Studio (SSMS) showing database objects in object explorer.

  6. 物件總管 中,以滑鼠右鍵按一下 yourDatabase,然後選取 新增查詢。 隨即開啟已連結到您資料庫的空白查詢視窗。

在資料庫中建立資料表

使用四個資料表建立資料庫結構描述,其會使用 Transact-SQL 建立大學的學生管理系統模型:

  • Person
  • Course
  • Student
  • Credit

下圖顯示這些資料表是如何彼此相互關聯。 在這當中有部分資料表會參考其他資料表的資料欄。 例如, Student 資料表會參考 PersonId 資料表的 Person 資料行。 研究圖表,以了解在本教學課程中資料表彼此關連的方式。 如需如何建立有效標準化資料庫資料表的深入探討,請參閱設計標準化的資料庫。 如需選擇資料類型的相關資訊,請參閱資料類型 (英文)。 根據預設,資料表會在預設 dbo 結構描述中建立,舉例來說,意味著資料表的兩部分名稱會是 dbo.Person

注意

您亦可使用 SQL Server Management Studio 中的資料表設計工具,建立和設計您的資料表。

Screenshot of the table designer in SQL Server Management Studio (SSMS) showing the table relationships.

  1. 在查詢視窗中,執行下列查詢以在資料庫中建立四個資料表:

    -- Create Person table
    CREATE TABLE Person
    (
        PersonId INT IDENTITY PRIMARY KEY,
        FirstName NVARCHAR(128) NOT NULL,
        MiddelInitial NVARCHAR(10),
        LastName NVARCHAR(128) NOT NULL,
        DateOfBirth DATE NOT NULL
    )
    
    -- Create Student table
    CREATE TABLE Student
    (
        StudentId INT IDENTITY PRIMARY KEY,
        PersonId INT REFERENCES Person (PersonId),
        Email NVARCHAR(256)
    )
    
    -- Create Course table
    CREATE TABLE Course
    (
        CourseId INT IDENTITY PRIMARY KEY,
        Name NVARCHAR(50) NOT NULL,
        Teacher NVARCHAR(256) NOT NULL
    )
    
    -- Create Credit table
    CREATE TABLE Credit
    (
        StudentId INT REFERENCES Student (StudentId),
        CourseId INT REFERENCES Course (CourseId),
        Grade DECIMAL(5,2) CHECK (Grade <= 100.00),
        Attempt TINYINT,
        CONSTRAINT [UQ_studentgrades] UNIQUE CLUSTERED
        (
            StudentId, CourseId, Grade, Attempt
        )
    )
    

    Screenshot from SSMS showing the create tables script has been successfully executed.

  2. 在 [物件總管] 中展開 yourDatabase 之下的 Tables 節點,以查看您建立的四個新資料表。

將資料載入到資料表

  1. 在本地工作區 [下載] 資料夾中建立一個名為 sampleData 的資料夾,以存放您資料庫的範例資料。 例如: c:\Users\<your user name>\Downloads

  2. 以滑鼠右鍵按一下下列連結,將其儲存至 sampleData 資料夾。

  3. 開啟新的 Windows 命令提示字元視窗,並瀏覽至 sampleData 資料夾。 例如: cd c:\Users\<your user name>\Downloads

  4. 執行下列 bcp 命令,將範例資料插入資料表中,並以適用於您環境的值取代 serverdatabaseuserpassword 的值。

    bcp Course in SampleCourseData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
    bcp Person in SamplePersonData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
    bcp Student in SampleStudentData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
    bcp Credit in SampleCreditData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
    

您現在已將範例資料載入至先前建立的資料表。

查詢資料

執行下列 T-SQL 查詢,以從資料庫資料表中擷取資訊。

第一個查詢會聯結所有四個資料表,以尋找由「Dominick Pope」授課且成績高於 75% 的學生。 在查詢視窗中,執行下列 T-SQL 查詢:

-- Find the students taught by Dominick Pope who have a grade higher than 75%
SELECT  person.FirstName, person.LastName, course.Name, credit.Grade
FROM  Person AS person
    INNER JOIN Student AS student ON person.PersonId = student.PersonId
    INNER JOIN Credit AS credit ON student.StudentId = credit.StudentId
    INNER JOIN Course AS course ON credit.CourseId = course.courseId
WHERE course.Teacher = 'Dominick Pope'
    AND Grade > 75;

此查詢會連結所有四個資料表,以尋找「Noe Coleman」曾註冊的課程。 在查詢視窗中,執行下列 T-SQL 查詢:

-- Find all the courses in which Noe Coleman has ever enrolled
SELECT  course.Name, course.Teacher, credit.Grade
FROM  Course AS course
    INNER JOIN Credit AS credit ON credit.CourseId = course.CourseId
    INNER JOIN Student AS student ON student.StudentId = credit.StudentId
    INNER JOIN Person AS person ON person.PersonId = student.PersonId
WHERE person.FirstName = 'Noe'
    AND person.LastName = 'Coleman';

提示

若要進一步了解如何撰寫 SQL 查詢,請瀏覽 教學課程:撰寫 Transact-SQL 陳述式

提示

準備好開始開發 .NET 應用程式了嗎? 這款免費的 Learn 模組描述如何開發和設定可查詢 Azure SQL Database 的 ASP.NET 應用程式 (包括建立簡易資料庫)。

後續步驟

前進到下一個教學課程,了解如何使用 Visual Studio 和 C# 設計資料庫。