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

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句の条件を変更すれば、特定の列だけを絞り込んだり、複数テーブルを一括調査したりすることも可能です。スキーマ設計の確認やマイグレーション作業の際にぜひ活用してください。

  1. MySQLでテーブルの構造を複製する方法|LIKE句を使った手順を解説

    MySQLで既存テーブルと同じ構造を持つ新しいテーブルを作成(複製)したい場合は、LIKE句を使用します。この記事では、実際にサンプルテーブルを作成しながら、テーブル構造を複製する具体的な手順をわかりやすく解説します。1. 元となるテーブルを作成するまずは複製元となるサンプルテーブルを作成しましょう。ここでは学生IDと学生名を格納するテーブルを定義します。mysql> create table DemoTable1-> (-> StudentId int,-> StudentName varchar(20)-> );Query OK, 0 rows affecte

  2. MySQLでテーブルの最初と最後のレコードを取得する方法【UNIONとLIMIT活用】

    MySQLで最初と最後のレコードを取得する基本手法MySQLでテーブルの最初のレコードと最後のレコードを同時に取得したい場合は、UNIONを使用します。UNIONは複数のSELECT文の結果を結合する構文で、「昇順で並べ替えた先頭1件」と「降順で並べ替えた先頭1件」を組み合わせることで、最初と最後のレコードを一度に取り出せます。また、LIMIT句を使うことで、取得するレコード数を指定できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable694 ( EmployeeId int NOT NULL AUTO