SQL における CTE とは

青灯夜游
リリース: 2019-01-21 13:18:47
オリジナル
14296 人が閲覧しました

CTE は共通テーブル式を表します。これは一時的な名前付き結果セットであり、常に結果セットを返します。 SQL クエリを簡素化するために標準 SQL によって導入されました。 CTE(共通テーブル式)については以下の記事で紹介していますので、ご参考になれば幸いです。

SQL における CTE とは

#CTE とは何ですか?

共通テーブル式 (CTE) は、単一の SELECT、INSERT、UPDATE、DELETE、または CREATE VIEW ステートメントの実行範囲内で定義された一時的な結果セットと考えることができます。 CTE は、オブジェクトとして保存されず、クエリ中にのみ保持されるという点で、派生テーブルに似ています。派生テーブルとは異なり、CTE は自己参照であり、同じクエリ内で複数回参照できます。 [関連ビデオ チュートリアルの推奨事項:

MySQL チュートリアル]

CTE

CTE の構造は式名で表されます。 AS キーワードと SELECT ステートメントで構成される CTE の。 CTE を定義すると、SELECT、INSERT、UPDATE、または DELETE ステートメントでテーブルまたはビューと同様に参照できます。 CTE は、CREATE VIEW ステートメントの定義 SELECT ステートメントの一部として使用することもできます。

CTE の基本的な構文構造は次のとおりです:

WITH Expression_Name [ ( ColumnName [1,...n] ) ]
AS
( CTE query definition )
ログイン後にコピー

説明: SELECT、INSERT、UPDATE、DELETE、または MERGE ステートメントの直前に WITH 句を追加することで CTE を定義できます。 WITH 句には、1 つ以上のコンマ区切りの CTE を含めることができます。

CTE を実行する宣言は次のとおりです。

SELECT <column_list>
FROM expression_name;
ログイン後にコピー

CTE の種類

CTE には 2 つのタイプがあります。 CTE: 再帰的と非再帰的。

再帰 CTE: それ自体を参照する一般的なテーブル式です。

非再帰 CTE は、その名前が示すように、再帰を使用しません。CTE 自体を参照しません。

CTE を使用する利点

可読性 : CTE により可読性が向上します。すべてのクエリ ロジックを 1 つの大きなクエリにまとめるのではなく、ステートメントの後半で結合する複数の CTE を作成します。これにより、必要なデータのチャンクを取得し、それらを最後の SELECT で結合することができます。

代替ビュー: ビューを CTE に置き換えることができます。これは、ビュー・オブジェクトを作成する権限がない場合、またはこの1つの問合せでのみ使用されるためビュー・オブジェクトを作成したくない場合に便利です。

Recursion: CTE を使用すると再帰クエリが作成されます。つまり、独自のクエリを呼び出すことができます。これは、組織図などの階層データを操作する必要がある場合に便利です。

制限事項 : SELECT ステートメント自体の参照 (再帰) や、非決定的関数を使用した GROUP BY の実行などの SELECT ステートメントの制限を克服します。

Ranking: ROW_NUMBER()、RANK()、NTILE() などのランキング関数を使用する場合。

以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がSQL における CTE とはの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
sql
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!