MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

パターンマッチングに基づいてベーステーブルからデータを選択し、MySQLビューを作成する方法


MySQLのLIKE演算子は、パターンマッチングに基づいてデータを選択するために使用される演算子です。ビュー(VIEW)でも同様にLIKE演算子を利用することで、ベーステーブルから特定のパターンに一致するデータだけを選択したビューを作成できます。

ここでは、以下のようなデータを持つベーステーブル「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  |
| 132  | Shyam   | Chandigarh | Economics  |
| 133  | Mohan   | Delhi      | Computers  |
+------+---------+------------+------------+
6 rows in set (0.00 sec)

例:LIKE演算子を使ったビューの作成

次のクエリでは、CREATE OR REPLACE VIEW文を使って「Info」という名前のビューを作成し、WHERE句でLIKE演算子を適用して、名前(Name)がパターン「%Ra%」に一致するレコードのみを選択しています。

mysql> Create or Replace view Info AS SELECT * from student_info WHERE Name LIKE '%Ra%';
Query OK, 0 rows affected (0.11 sec)

mysql> Select * from Info;
+------+--------+------------+------------+
| id   | Name   | Address    | Subject    |
+------+--------+------------+------------+
| 105  | Gaurav | Chandigarh | Literature |
| 125  | Raman  | Shimla     | Computers  |
| 130  | Ram    | Jhansi     | Computers  |
+------+--------+------------+------------+
3 rows in set (0.00 sec)

この結果を見ると、「Gaurav」「Raman」「Ram」のように、名前に「ra」という文字列を含む行だけがビューに表示されていることがわかります。なお、MySQLのデフォルトの照合順序(utf8mb4_general_ci など)は大文字と小文字を区別しないため、大文字の「R」で始まるパターンでも小文字の「ra」を含む行が一致対象になります。大文字小文字を厳密に区別したい場合は、バイナリ照合順序やBINARYキーワードの使用を検討してください。

NOT LIKE演算子を使った逆条件の指定

また、LIKE演算子にはNOTを組み合わせることも可能です。以下の例では、名前がパターン「%Ra%」に一致しないレコードのみを選択するビューを作成しています。

mysql> Create or Replace view Info AS SELECT * from student_info WHERE Name NOT LIKE'%Ra%';
Query OK, 0 rows affected (0.14 sec)

mysql> Select * from info;
+------+---------+------------+-----------+
| id   | Name    | Address    | Subject   |
+------+---------+------------+-----------+
| 101  | YashPal | Amritsar   | History   |
| 132  | Shyam   | Chandigarh | Economics |
| 133  | Mohan   | Delhi      | Computers |
+------+---------+------------+-----------+
3 rows in set (0.00 sec)

まとめ

このように、CREATE OR REPLACE VIEW文のSELECT文内でLIKE(またはNOT LIKE)演算子を活用すれば、ベーステーブルからパターンマッチングに基づいて絞り込んだデータを提供するビューを簡単に作成できます。さらに、ビューは元となるテーブルのデータが更新されると自動的にその変更を反映するため、常に最新の状態で条件付きの結果セットを取得できるというメリットもあります。特定のキーワードを含む・含まないレコードだけを継続的に参照したい場合に、非常に便利な手法といえるでしょう。

  1. MySQLで月ごとにテーブルの合計値を集計する方法

    MySQLで日付データを月単位にグループ化して合計値を求めたい場合、GROUP BY句とMONTH()関数を組み合わせることで簡単に実現できます。この記事では、実際のサンプルを使いながら手順を詳しく解説します。1. サンプルテーブルの作成まず、購入日と金額を格納するテーブルを作成します。mysql> create table DemoTable1628 -> ( -> PurchaseDate date, -> Amount int -> ); Query OK, 0 rows affected (1.55 sec)2. テストデー

  2. PythonとMySQLで条件に合うデータを抽出する方法:WHERE句の使い方を徹底解説

    テーブルからすべてのデータを取得する必要があるケースは、実はそれほど多くありません。むしろ、何らかの条件や基準に基づいて、特定のデータや行だけを取り出したいという場面の方が多いでしょう。例えば、多くの生徒の名前と点数が登録されたテーブルがあるとします。ここから「点数が90以上の生徒の名前だけを取得したい」という場合、(点数>=90)という条件に基づいてデータを選択する必要があります。このような条件付きのデータ抽出を実現するために、MySQLでは「WHERE」句が用意されています。WHERE句を使えば、指定した条件を満たすデータだけをテーブルから選択できます。基本構文SELECT * FR