LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

このチュートリアルでは、 SQL 一時テーブルビューについて説明します。これら 2 つは、テストやデバッグのために物理テーブルから特定のデータ セットを取得する場合に便利です。2 種類の一時テーブルとその違いについても説明します。

SQL 一時テーブルとビューを使用すると、データはすでに別のテーブルに格納されているため、繰り返しクエリを実行することなく、複数のコマンドを使用してデータ セットを自由に操作できます。

これら 2 つは同様に機能しますが、違いに注意する必要があります。これは、特定の状況で使用できる最適な方法を決定するのに役立ちます。

名前自体に基づいて、一時テーブルはセッション内でデータを一時的に保存するために使用されます。

物理テーブルと同じように、それらに対して複数の操作を実行することもできます。非常に長い SQL コマンドがあると想像してください。これを一時テーブルに置くだけで、元のクエリに影響を与えることなくデバッグやエラーのトラブルシューティングを開始できます。さらに、一時テーブルは強力であり、SQL でよく使用されます。

目次

SQL の 2 種類の一時テーブル

SQLには2種類の一時テーブルがあります。これらはローカル一時テーブルとグローバル一時テーブルです。

ローカル一時テーブルは、それが作成されたセッションにのみ存在します。他のセッションではこのテーブルにアクセスできません。このため、ローカル一時テーブルは、作成されたセッションが閉じられると存在しなくなります。

対照的に、グローバル一時テーブルは、作成時にすべてのセッションでアクセスできます。ただし、すべてのセッションが閉じられると、セッションは存在しなくなり、アクセスできなくなります。

ローカル一時テーブルの「 # 」記号とグローバル一時テーブルの「 ## 」記号をチェックすることで、クエリで使用されている一時テーブルのタイプを簡単に識別できることに注意してください。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

ローカル一時テーブルは通常、テーブル名が「 # 」で始まります。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

一方、グローバル一時テーブルはテーブル名の前に「 ## 」で始まります。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

さらに、テーブルをすばやく作成したい場合は、例としてSELECT * INTO #customers FROM dbo.courses というコマンドを実行できます。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

このコマンドは、 dbo.coursesテーブルのすべてのデータを含む#customersという名前の新しい一時テーブルを作成します。

Microsoft SQL Server Management Studioのビュー

このサンプル コマンドを使用してSQL ビューについて説明しましょう。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

たとえば、このようなコマンドを繰り返し実行したくないとします。以下のコマンドに従って簡単にビューに配置できます。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

ビューの作成はテーブルの作成と似ています。これを使用すると、作成したビュー名を選択して入力したクエリを実行できるようになります。この場合、それはCustomersbyyear_vです。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

ビューは一時テーブルとは異なることに注意することが重要です。これは、ビューを削除しない限り、物理テーブルと同じようにデータベース内でビューが表示されるためです。さらに、ビューにはデータや値は保存されません。

代わりに、 CREATE VIEWコマンドの直後に入力したコマンドが表示されます。ビュー内で任意のテーブル操作を実行することもできます。

最も重要なことは、ビューは通常、ビュー名の先頭または末尾に「v」を付けることで表されるため、簡単に識別できることです。

SQL での一時テーブルとビューの作成

この例では、実行後にSales.SalesOrderHeaderSales.Customer Cのレコードを結合して表示するクエリがあります。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

SQL でのローカル一時テーブルの作成

200 行の長さのクエリを作成し、それに対してデバッグして特定の操作を実行する必要があると想像してください。プロセス中にさらなるエラーが発生する可能性があるため、クエリを直接編集することはできません。

その場合、前の例を使用して、 FROM コマンドの前にコマンド「 INTO #test_local 」を追加してローカル一時テーブルを作成します。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

このコマンドを実行すると、#test_local にはSales.SalesOrderHeaderSales.Customer Cの結合されたレコードが含まれるようになります。その結果、 #test_localテーブルを選択すると、次のようになります。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

その後、#test_localテーブルに対してあらゆる操作を実行できるようになります。#test_localからすべてのレコードを選択し、次のコマンドを使用してCustomerIDごとにレコードの順序を変更します。 

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

その結果、レコードは CustomerID によって並べ替えられるようになりました。ただし、ローカルの一時テーブルを使用したため、別のセッションで#test_localテーブルにアクセスしたり、使用したりすることはできません。次の例は、 SQLQuery2.sql#test_localにアクセスしようとすると何が起こるかを示しています。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

前の例に基づくと、#test_localを選択すると、エラー メッセージが表示されるだけでした。これは、#test_localテーブルがそれが作成されたセッション ( SQLQuery1.sql )にのみ存在するためです。

SQL でのグローバル一時テーブルの作成

次に、 #test_localで使用したのと同じクエリを使用します。ただし、今回はグローバルを使用します。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

ここで、##test_globalを選択し、CustomerID でレコードを並べ替えると、同じクエリを使用したため、  #test_localで得たものと同じ出力が表示されます。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

その後、別のセッションで##test_globalテーブルを選択してアクセスを試みます。グローバル一時テーブルを使用しているため、これはシームレスに機能します。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

この時点で、ローカル一時テーブルとグローバル一時テーブルの違いを強調しています。

ローカル一時テーブルは、それが作成されたセッション内でのみアクセスできることに注意してください。そのセッションを閉じると、セッションは存在しなくなります。

一方、グローバル一時テーブルは、すべてのアクティブなセッションまたはアプリケーション自体を閉じない限り、すべてのセッションに表示されます。

SQL でのビューの作成

これからビューを作成していきます。この例では、次のような既存のクエリがあります。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

CREATE VIEWコマンドをクエリに追加することで、ビューの作成を開始できます。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

コマンドを実行すると、作業中のデータベースにビューが作成されます。この場合は、 AdventureWorks2012です。

また、更新後に Views フォルダーにdbo.CustomerView_v が表示されるはずです。Views フォルダーを更新するには、それを右クリックして[更新]を選択します。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

Views フォルダーの右側にある + アイコンをクリックすると、dbo.CustomerView_vが表示されます。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

このビューを開くには、 dbo.CustomerView_vを右クリックし、オプションから[上位 1000 行の選択]を選択します。これにより、そのビューに 1000 件のレコードが表示されます。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

この後、 dbo.CustomerView_vを使用して、テーブルと同様にあらゆる操作を実行できるようになります。たとえば、dbo.CustomerView_vで SalesOrderID が 50000 より大きいレコードを選択するとします。この場合、次のコマンドを使用します。

LuckyTemplates ユーザー向けの SQL 一時テーブルとビュー

これで、作成したビューに対して操作を実行できるようになりました。

結論

要約すると、2 種類の一時テーブルとその違い、およびそれらを使用する必要がある理由について学びました。さらに、一時テーブルは、実際のクエリを損傷することなくクエリ内のエラーを修正する方法として機能することについて説明しました。

一時テーブルは、それが作成されたセッションにのみ表示されることに注意してください。したがって、アクティブなセッションまたはアプリケーション自体を閉じると、それは存在しなくなります。

また、ビューにはデータやレコードが保存されないこともわかりました。レンダリングしたいクエリに基づいた結果のみが表示されます。これらのビューは、作成されるとデータベースに保存されます。 

これら 2 つを学習すると、長いコマンドをすばやく実行しデータセットの大きな部分を簡単に変更できるようになります。

ではごきげんよう、

ハーフィズ


Power Automate の文字列関数: Substring と IndexOf

Power Automate の文字列関数: Substring と IndexOf

Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates ツールチップを使用すると、より多くの情報を 1 つのレポート ページに圧縮できます。効果的な視覚化の手法を学ぶことができます。

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を作成し、データを受信する方法を学んでいます。

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で簡単に日付テーブルを作成する方法について学びましょう。データの分析と視覚化のための効果的なツールとして活用できます。

2 つの方法による SharePoint 列の検証

2 つの方法による SharePoint 列の検証

SharePoint 列の検証の数式を使用して、ユーザーからの入力を制限および検証する方法を学びます。

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel ファイルおよび CSV ファイルにエクスポートする方法を学び、さまざまな状況に最適なエクスポート方法を決定できるようにします。

Power Automate のオンプレミス データ ゲートウェイ

Power Automate のオンプレミス データ ゲートウェイ

ユーザーがコンピューターから離れているときに、オンプレミス データ ゲートウェイを使用して Power Automate がデスクトップ アプリケーションにアクセスできるようにする方法を説明します。

DAX 数式での LASTNONBLANK の使用

DAX 数式での LASTNONBLANK の使用

DAX 数式で LASTNONBLANK 関数を使用して、データ分析の深い洞察を得る方法を学びます。

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

LuckyTemplates で予算分析とレポートを実行しながら、CROSSJOIN 関数を使用して 2 つのデータ テーブルをバインドする方法を学びます。

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

このチュートリアルでは、LuckyTemplates TREATAS を使用して数式内に仮想リレーションシップを作成する方法を説明します。