SQL第一歩30話.ビューの作成と削除
15646 ワード
ビューの作成と削除
サブクエリの部分から分かるように、サブクエリは FROM文で使用することができる. データベース・オブジェクトを書き込みやすい名前にしてサブクエリ
ビューを使用すると、オブジェクトとして使用できない
したがって,ビュー参照の際に定義されたSELECTコマンドの実行結果をテーブルとして用いることができる.
たとえば、FROM文にサブクエリを含む文が存在するとします.
は、FROM文で作成された 既存のSELECTコマンドの使用をより簡単にします.以下に示します.
仮想テーブル
ビューはテーブルとみなされますが、最終エンティティは存在しません.したがって、「仮想テーブル」(Virtual Table)と呼ばれます.
したがって、ビューは他のテーブルのように書き込みまたは消去可能な記憶領域を持たない.および ビューの作成と削除
ビューの作成
ビューの作成には
サンプルview 67ビューを作成して、 で作成されたビューを確認するコマンドは、「Show CREATE VIEWビュー名」の明暗と同じです.
ビュー作成時にカラム指定を省略すると、指定したカラム情報がSELECTコマンドのSELECT文から収集され、自動的にビュー内のカラムとして指定されます.逆に、カラムが指定されている場合は、SELECTコマンドのSELECT文で指定されているカラムよりも優先されます.注:カラムのみを指定できます.データ型や制約は指定できません.
列を指定してビューを作成する方法は、次のとおりです.
ビューの削除
ビューを削除するときは
したがって、
これらの処理には、計算能力が必要なため、コンピュータのCPUが必要です.
他のテーブルとは異なり、ビューは
ただし、前述したように、CPUリソースは計算に用いられる.
物質化ビュービューでは、この計算能力が使用されるため、ソーステーブルに格納されているデータ量が大きい場合、処理速度が低下します. ネストされたビューも同様である. これを回避するには、[マテリアルビュー](Materialized View)を使用します.通常ビューは、データを一時的に保存し、クエリーの終了時に一緒に削除します. 一方、「現実生活」ビューでは、初めて参照されたときにデータが保存されます.
以降の再参照では、以前に保存したデータは保持されるので、SELECTコマンドを毎回実行する必要はありません.
テーブルのようにストレージデバイスに格納されます.
ビューに指定したテーブルのデータが変更された場合は、SELECTコマンドを再実行してデータを再保存します.これはRDBMSによって自動的に実行される.
ビューに割り当てられたテーブルのデータが頻繁に変更されない場合は、「現実生活」ビューを使用してビューの不足を補うことができます.
ただし、一部のデータベース製品ではサポートされていないことに注意してください.
スナップショット(Snapshot)は、現実の生活ビューに似た方法です.
関数テーブル
ビューを構成するSELECTコマンドは、個別に実行する必要があります.
したがって、サブクエリが親クエリに関連付けられている場合、サブクエリは相関サブクエリなどのビューとして使用できません.
これらのビューの不足を補うには、関数テーブル(Function Table)を使用します.
関数テーブルは、欠落した値にテーブルを返すユーザー定義関数です.
関数は引数を指定することができるので、引数の値に基づいて条件
関数テーブルの動作はサブクエリと似ています.
MySQLによると、
データベースで関数を作成する方法の詳細については、後で説明します.
サブクエリの部分から分かるように、サブクエリは
뷰(View)
と名付けます.-- 뷰 생성
> CREATE VIEW 뷰_테이블명 AS SELECT * FROM 테이블명;
-- 뷰 생성 (열 지정)
> CREATE VIEW 뷰_테이블명(컬럼명, 컬럼명, 컬럼명) AS SELECT 컬럼명, 컬럼명, 컬럼명 FROM 테이블명;
-- 뷰 삭제
> DROP VIEW 뷰_테이블명;
表示ビューを使用すると、オブジェクトとして使用できない
SELECT
コマンドの名前と管理ができます.したがって,ビュー参照の際に定義されたSELECTコマンドの実行結果をテーブルとして用いることができる.
たとえば、FROM文にサブクエリを含む文が存在するとします.
SELECT * FROM (SELECT * FROM sample54) AS sq;
SELECT * FROM sampl54
サブクエリ部分をsample view 67のようなビューと命名することができる.SELECT * FROM sample_view_67;
このビューは、複雑なSELECT
コマンドをより簡単にします.仮想テーブル
ビューはテーブルとみなされますが、最終エンティティは存在しません.したがって、「仮想テーブル」(Virtual Table)と呼ばれます.
したがって、ビューは他のテーブルのように書き込みまたは消去可能な記憶領域を持たない.
INSERT
、UPDATE
、およびDELETE
のコマンドは、条件を満たす場合にのみ使用できますが、SELECT
のコマンドのみを使用することを推奨します.ビューの作成
ビューの作成には
CREATE VIEW
コマンドが使用されます.サンプルview 67ビューを作成して、
SELECT * FORM sample54
文を置き換えます.mysql > CREATE VIEW sample_view_67 AS SELECT * FROM sample54;
Query OK, 0 rows affected (0.00 sec)
mysql > SHOW CREATE VIEW sample_view_67;
+----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View | Create View | character_set_client | collation_connection |
+----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| sample_view_67 | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `sample_view_67` AS select `sample54`.`no` AS `no`,`sample54`.`a` AS `a` from `sample54` | utf8mb4 | utf8mb4_0900_ai_ci |
+----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)
作成したビューを実際に使用すると、次のように返されるアップルの値が正常に表示されます.mysql > SELECT * FROM sample_view_67;
+------+------+
| no | a |
+------+------+
| 1 | 900 |
| 2 | 900 |
+------+------+
2 rows in set (0.00 sec)
mysql > SELECT * FROM (SELECT * FROM sample54) AS sq;
+------+------+
| no | a |
+------+------+
| 1 | 900 |
| 2 | 900 |
+------+------+
2 rows in set (0.00 sec)
ビュー作成時にカラム指定を省略すると、指定したカラム情報がSELECTコマンドのSELECT文から収集され、自動的にビュー内のカラムとして指定されます.逆に、カラムが指定されている場合は、SELECTコマンドのSELECT文で指定されているカラムよりも優先されます.注:カラムのみを指定できます.データ型や制約は指定できません.
列を指定してビューを作成する方法は、次のとおりです.
mysql > CREATE VIEW sample_view_672(n, v1, v2) AS SELECT no, a, a*2 FROM sample54;
Query OK, 0 rows affected (0.01 sec)
mysql > SELECT * FROM sample_view_672;
+------+------+------+
| n | v1 | v2 |
+------+------+------+
| 1 | 900 | 1800 |
| 2 | 900 | 1800 |
+------+------+------+
2 rows in set (0.00 sec)
SELECT
コマンドのSELECT
文など、いくつかの列を指定する必要があるので、SELECT
コマンドのすべての列を使用する場合は、列を指定しないほうがいいです.ビューの削除
ビューを削除するときは
DROP VIEW
コマンドを使用します.方法は次のとおりです.mysql> DROP VIEW sample_view_672;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW CREATE VIEW sample_view_672;
ERROR 1146 (42S02): Table 'sample.sample_view_672' doesn't exist
ビューの弱点SELECT
コマンドは、ローを検索してクライアントに返すコマンドです.したがって、
ORDER BY
コマンドおよびGROUP BY
コマンドでソートし、欠落した値を返すことができる.これらの処理には、計算能力が必要なため、コンピュータのCPUが必要です.
他のテーブルとは異なり、ビューは
SELECT
コマンドを保存するだけなので、あまり大きなストレージスペースは必要ありません.ただし、前述したように、CPUリソースは計算に用いられる.
以降の再参照では、以前に保存したデータは保持されるので、SELECTコマンドを毎回実行する必要はありません.
テーブルのようにストレージデバイスに格納されます.
ビューに指定したテーブルのデータが変更された場合は、SELECTコマンドを再実行してデータを再保存します.これはRDBMSによって自動的に実行される.
ビューに割り当てられたテーブルのデータが頻繁に変更されない場合は、「現実生活」ビューを使用してビューの不足を補うことができます.
ただし、一部のデータベース製品ではサポートされていないことに注意してください.
関数テーブル
ビューを構成するSELECTコマンドは、個別に実行する必要があります.
したがって、サブクエリが親クエリに関連付けられている場合、サブクエリは相関サブクエリなどのビューとして使用できません.
これらのビューの不足を補うには、関数テーブル(Function Table)を使用します.
関数テーブルは、欠落した値にテーブルを返すユーザー定義関数です.
関数は引数を指定することができるので、引数の値に基づいて条件
WHERE
を追加して、結リンゴ値を変更することができます.関数テーブルの動作はサブクエリと似ています.
MySQLによると、
CREATE FUNCTION
コマンドで関数を作成できます.データベースで関数を作成する方法の詳細については、後で説明します.
Reference
この問題について(SQL第一歩30話.ビューの作成と削除), 我々は、より多くの情報をここで見つけました https://velog.io/@donghoim/SQL-첫걸음-30강.-뷰-작성과-삭제テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol