仮想テーブル、それは実際に(物理的に存在していない)は存在しませんが、論理的なテーブルがあります。
MySQLでは、仮想テーブルがあります:一時テーブル、メモリテーブルとビュー、派生テーブル。
唯一のselect文から仮想テーブルを返すためには、ビューと派生テーブルです。
派生テーブル
句から別のサブクエリのSELECTステートメントを使用する場合は、派生テーブルと呼ばれています。
選択column_listを から( 選択column_listを からのtable_1 derived_table_name)を ここ derived_table_name.c1 > 0。
サブクエリが異なっていると、派生テーブルは、クエリでその名を後で参照するため、別名を持っている必要があります。
派生テーブルには、エラーの別名を持っていない場合。
第二に、ビュー
1 ビューを作成します。 - 他の 作成 ビュー他のAS SELECTの a.nameをAS名、b.name AS goodsname から ユーザー AS A、製品AS B a.id = b.id; 2 。削除ビューを ドロップビューIFはEXISTSその他; 3.コール・ビューは、他のSELECT * FROM。
Navicatはプレミアム(MySQLの可視化ツール)もう一度、ビューを作成するために繰り返すことはできません作成したリアビューに保存されます、
私は、ビューを作成試運転リピートしたいと思いますが、最初のビューが作成された削除する必要があり、SQLコマンドの実行中にビューを作成します。
ビューの役割:
- 改善された再利用性は、それは、ファンクションキーで1、繰り返し呼び出しを作成します。
- データベースの再構築、元のデータに影響を与えず。
- より明確にデータを作成します。どのような種類のビューで作成されたものを、必要なデータ、の。
セレクからできること tは仮想table文に戻ることができ、彼らはテーブル構造を構築することにより、仮想テーブルを作成することができることは、テーブルとメモリテーブル一時的なものです。
第三に、一時テーブル
MySQLの一時テーブルは、いくつかの一時的なデータを保存するときに非常に便利です。
表の一時表には、通常のテーブルのような様々な操作を行うことができ、適切に使用され、システムの一時フォルダ内に構築されています。
一時テーブルとテーブルのデータ構造は、メモリに格納されています。
一時表は、接続が閉じているとき、MySQLは自動的にテーブルを削除し、すべてのスペースを解放する、現在のMySQLにのみ表示接続されています。
1 。一時的なテーブル構造の一時テーブル構築することで作成します 作成 一時 表(tmp_table 名VARCHAR(10)NOT NULLを、 値INTEGERを NOT NULLは ); SELECT * からtmp_table; 2 。直接クエリ結果を一時テーブルに 作成 一時 表 tmp_table SELECTを * からその他;
3.一時テーブルの削除
ドロップテーブルtmp_tableを。
一時テーブルの応用:
- ときに1つのSQL二つ以上のテーブルに関連付けられた声明、そして小さなテーブルと関連の一部。大規模なテーブルと一時テーブルに格納された結果の比較的小さなセットを分割するために使用することができます。
- プログラムの実行中に、プログラム全体のセッション中に再利用する必要のある一時的なデータを格納するのに必要となる場合があります。
- デフォルトの一時表には、MyISAMテーブル(ストレージエンジン)ですが、変更することができます。
注意:
- 一時テーブルは、テーブルを満たすことができる既存の、ドロップされたときに同じテーブル名を持つ一時テーブルがある場合、テーブルがあるが非表示になります。
- ショーテーブルステートメントは一時テーブルが表示されませんが、メモリテーブルの一覧が表示されます。
第四に、メモリテーブル
ディスク上に構築されたテーブル構造、メモリ内のデータは、ときに、サービスのうち、データテーブルが失われ、テーブルの構造が失われることはありません。
メモリテーブルも一時テーブルとして見ることができます。
図1は、メモリテーブルを構築することにより、メモリのテーブル構造を作成 作成 テーブルtmp_table( 名VARCHAR(10)NOT NULL 、 値INTEGER NOT NULL )ENGINE = メモリと、 SELECT *を よりtmp_table、 表示するテーブルと、前記
メモリテーブルに直接クエリ結果を
エンジンメモリが作成tmp_table表を=
;その他から* SELECTを
メモリが占有3.リリース - 削除データ の削除 から、tmp_table - 空のテーブルを TRUNCATE テーブルtmp_table; - ドロップテーブルは ドロップ テーブル tmp_tableを。
メモリテーブルの機能:
- 可変長の他のタイプのVARCHARは、メモリテーブルは、固定長さを格納するために使用されます。
- メモリテーブルは非ユニークキーを持つことができます。
- メモリテーブルは、BLOBまたはTEXTの列を含めることはできません。
- メモリテーブルは、AUTO_INCREMENTカラムをサポートしています。
- メモリテーブルは、遅延、読み優先順位の挿入をサポートしています。
- 一時テーブルが大きくなると、MySQLは自動的にディスクに保存されているテーブルに変換し、メモリテーブルは自動的に変換されることはありません。
- サーバーからは、メモリテーブルは、MySQLのマスターにコピーすることができます。
- メモリテーブルの最大サイズは変数はmax_heap_table_sizeシステムによって制限され、デフォルト値は16メガバイトであり、この変数を変更することができます。
- すべてのユーザーのためのメモリテーブルの接続は、表示されているキャッシュのため、それは非常に適しています。
- メモリテーブルはメモリストレージエンジンを使用する必要があります。
第五に、一時メモリテーブル
1 。テーブル構造の一時記憶テーブルが構築することにより、作成 作成 一時 テーブルtmp_table( 名VARCHAR(10)NOT NULL 、 値INTEGER NOT NULL )ENGINE = MEMORYを; SELECT *を からtmp_table、 表示するテーブルを、 2を直接メモリテーブルへのクエリの結果は。 作成 テンポラリー 表 tmp_tableエンジン= メモリ SELECT * からその他;
参考:
https://dev.mysql.com/doc/refman/8.0/en/memory-storage-engine.html
https://blog.csdn.net/qq_43678418/article/details/87702348