MySQLで既存のビューをベースに新しいビューを作成する方法
MySQLで既存のビューをもとに新しいビューを作成する
MySQLでは、すでに存在する別のビューをベースとして、新しいビューを作成することができます。ビューは実体を持たない仮想テーブルであるため、既存のビューに対してさらに条件を加えたビューを定義すれば、用途に応じたデータの絞り込みや表示を柔軟に行えます。
以下では、具体的な例を使って手順を解説します。まず、次のようなデータを持つ「Info」というビューが存在するとします。
mysql> Create view info AS Select Id, Name, Subject FROM student_info; Query OK, 0 rows affected (0.11 sec) mysql> Select * from Info; +------+---------+------------+ | Id | Name | Subject | +------+---------+------------+ | 101 | YashPal | History | | 105 | Gaurav | Literature | | 125 | Raman | Computers | | NULL | Ram | Computers | +------+---------+------------+ 4 rows in set (0.00 sec)
この「Info」ビューは、student_infoテーブルからId・Name・Subjectの3列を選択して作成されたものです。
続いて、この既存ビュー「Info」をベースに、Idが120以上の行だけを抽出する新しいビュー「info_less」を、次のクエリで作成します。
mysql> Create view info_less AS Select Id, Name, Subject FROM info WHERE id >= 120; Query OK, 0 rows affected (0.25 sec) mysql> Select * from info_less; +------+-------+-----------+ | Id | Name | Subject | +------+-------+-----------+ | 125 | Raman | Computers | +------+-------+-----------+ 1 row in set (0.03 sec)
実行結果を見ると、「info_less」ビューには、元のビュー「Info」の中からIdが120以上のレコード(Id: 125 のRamanさん)だけが格納されていることがわかります。
押さえておきたいポイント
- CREATE VIEW文のSELECT句では、通常のテーブルと同じように既存のビュー名を指定できます。
- WHERE句などの条件を組み合わせることで、元のビューからさらに絞り込んだデータを提供するビューを作成できます。
- ビューは仮想テーブルなので、ベースとなるビューの内容が変われば、それに依存するビューの結果にも自動的に反映されます。
-
MySQLでカスケード(テーブル定義)を表示する方法|SHOW CREATE TABLEの使い方
MySQLでテーブルの「カスケード」、つまりテーブルを作成した際のCREATE TABLE文の内容を確認したい場合は、SHOW CREATE TABLEステートメントを使用します。このコマンドを実行すると、カラムのデータ型、主キー、ユニークキー、インデックス、ストレージエンジン、文字セットといったテーブルの完全な定義を一度に確認できます。 手順1:サンプルテーブルを作成する まず、動作を確認するためのデモテーブルを作成しましょう。以下のSQLを実行します。 mysql> create table DemoTable1378 -> ( -> Id int N
-
MySQLでビュー(VIEW)を作成する方法|CREATE VIEWの基本構文と実行例を解説
MySQLのビュー(VIEW)とは?ビュー(VIEW)とは、SQLクエリの結果セットをもとに定義される「仮想テーブル」のことです。実際のデータを物理的に保存するわけではなく、元のテーブルへの参照情報のみを保持します。そのため、複雑なクエリをシンプルな名前で呼び出せるようにしたり、ユーザーに見せたい列や行だけを限定して提供したりする際に非常に便利です。MySQLでビューを作成するには、CREATE VIEW文を使用します。ビュー作成の基本構文ビューを作成するための基本構文は以下の通りです。create view yourViewName as select * from yourTableNam