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

MySQLで一部の列だけを表示する方法|SHOW COLUMNSとNOT INの使い方

MySQLで一部の列だけを表示するには?

MySQLでテーブルの列情報を確認する際、「特定の列を除外して表示したい」「必要な列だけを表示したい」というケースがあります。そんなときは、SHOW COLUMNS文とNOT IN演算子を組み合わせることで、表示したくない列を簡単に除外できます。

この記事では、サンプルテーブルを使いながら、具体的な手順をわかりやすく解説します。

1. サンプルテーブルの作成

まずは動作確認用のテーブルを作成しましょう。以下がそのクエリです。

mysql> create table student_Information
    -> (
    -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName varchar(50),
    -> StudentAge int,
    -> StudentAddress varchar(100),
    -> StudentAllSubjectScore int
    -> );
Query OK, 0 rows affected (0.69 sec)

このテーブルには、学生ID・氏名・年齢・住所・全科目合計スコアの5つの列が定義されています。

2. テーブル構造の確認

作成したテーブルの構造を確認するには、DESCコマンド(DESCRIBE)を使用します。

mysql> desc student_Information;

実行すると、次のような出力が得られます。

+------------------------+--------------+------+-----+---------+----------------+
| Field                  | Type         | Null | Key | Default | Extra          |
+------------------------+--------------+------+-----+---------+----------------+
| StudentId              | int(11)      | NO   | PRI | NULL    | auto_increment |
| StudentName            | varchar(50)  | YES  |     | NULL    |                |
| StudentAge             | int(11)      | YES  |     | NULL    |                |
| StudentAddress         | varchar(100) | YES  |     | NULL    |                |
| StudentAllSubjectScore | int(11)      | YES  |     | NULL    |                |
+------------------------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

このように、通常はすべての列情報が表示されます。

3. NOT INを使って特定の列を除外して表示する

ここで、たとえば「StudentAddress」と「StudentAllSubjectScore」の2つの列を除いた列情報だけを表示したいとします。その場合は、WHERE句とNOT INを次のように組み合わせます。

mysql> SHOW COLUMNS FROM student_Information WHERE Field NOT IN ('StudentAddress','StudentAllSubjectScore');

実行結果は以下の通りです。

+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| StudentId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| StudentName | varchar(50) | YES  |     | NULL    |                |
| StudentAge  | int(11)     | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

指定した2つの列が除外され、残りの3列だけが表示されていることがわかります。このように、「除外したい列」をNOT INで指定するのがポイントです。

補足:逆に表示したい列を直接指定する方法

NOT INではなくINを使えば、「表示したい列だけ」を直接指定することもできます。

mysql> SHOW COLUMNS FROM student_Information WHERE Field IN ('StudentId','StudentName','StudentAge');

また、列の構造ではなく実際のデータを取得したい場合は、SELECT文で表示したい列名を明示的に列挙するのが一般的です。

mysql> SELECT StudentId, StudentName, StudentAge FROM student_Information;

まとめ

MySQLで一部の列だけを表示するには、SHOW COLUMNS文にWHERE Field NOT IN (...)を付けて、除外したい列を指定します。逆に必要な列だけを絞り込みたい場合はINを使うと便利です。用途に応じて使い分けましょう。

  1. MySQLのすべてのテーブルを1行で一覧表示する方法

    MySQLの全テーブルを1行で表示するには? MySQLですべてのテーブルを一覧表示したい場合は、information_schema.tablesを利用します。このシステムビューに対してデータベース名(スキーマ名)をWHERE句で指定することで、特定のデータベースに属するテーブルだけを抽出できます。 さらにGROUP_CONCAT()関数を組み合わせると、複数のテーブル名をカンマ区切りで1行にまとめて取得することも可能です。 実行例:データベース「web」の全テーブルを表示する 次のクエリでは、データベース「web」内のすべてのテーブル名を1行で取得します。 mysql> SELECT

  2. MySQLで2つの列の中から最大値を取得し、NULLを含むレコードも正しく扱う方法

    MySQLには複数の値の中から最大値を返すGREATEST()関数があります。しかし、引数のどれかにNULLが含まれている場合、GREATEST()は結果としてNULLを返してしまうという注意点があります。本記事では、IF()関数を使ってNULLを0に置き換えることで、2つの列の中から最大値を正しく取得する方法を、実際のSQL例とともに解説します。サンプルテーブルの作成まず、2つの整数型カラム(Value1、Value2)を持つテーブルを作成します。mysql> create table DemoTable -> ( -> Value1 int, ->