チュートリアル: Azure SQL データベースでリレーショナル データベースを設計する

適用対象:Azure SQL Database

Azure SQL データベースは、Microsoft Azure のリレーショナルなサービスとしてのデータベース (DBaaS) です。 このチュートリアルでは、次の作業を行う方法について説明します。

  • データベースに接続する
  • T-SQL コマンドでテーブルを作成する
  • BCP を使用してデータを一括で読み込む
  • T-SQL コマンドでデータを照会する

Note

このチュートリアルでは、Azure SQL Database を使用しています。 エラスティック プールでプールされたデータベース、または SQL Managed Instance を使用することもできます。 SQL Managed Instance への接続については、以下の SQL Managed Instance のクイックスタートを参照してください。「クイック スタート: Azure SQL Managed Instance に接続するように Azure VM を構成する」および「クイックスタート: オンプレミスから Azure SQL Managed Instance へのポイント対サイト接続を構成する」。

前提条件

Azure portal にサインインする

Azure portal にサインインします。

サーバーレベルの IP ファイアウォール規則を作成する

Azure SQL Database では、サーバーレベルで IP ファイアウォールが作成されます。 このファイアウォールにより、外部のアプリケーションやツールは、ファイアウォール規則でその IP がファイアウォールの通過を許可されていない限り、サーバーおよびサーバー上のすべてのデータベースに接続できなくなります。 データベースに外部から接続できるようにするには、まず、IP アドレス (または IP アドレス範囲) に対する IP ファイアウォール規則を追加する必要があります。 以下の手順に従って、サーバーレベルの IP ファイアウォール規則を作成します。

重要

Azure SQL Database の通信は、ポート 1433 上で行われます。 企業ネットワーク内からこのサービスに接続しようとしても、ポート 1433 でのアウトバウンド トラフィックがネットワークのファイアウォールで禁止されている場合があります。 その場合、管理者がポート 1433 を開かない限り、データベースに接続することはできません。

  1. デプロイが完了したら、Azure portal メニューから [SQL データベース] を選択するか、または任意のページから [SQL データベース] を検索して選択します。

  2. [SQL データベース] ページで [yourDatabase] を選択します。 データベースの概要ページが開き、完全修飾 [サーバー名] (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. ツール バーの [クライアント IPv4 の追加] をクリックし、現在の IP アドレスを新しい IP ファイアウォール規則に追加します。 IP ファイアウォール規則は、単一の IP アドレスまたは IP アドレスの範囲に対して、ポート 1433 を開くことができます。

  6. [保存] を選択します。 サーバーでポート 1433 を開いている現在の IP アドレスに対して、サーバーレベルの IP ファイアウォール規則が作成されます。

  7. [OK] を選択し、 [ファイアウォール設定] ページを閉じます。

これで IP アドレスが IP ファイアウォールを通過できるようになりました。 SQL Server Management Studio やその他の任意のツールを使用して、データベースに接続できます。 必ず、お客様が先ほど作成したサーバー管理者アカウントを使用してください。

重要

既定では、すべての Azure サービスで、SQL Database IP ファイアウォール経由のアクセスが有効になります。 すべての Azure サービスに対して無効にするには、このページの [オフ] を選択します。

データベースに接続する

Azure SQL データベースは論理 SQL サーバー内に存在します。 ログインを使用して論理 SQL サーバーの master に接続し、データベースに接続できます。 または、包含ユーザーを使用して、Azure SQL データベースに直接接続できます。

SQL Server Management Studio を使用して、Azure SQL データベースに接続します。

  1. SQL Server Management Studio を開きます。

  2. [サーバーへの接続] ダイアログ ボックスで、次の情報を入力します。 他のオプションは既定値のままにします。

    設定 提案された値 説明
    サーバーの種類 データベース エンジン この値は必須です。
    サーバー名 完全修飾 Azure SQL データベース論理サーバー名 たとえば、your_logical_azure_sql_server.database.windows.net のようにします。
    認証 SQL Server 認証 SQL Server 認証を使用して、ユーザー名とパスワードを入力します。
    Microsoft Entra 認証 Microsoft Entra ID を使用して接続するには、Microsoft Entra サーバー管理者である場合は、[Microsoft Entra MFA] を選択します。 詳細については、Azure SQL による Microsoft Entra 認証の構成と管理を参照してください。
    Login サーバー管理者アカウント 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. オブジェクト エクスプローラーで、DatabasesyourDatabase の順に展開して、サンプル データベース内のオブジェクトを表示します。

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

  6. オブジェクト エクスプローラーyourDatabase を右クリックし、 [新しいクエリ] を選択します。 データベースに接続された空のクエリ ウィンドウが開きます。

データベースのテーブルを作成する

Transact-SQL を用いた大学の学生管理システムをモデル化する、4 つのテーブルを作成します。

  • Person
  • Course
  • Student
  • Credit

次の図は、これらのテーブルの相互関係を示しています。 テーブルの一部は、他のテーブル内の列を参照します。 たとえば Student テーブルは、PersonId テーブルの Person 列を参照します。 このチュートリアルのテーブルの相互関係を把握するため、図を詳しく確認します。 有効な正規化されたデータベース テーブルを作成する方法の詳細については、「正規化されたデータベースの設計」を参照してください。 データ型の選択については、データ型を参照してください。 既定では、テーブルは既定のdbo スキーマに作成されます。つまり、たとえば、テーブルの 2 部構成の名前は dbo.Person となります。

Note

SQL Server Management Studio のテーブル デザイナーを使用して、テーブルを作成および設計することも可能です。

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

  1. クエリ ウィンドウで次の T-SQL クエリを実行し、データベース内の 4 つのテーブルを作成します。

    -- 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. オブジェクト エクスプローラーで、yourDatabaseTables ノードを展開すると、作成した新しいテーブルが 4 つ表示されます。

テーブルにデータを読み込む

  1. ローカル ワークステーション Downloads フォルダーに 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 クエリを実行します。

この最初のクエリでは 4 つのテーブルをすべて結合し、"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;

このクエリでは 4 つのテーブルをすべて結合し、"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# を使用したデータベースの設計について学びます。