適用対象:Azure SQL データベース
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 SQL Database には、SQL Server Management Studio (最新バージョン) または Azure portal クエリ エディターを使用します。
- BCP と SQLCMD (最新バージョン)。
- Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- Azure SQL Database をまだ作成していない場合は、「 クイック スタート: 単一データベースの作成 - Azure SQL Database」を参照してください。 ご利用のプランで Azure SQL Database を無料でデプロイするためのオプションをお探しください。
Azure portal にサインインする
Azure portal にサインインします。
サーバーレベルの IP ファイアウォール規則を作成する
Azure SQL Database では、サーバーレベルで IP ファイアウォールが作成されます。 このファイアウォールにより、外部のアプリケーションやツールは、ファイアウォール規則でその IP がファイアウォールの通過を許可されていない限り、サーバーおよびサーバー上のすべてのデータベースに接続できなくなります。 データベースに外部から接続できるようにするには、まず、IP アドレス (または IP アドレス範囲) に対する IP ファイアウォール規則を追加する必要があります。 以下の手順に従って、サーバーレベルの IP ファイアウォール規則を作成します。
重要
Azure SQL Database の通信は、ポート 1433 上で行われます。 企業ネットワーク内からこのサービスに接続しようとしている場合は、ポート 1433 経由の送信トラフィックがネットワークのファイアウォールで許可されていない可能性があります。 その場合、管理者がポート 1433 を開かない限り、データベースに接続することはできません。
デプロイが完了したら、Azure portal メニューから [SQL データベース] を選択するか、または任意のページから [SQL データベース] を検索して選択します。
[SQL データベース] ページで [yourDatabase] を選択します。 データベースの概要ページが開き、完全修飾 [サーバー名] (
contosodatabaseserver01.database.windows.netなど) が表示され、それ以上の構成のためのオプションが提供されます。
この完全修飾サーバー名をコピーします。これは、SQL Server Management Studio からお客様のサーバーとデータベースに接続するために使用します。
[設定] で、 [ネットワーク] を選択します。 [パブリック アクセス] タブを選択し、[パブリック ネットワーク アクセス] で [選択したネットワーク] を選択して、[ファイアウォール規則] セクションを表示します。
ツール バーの [クライアント IPv4 の追加] をクリックし、現在の IP アドレスを新しい IP ファイアウォール規則に追加します。 IP ファイアウォール規則は、単一の IP アドレスまたは IP アドレスの範囲に対して、ポート 1433 を開くことができます。
[保存] を選択します。 サーバーでポート 1433 を開いている現在の IP アドレスに対して、サーバーレベルの IP ファイアウォール規則が作成されます。
[OK] を選択し、 [ファイアウォール設定] ページを閉じます。
これで IP アドレスが IP ファイアウォールを通過できるようになりました。 SQL Server Management Studio やその他の任意のツールを使用して、データベースに接続できます。 必ず、お客様が先ほど作成したサーバー管理者アカウントを使用してください。
重要
既定では、すべての Azure サービスで、SQL Database IP ファイアウォール経由のアクセスが有効になります。 このページの OFF を選択して、すべての Azure サービスを無効にします。
データベースに接続する
Azure SQL データベースは論理 SQL サーバー内に存在します。 ログインを使用して論理 SQL サーバーの master に接続し、データベースに接続できます。 または、包含ユーザーを使用して、Azure SQL データベースに直接接続できます。
SQL Server Management Studio を使用して、Azure SQL データベースに接続します。
SQL Server Management Studio を開きます。
[サーバーへの接続] ダイアログ ボックスで、次の情報を入力します。 他のオプションは既定値のままにします。
Setting 提案された値 Description サーバーの種類 データベース エンジン この値は必須です。 サーバー名 完全修飾 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 認証を使用している場合は、サーバーの作成時に指定したパスワードです。
[サーバーに接続] ダイアログ ボックスの [オプション] を選択します。 [データベースへの接続] セクションに「yourDatabase」と入力して、このデータベースに接続します。
[接続] を選択します。 SSMS でオブジェクト エクスプローラー ウィンドウが開きます。
オブジェクト エクスプローラーで、Databases、yourDatabase の順に展開して、サンプル データベース内のオブジェクトを表示します。
オブジェクト エクスプローラーで yourDatabase を右クリックし、 [新しいクエリ] を選択します。 データベースに接続された空のクエリ ウィンドウが開きます。
データベースのテーブルを作成する
Transact-SQL を用いた大学の学生管理システムをモデル化する、4 つのテーブルを作成します。
PersonCourseStudentCredit
次の図は、これらのテーブルの相互関係を示しています。 テーブルの一部は、他のテーブル内の列を参照します。 たとえば Student テーブルは、PersonId テーブルの Person 列を参照します。 このチュートリアルのテーブルの相互関係を把握するため、図を詳しく確認します。 有効な正規化されたデータベース テーブルを作成する方法の詳細については、「正規化されたデータベースの設計」を参照してください。 データ型の選択については、データ型を参照してください。 既定では、テーブルは既定のdbo スキーマに作成されます。つまり、たとえば、テーブルの 2 部構成の名前は dbo.Person となります。
Note
SQL Server Management Studio のテーブル デザイナーを使用して、テーブルを作成および設計することも可能です。
クエリ ウィンドウで次の 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 ) )オブジェクト エクスプローラーで、yourDatabase の Tables ノードを展開すると、作成した新しいテーブルが 4 つ表示されます。
テーブルにデータを読み込む
ローカル ワークステーション Downloads フォルダーに sampleData という名前のフォルダーを作成し、データベース用のサンプル データを格納します。 たとえば、
c:\Users\<your user name>\Downloadsのようにします。次のリンクを右クリックし、それらを sampleData フォルダーに保存します。
新しい Windows コマンド プロンプト ウィンドウを開き、sampleData フォルダーに移動します。 たとえば、
cd c:\Users\<your user name>\Downloadsのようにします。次の
bcpコマンドを実行して、サンプル データをテーブルに挿入します。server、database、user、password の各値は、お客様の環境の値に置き換えてください。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 ステートメントの作成」にアクセスしてください。
次のステップ
関連するコンテンツ
- Azure SQL Database を無料でデプロイ
- Azure SQL データベースの新機能とは?
- 構成と管理に関するコンテンツ参照 - Azure SQL データベース
- Azure SQL Database のコストを計画および管理する
ヒント
.NET アプリケーションの開発を開始する準備はできましたか? この無料の Learn モジュールでは、単純なデータベースの作成など、Azure SQL Database に対してクエリを行う ASP.NET アプリケーションを開発および構成する方法を学習できます。