MySQLでテーブル列のデータ型を取得する方法|information_schema.columnsの使い方
MySQLでは、information_schema.columns テーブルを参照することで、指定したテーブルの各列(カラム)がどのデータ型で定義されているかを簡単に確認できます。
データ型を取得するための基本構文
以下のSQLが基本となる構文です。
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = 'yourDatabaseName' AND table_name = 'yourTableName';
table_schema にデータベース名、table_name に対象のテーブル名を指定して実行します。
サンプルテーブルの作成
動作を理解するために、まず複数の異なるデータ型を持つテーブルを作成しましょう。
mysql> create table DataTypeDemo
-> (
-> Id int,
-> Address varchar(200),
-> Money decimal(10,4)
-> );
Query OK, 0 rows affected (0.60 sec)
このテーブルには int 型、varchar 型、decimal 型の3つの列が定義されています。
データ型のみを取得するクエリ
先ほどの構文に実際のデータベース名とテーブル名を当てはめて実行します。
mysql> select data_type from information_schema.columns
where table_schema = 'business' and table_name = 'DataTypeDemo';
実行結果は以下の通りです。
+-----------+
| DATA_TYPE |
+-----------+
| int |
| varchar |
| decimal |
+-----------+
3 rows in set (0.00 sec)
列名とデータ型を同時に取得する方法
どの列がどのデータ型なのかを一目で把握したい場合は、column_name も合わせてSELECT句に指定しましょう。
mysql> select column_name, data_type from information_schema.columns
where table_schema = 'business' and table_name = 'DataTypeDemo';
実行結果には、各データ型に対応する列名も併せて表示されます。
+-------------+-----------+
| COLUMN_NAME | DATA_TYPE |
+-------------+-----------+
| Id | int |
| Address | varchar |
| Money | decimal |
+-------------+-----------+
3 rows in set (0.00 sec)
まとめ
information_schema.columns を活用すれば、SHOW COLUMNS コマンドを使わなくても、SQLクエリだけでテーブル構造のデータ型情報を柔軟に取得できます。WHERE句の条件を変更すれば、特定の列だけを絞り込んだり、複数テーブルを一括調査したりすることも可能です。スキーマ設計の確認やマイグレーション作業の際にぜひ活用してください。
-
MySQLでテーブルの構造を複製する方法|LIKE句を使った手順を解説
MySQLで既存テーブルと同じ構造を持つ新しいテーブルを作成(複製)したい場合は、LIKE句を使用します。この記事では、実際にサンプルテーブルを作成しながら、テーブル構造を複製する具体的な手順をわかりやすく解説します。1. 元となるテーブルを作成するまずは複製元となるサンプルテーブルを作成しましょう。ここでは学生IDと学生名を格納するテーブルを定義します。mysql> create table DemoTable1-> (-> StudentId int,-> StudentName varchar(20)-> );Query OK, 0 rows affecte
-
MySQLでテーブルの最初と最後のレコードを取得する方法【UNIONとLIMIT活用】
MySQLで最初と最後のレコードを取得する基本手法MySQLでテーブルの最初のレコードと最後のレコードを同時に取得したい場合は、UNIONを使用します。UNIONは複数のSELECT文の結果を結合する構文で、「昇順で並べ替えた先頭1件」と「降順で並べ替えた先頭1件」を組み合わせることで、最初と最後のレコードを一度に取り出せます。また、LIMIT句を使うことで、取得するレコード数を指定できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable694 ( EmployeeId int NOT NULL AUTO