クイック スタート: Visual Studio Codeの MSSQL 拡張機能を使用して最初のクエリを実行する

このクイック スタートでは、Visual Studio Code用の MSSQL 拡張機能を使用して、データベースに対して最初の Transact-SQL (T-SQL) ステートメントを実行します。 既存の開発データベースを使うか作成し、テーブルを定義し、サンプルデータを挿入し、結果をクエリしてください。

前提条件

このクイック スタートを完了するには、次のものが必要です。

  • Visual Studio Code。
  • Visual Studio Code用のMSSQL拡張です。
  • Azure SQL Database、Fabric の SQL データベース、Azure SQL Managed Instance、または SQL Server の開発データベースにアクセスでき、テーブルを作成してサンプル データを変更する権限があること。

すでに開発用データベースを持っているなら、それを再利用してください。 そうでない場合、次のセットアップ パスを選択してください:

データベースに接続する

クエリを実行する前に、オブジェクト エクスプローラーからデータベースに接続します。 [接続] ダイアログでは、サーバー名の入力、認証の種類の選択、および (必要に応じて) データベースの選択を行います。 入力の種類、認証方法、接続管理の完全なチュートリアルについては、「Visual Studio Code用の MSSQL 拡張機能を使用してデータベースに接続する」を参照してください。

接続すると、サーバーがオブジェクト エクスプローラーに表示され、クエリの実行を開始できます。

既存のデータベースを使う

すでにAzure SQL Databaseの無料プランのデータベースをプロビジョニングしている場合は、そのデータベースに直接接続してください。 接続ダイアログで、デフォルトのデータベースを選択したままにせず、 データベース 欄で名前を選択するか入力してください。 このパスは、Fabric内のSQLデータベースを含む他の既存の開発データベースにも利用できます。

  1. 選択したデータベースに接続した新しいクエリエディタを開きます。

  2. このクエリを実行して、編集者のアクティブなデータベースを確認してください:

    SELECT DB_NAME() AS current_database;
    
  3. 結果が使用する予定のデータベースと一致しているか確認してください。 もしダメなら、正しいデータベース接続を選択し、サンプル文を実行する前に再度確認してください。

  4. 「データベース作成」をスキップし、「テーブル作成」に進んでください。 残りのステップでは同じデータベース接続を維持してください。

Important

以下のCREATE DATABASE Library文はAzure SQL Database無料プランではデータベースをプロビジョニングしません。 無料ティアのパスでそれを実行しないでください。 すでにプロビジョニングした無料データベース内にチュートリアルテーブルを作成してください。他のデータベースを復元またはインポートしないでください。

データベースの作成

SQL ServerやAzure SQL Managed Instanceで新しいデータベースが必要な場合は、Library という名前のデータベースを作成しましょう。 すでに開発用データベースを持っている場合は、代わりに 「既存のデータベースを使う」 を選びましょう。

Important

このステップは無料版のデータベースではなく汎用データベースを作成します。 クラウドデータベースを追加すると料金が発生することがあります。 続ける前にサービスの料金とあなたの権限を確認してください。

  1. 新しいクエリ エディターを開きます。 Ctrl+N キーを押して新しいクエリ エディターを開くか、サーバーを右クリックして [新しいクエリ] を選択します。

  2. データベースを作成します。 クエリ エディターに次のスニペットを貼り付けて、 [実行] を選択します。

    IF NOT EXISTS (SELECT name
                   FROM sys.databases
                   WHERE name = N'Library')
        CREATE DATABASE Library;
    

    このスクリプトでは、Library という名前の新しいデータベースがまだ存在しない場合はそれが作成されます。

新しい Library データベースがデータベースの一覧に表示されます。 すぐに表示されない場合は、オブジェクト エクスプローラーを最新の情報に更新します。

テーブルの作成

既存の開発データベースまたは作成したAuthorsデータベース内にLibraryテーブルを作成します。

Important

各ステップを別々に実行し、ステートメントが失敗した場合は停止します。 dbo.Authors がすでに存在する場合、このクイックスタートでは使わず、削除もしないでください。 別の開発データベースを選ぶか、すべてのサンプル文でテーブル名を一貫して変更してから続けてください。

  1. クエリエディターが選択したデータベースに接続されていることを確認してください。 無料プランのパスでは、Library や master ではなく、無料データベースの名前を使ってください。 別のエディタを開いたり接続を変更したりしたら、もう一度 SELECT DB_NAME() AS current_database; を実行してください。

  2. テーブルを作成します。 クエリ ウィンドウのテキストを次のスニペットに置き換えて、[実行] を選びます。

    CREATE TABLE dbo.Authors
    (
        id INT IDENTITY (1, 1) NOT NULL PRIMARY KEY,
        first_name NVARCHAR (100) NOT NULL,
        middle_name NVARCHAR (100) NULL,
        last_name NVARCHAR (100) NOT NULL
    );
    

このスクリプトでは、Authors を IDENTITY 列にして id テーブルが作成され、一意の ID が自動的に生成されます。

行を挿入する

次に、 Authors テーブルにデータを挿入します。

  1. クエリ ウィンドウのテキストを次のスニペットに置き換えて、[実行] を選びます。

    INSERT INTO dbo.Authors (first_name, middle_name, last_name)
    VALUES ('Isaac', 'Yudovick', 'Asimov'),
           ('Arthur', 'Charles', 'Clarke'),
           ('Herbert', 'George', 'Wells'),
           ('Jules', 'Gabriel', 'Verne'),
           ('Philip', 'Kindred', 'Dick');
    

サンプル データが Authors テーブルに追加されます。

データを表示する

Authors テーブル内のデータを確認するには、次のクエリを実行します。

SELECT *
FROM dbo.Authors
ORDER BY id;

新しいテーブルに1回挿入が成功すると、次の順番で5行が表示されます。

id first_name middle_name 姓
1 アイザック ユドヴィック アシモフ
2 アーサー Charles クラーク
3 ハーバート ジョージ ウェルズ
4 ジュールズ ガブリエル ヴェルヌ
5 フィリップ キンドレッド ディック

リソースをクリーンアップする

このクイックスタートで作成したサンプル表だけを削除してください。

  1. SELECT DB_NAME() AS current_database;を実行して、テーブルを作成したデータベースに接続されているか確認してください。

  2. このウォークスルー中に dbo.Authors を作成し、そのサンプルデータが不要であることを確認しましょう。 テーブル作成が失敗した場合や、テーブルが他のプロジェクトに属している場合は続けないでください。

  3. そのテーブルを削除するには、次の文を実行してください:

    DROP TABLE dbo.Authors;
    

このサンプルクリーンアップの一環として、プロビジョニングした無料版のデータベースを含む既存のデータベースを削除しないでください。

無料プランを利用する場合は、残りの利用可能量を確認し、一時停止および超過時の動作を確認しましょう。 終わったらクエリエディタとオブジェクト エクスプローラーの接続を切断してください。 オープンセッションはアイドル中の自動一時停止を防ぐことができます。切断してもすでに消費したvCoreの秒数は復元されません。 成功したクエリは、ワークロードとの互換性を示すものではなく、将来の利用が無料許容範囲内に収まることを保証するものでもありません。