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

MySQLでTEXT型のカラムを検索する方法|INFORMATION_SCHEMA.COLUMNSでデータ型をフィルタリング

MySQLでは、INFORMATION_SCHEMA.COLUMNS テーブルを参照することで、サーバー内のすべてのカラム情報を一覧できます。特定のデータ型(例:TEXT型)を持つカラムだけを抽出したい場合は、DATA_TYPE 列に対して WHERE 句でフィルターを設定します。

基本構文

データ型でカラムを絞り込むには、以下の構文を使用します。

SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'yourDataTypeName';

TEXT型のカラムを抽出する実行例

それでは、この構文を使って、データ型が「text」であるカラムのみを表示してみましょう。

mysql> SELECT TABLE_NAME, COLUMN_NAME
    -> FROM INFORMATION_SCHEMA.COLUMNS
    -> WHERE DATA_TYPE = 'text';

実行結果

上記のクエリを実行すると、次のような出力が得られます(結果は一部抜粋。全体で240行が返されます)。

+---------------------------------------------+--------------------------------+
| TABLE_NAME                                  | COLUMN_NAME                    |
+---------------------------------------------+--------------------------------+
| COLUMNS                                     | COLUMN_DEFAULT                 |
| COLUMNS                                     | COLUMN_COMMENT                 |
| FILES                                       | FILE_NAME                      |
| PARTITIONS                                  | PARTITION_DESCRIPTION          |
| PARTITIONS                                  | PARTITION_COMMENT              |
| ROUTINES                                    | ROUTINE_COMMENT                |
| replication_group_member_stats              | LAST_CONFLICT_FREE_TRANSACTION |
| password_history                            | Password                       |
| component                                   | component_urn                  |
| innodb_buffer_stats_by_schema               | object_schema                  |
| innodb_buffer_stats_by_schema               | allocated                      |
| innodb_buffer_stats_by_table                | object_name                    |
| schema_table_statistics                     | total_latency                  |
| statement_analysis                          | max_latency                    |
| user_summary                                | current_memory                 |
| host_summary                                | file_io_latency                |
| processlist                                 | last_wait_latency              |
| INNODB_COLUMNS                              | DEFAULT_VALUE                  |
| textdemo                                    | name                           |
| textdemo                                    | sentence                       |
| help_topic                                  | description                    |
| slave_master_info                           | User_password                  |
| posts                                       | post_content                   |
| demotable34                                 | ImageExtension                 |
| DemoTable                                   | CustomerAllProductPrice        |
| DemoTable                                   | Title                          |
+---------------------------------------------+--------------------------------+
240 rows in set (0.28 sec)

実務で使う際のポイント

  • 対象データベースを絞り込む: 上記のクエリはシステムテーブルも大量にヒットします。実際には AND TABLE_SCHEMA = 'yourDatabaseName' を条件に追加すると、自作データベース内のカラムだけを効率よく確認できます。
  • TEXT系の型をまとめて検索する: TINYTEXT・MEDIUMTEXT・LONGTEXT も含めて調べたい場合は、WHERE DATA_TYPE LIKE '%text%' を使うと便利です。
  • 大文字・小文字に注意: DATA_TYPE の値はすべて小文字で格納されているため、比較値も小文字('text')で指定します。

このように INFORMATION_SCHEMA.COLUMNS を活用すれば、スキーマ全体から目的のデータ型を持つカラムを簡単に把握でき、データベース設計の見直しやドキュメント作成にも役立ちます。

  1. MySQLでGROUP BYのように特定の1行だけ更新する方法|ORDER BYとLIMITを活用したUPDATE文の書き方

    MySQLでは、UPDATE文の中でGROUP BYを直接使用することができません。しかし、「同じ値を持つ複数のレコードの中から、最初の1行だけを更新したい」というケースは実際の開発でよく発生します。 そんなときに役立つのが、ORDER BYとLIMITを組み合わせたUPDATE文です。この記事では、サンプルテーブルを使いながら、その具体的な手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、従業員情報を格納するテーブル「DemoTable2018」を作成します。テーブルには、自動採番される主キー「EmployeeId」、従業員名「EmployeeName」、給与「Emp

  2. MySQLでAUTO_INCREMENT列を扱う方法を徹底解説

    MySQLでは、AUTO_INCREMENT属性を使うことで、新しい行に対して自動的に一意の番号(識別子)を割り当てることができます。本記事では、AUTO_INCREMENT列の基本的な使い方、動作の仕組み、そして利用時に守るべきルールについて、実例とともにわかりやすく解説します。基本的な使い方まずは、以下のクエリを見てみましょう。テーブルを作成し、データを挿入した結果を確認します。クエリ例CREATE TABLE tableName (    id MEDIUMINT NOT NULL AUTO_INCREMENT,