MySQLで条件に基づいてテーブルから値を取得するビューを作成する方法
MySQLにおいて、特定の条件に基づいてテーブルから値を取得するビュー(VIEW)を作成したい場合は、ビューを作成する際にWHERE句を使用します。WHERE句で指定した条件に一致する行だけがビューに格納され、以降そのビューを参照するたびに条件に合致したデータのみが表示されます。
基本構文
WHERE句付きのMySQLビューを作成する構文は以下のとおりです。
Create View view_name AS Select_statements FROM table WHERE condition(s);
具体例
それでは、実際のデータを使ってこの概念を確認してみましょう。ここでは次のような student_info テーブルを使用します。
mysql> Select * from student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Chandigarh | Literature | | 125 | Raman | Shimla | Computers | | 130 | Ram | Jhansi | Computers | +------+---------+------------+------------+ 4 rows in set (0.08 sec)
WHERE句を使ったビューの作成
このテーブルから、「Subject(科目)が Computers である行だけ」を格納する Info という名前のビューを作成します。そのためには、ビュー作成時に以下のようにWHERE句を指定します。
mysql> Create OR Replace VIEW Info AS Select Id, Name, Address, Subject from student_info WHERE Subject = 'Computers'; Query OK, 0 rows affected (0.46 sec)
ビューの内容を確認する
ビューを作成したら、通常のテーブルと同じようにSELECT文で内容を確認できます。
mysql> Select * from info; +------+-------+---------+-----------+ | Id | Name | Address | Subject | +------+-------+---------+-----------+ | 125 | Raman | Shimla | Computers | | 130 | Ram | Jhansi | Computers | +------+-------+---------+-----------+ 2 rows in set (0.00 sec)
このように、元のテーブルには4件のレコードがありますが、ビュー Info を参照すると、WHERE句の条件(Subject = 'Computers')に一致する2件のレコードのみが返されていることがわかります。
ポイントまとめ
- ビューは仮想テーブルであり、実データを持たず、ベースとなるテーブルへのクエリ結果を提供します。
Create OR Replace Viewを使うことで、同名のビューが存在する場合でもエラーにならず上書きできます。- WHERE句の条件はビュー定義の一部として保存されるため、ベーステーブルのデータが更新されれば、ビューの結果も自動的に反映されます。
-
MySQLのビューからテーブルを作成する方法を徹底解説!基本構文と実行手順
ビューからテーブルを作成する基本構文 MySQLでは、ビュー(VIEW)をもとに新しいテーブルを簡単に作成できます。基本となる構文は以下の通りです。 create table yourTableName select * from yourViewName; このように「CREATE TABLE ... SELECT」構文を使うことで、ビューの構造とデータをそのまま新しいテーブルへ复制できます。以下、具体的な手順を見ていきましょう。 ステップ1:サンプルテーブルを作成する まず、元となるテーブルを作成します。 mysql> create table DemoTable830(Name
-
MySQLでNOT IN()を使ってテーブルから特定の値を除外する方法
MySQLでは、NOT IN()句を使用することで、テーブルから特定の値を除外してデータを取得できます。条件に含めたくない値をリストで指定するだけで、それらを除いたレコードを簡単に抽出できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable791 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(100) ); Query OK, 0 rows affected (0.61 sec)テストデータの挿入次に、INSERTコマ