カラムに別名を付ける(AS句)

MySQL では SELECT 文を使ってデータを取得する時に AS 句を使いカラムに対して別の名前を付けることができます。ここでは MySQL でカラムに別名を付ける方法について解説します。

(Last modified: )

カラムに別名をつける

SELECT文を使ってデータを取得する時、カラム名に対して別名を付けることができます。次の書式を使います。

SELECT col_name AS alias_name FROM table_name

テーブルからデータを取得するときにカラム名を別の名前に変更したい場合や、カラムに対して演算などを行った場合にカラム名を割り当てることができます。

使い方は次のとおりです。

[例] sales カラムを tokyosales カラムとして取得
SELECT sales AS tokyosales FROM uriage WHERE branch='Tokyo';

[例] kokugo カラムの値と eigo カラムの値の平均を heikin カラムとして取得
SELECT (kokugo + eigo) / 2 AS heikin FROM seiseki;

AS 句は省略可能なので次のように記述することもできます。ただ人が見たときにカラム名を列挙した場合と区別が付きにくいので明示的に AS 句は記述されることをおすすめします。

SELECT col_name alias_name FROM table_name

-- --

それでは実際に試してみます。次のようなテーブルを作成しました。

create table product (name varchar(10), price int, design int, quality int);

カラムに別名をつける(1)

テーブルに次のようなデータを追加します。

insert into product values ('NotePC', 70, 74, 90);
insert into product values ('Mobile', 82, 90, 78);
insert into product values ('Tablet', 76, 83, 80);

カラムに別名をつける(2)

それではテーブルからデータを取得します。それぞれのカラムに加えて、 price カラム、 design カラム、 quality カラムの合計も合わせて表示します。またテーブルからデータを取得する時に、カラム名にそれぞれ別名を設定します。

select name as 名前, price as 価格, design as デザイン, quality as 品質, price+design+quality as 合計得点 from product;

カラムに別名をつける(3)

このようにもともとテーブルに含まれているカラムに別の名前を付けたり、カラムに対して演算を行った結果に対して名前を付けることができます。

AS句をORDER BY句などと組み合わせて使う

並べ替えを行う ORDER BY 句や、グループ化を行う GROUP BY 句、グループ化を行ったあとで検索条件を設定する HAVING 句などでは、それぞれ基準となるカラム名を指定しますが、 AS 句を使って付けた別のカラム名も指定することができます。

それでは先ほど作成した product テーブルを利用して試してみます。最初にそれぞれのカラムに加えて、 price カラム、 design カラム、 quality カラムの合計に total という別名をつけてデータを取得してみます。

select *, price+design+quality as total from product;

AS句をORDER BY句などと組み合わせて使う(1)

今度は ORDER BY 句を使って並べ替えを行って表示してみます。 ORDER BY 句の並べ替えの基準として AS 句で別名をつけた total カラムを使います。

select *, price+design+quality as total from product order by total;

AS句をORDER BY句などと組み合わせて使う(2)

total カラムの値を基準に昇順に並び替えられて表示されました。

-- --

AS 句を使ってカラムに別名を付ける方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。