SE基本情報に出るIT用語

エイリアスとは?データベースのテーブルや列の別名のこと【エラー時のヒントも記載】

データベースSQLを書いている時に、「エイリアス」という単語が出てきたら、「データベースのテーブルや列の別名のこと」を言っています。

例えば、”hatchu_dempyo(発注伝票テーブル)”という項目があったとして(項目はなんでもいいです)。

毎回、”hatchu_dempyo”と書くと長くなるので、”hd”とか、”h”みたいに別名をつけてあげるイメージです。

【エラーで困っている人向け】エラーになったときのヒント

スポンサーリンク

データベースのSQLにおけるエイリアスとは、テーブルや列の別名

データベースSQLを書いている時に出てくる「エイリアス」という単語は、「データベースのテーブルや列の別名のこと」を言っています。

ここでは、列(selectする項目名)と、テーブルの2つで、使い方の例を記載します。

列(項目名)のエイリアスの使い方の例

列に対してのエイリアスの例です。

※これから記載するテーブル名や項目名は、あくまでイメージなのでてきとうです。

SELECT
hachu_denpyo_no AS 伝票No
,hachu_goods_no AS 商品No
FROM
hachu_denpyo_table
ORDER BY
伝票No
, 商品No

“項目名 AS ○○○”のように記載します。

selectの結果は、元の項目名の”hachu_denpyo_no”や”hachu_goods_no”ではなく、「伝票No」・「商品No」として返ってきます。

OracleとpostgreSQLで、order by(ならびかえ)には、列のエイリアスが使えます。

ただし、OracleとpostgreSQLで、where句(しぼりこみ)やgroup by(集計)にエイリアスは使用不可で、元の項目名(“hachu_denpyo_no”など)を記載する必要があります。

※ある程度SQLが書ける人だと、「おい!ひよこSE!副問い合わせ(サブクエリ)内で使われたエイリアスなら、メインクエリの項目名として使えるぞ!」的なツッコミを入れるかもですが、それをわかっている人が、この記事を読んでいるとも思えないので、お許しください(-_-;)。

そして、何のこと言ってるかわからなかったら、スルーで(´▽`*)。

テーブルのエイリアスの使い方の例

SELECT
*
FROM
hachu_denpyo_table d
LEFT JOIN hachu_denpyo_meisai_table m
ON d.hachu_denpyo_no = m.hachu_denpyo_no
ORDER BY
d.hachu_denpyo_no
, m.hachu_denpyo_meisai_no

テーブルのエイリアスの使い方は、”テーブル名 別名”のように使います。ASとかは、いりません。

「テーブルのエイリアス.項目名」、たとえば、”m.hachu_denpyo_meisai_no”としてあげると、「発注伝票明細テーブルの発注伝票明細No」という意味になります。

テーブルのエイリアスは、SELECT, GROUP BY, ORDER BY, WHERE で使うことができます。

LEFT JOINやINNER JOIN(テーブル結合)、副問い合わせをするときは、ほぼ確実に出てくるので、イヤでも覚えるとは思います(*´ω`)。

スポンサーリンク

エイリアス(別名)が重複したりしてエラーになったときのヒント

もし、この記事を読んでいる人が、「エイリアスの使い方が悪い。『エイリアス』でググりなさい」みたいに先輩に言われたエンジニアだったら・・・。

エイリアスの使い方でエラーになったときのヒントを書いておきます。

列名(AS句)でエラー

【列名(項目名)のエイリアスでのチェック事項】
  • (“*”(アスタリスク)を使用していないとき)selectのなかのテーブルAの項目名とテーブルBの項目名が重複していないか?
  • 副問い合わせ句で、項目名が重複しているにもかかわらず、”*”にして、別名をつけ忘れた。その結果に対して、メインクエリで重複した列名を指定していないか?
    ※個人的に、副問い合わせ句で”*”は、やめたほうがいいと思う!
  • メインクエリでつけた列の別名を、where句やgroup by句で使っていないか?

OracleとpostgreSQLは、少なくとも上3つのどれかのはず。

テーブル名でエラー

【テーブルのエイリアスでのチェック事項】
  • 他のテーブルや副問い合わせのテーブルのエイリアスと競合していないか?
    ※unionは、よかったかもだけど、ふつうはやらない(意味が分かるよう別にする)ので忘れた
  • 自分でつけたテーブルのエイリアス”○○”と、”○○.項目名”の”○○”同士が一致しているか?

SQLのつくりが100%悪いので、がんばってください(*´ω`)。

まとめ

データベースでSQLを書いている時に、「エイリアス」うんぬんと言われたら、「データベースのテーブルや列の別名のこと」を言っています。

「列(項目)の別名と、テーブルの別名をつけることができるんだな~」みたいに、書き方を覚えたってください(-_-;)。

スポンサーリンク

▼この記事がいいと思ったら、下の画像をクリックしてくれたら励みになります!

にほんブログ村 IT技術ブログ システムエンジニアへ

コメント

タイトルとURLをコピーしました