> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL の列エイリアス

> MySQL の結果で AS を使って列の名前を変える方法、どの引用符を使うべきか、計算列に常にエイリアスが必要な理由、および AS が変えないもの。

> [card] [VillageSQL is a drop-in replacement for MySQL with extensions.](https://villagesql.com/docs/en/8.4/stable/install-server.md)
>
> All examples on this page work on VillageSQL. Install Now →

結果セットの列見出しは、選択リストに書いたものから取られます。普通の列では
その見出しは列名で、たいていはそれで問題ありません。計算では入力した式そのもの
になり、これは問題です。エイリアスはその見出しを、自分で選んだ名前に置き換え
ます。

始める前に `mysql -u root -p sakila` でクライアントを開いてください。

## エイリアスの仕組み

```sql theme={null}
SELECT COLUMN_OR_EXPRESSION AS ALIAS_NAME
FROM TABLE_NAME;
```

`COLUMN_OR_EXPRESSION` を必要な列または計算に、`ALIAS_NAME` を付けたい見出しに、
`TABLE_NAME` をテーブルに置き換えます。

エイリアスは結果にだけ適用されます。テーブルは何も変わらず、次のクエリはそれに
ついて何も知りません。

## 例

### 列の名前を変える

```sql theme={null}
SELECT title AS film_title FROM film;
```

```text theme={null}
+-----------------------------+
| film_title                  |
+-----------------------------+
| ACADEMY DINOSAUR            |
| ACE GOLDFINGER              |
| ADAPTATION HOLES            |
| AFFAIR PREJUDICE            |
| AFRICAN EGG                 |
...
+-----------------------------+
1000 rows in set (0.00 sec)
```

見出しは `film_title` になっています。値はそのままです。

### 計算に名前を付ける

ここがエイリアスの真価を発揮する場所です。エイリアスがなければ、見出しは計算式
そのものになります。

```sql theme={null}
SELECT title, rental_rate * 1.1 AS price_with_tax FROM film;
```

```text theme={null}
+-----------------------------+----------------+
| title                       | price_with_tax |
+-----------------------------+----------------+
| ACADEMY DINOSAUR            |          1.089 |
| ACE GOLDFINGER              |          5.489 |
| ADAPTATION HOLES            |          3.289 |
| AFFAIR PREJUDICE            |          3.289 |
| AFRICAN EGG                 |          3.289 |
...
+-----------------------------+----------------+
1000 rows in set (0.00 sec)
```

アプリケーションコードは結果を列名で読むため、名前のない式は、そのコードを
計算式の正確なテキストに依存させてしまいます。

### 空白を含むエイリアス

英字、数字、およびアンダースコアだけでできたエイリアスには引用符は不要です。
それ以外のものには必要です。空白や、`order` や `select` のように MySQL が
自分用に予約している単語が含まれます。手に取るべき引用符はバッククォートです。

```sql theme={null}
SELECT title AS `Film Title` FROM film;
```

```text theme={null}
+-----------------------------+
| Film Title                  |
+-----------------------------+
| ACADEMY DINOSAUR            |
| ACE GOLDFINGER              |
| ADAPTATION HOLES            |
...
+-----------------------------+
1000 rows in set (0.00 sec)
```

シングルクォートも同じ見出しを生成します。

```sql theme={null}
SELECT title AS 'Film Title' FROM film;
```

```text theme={null}
+-----------------------------+
| Film Title                  |
+-----------------------------+
| ACADEMY DINOSAUR            |
| ACE GOLDFINGER              |
| ADAPTATION HOLES            |
...
+-----------------------------+
1000 rows in set (0.00 sec)
```

ただし、どこでも等価というわけではありません。バッククォートは名前を示し、
シングルクォートは文字列を示します。後の句がエイリアスを参照するとき、その違いが
現れることがあります。次のレッスンで、それがうまくいかない例を示します。
バッククォートを使えば、この問題は決して起きません。

引用符を完全に省くと、サーバーは空白で止まります。

```sql theme={null}
SELECT title AS Film Title FROM film;
```

```text theme={null}
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Title FROM film' at line 1
```

`ERROR 1064` は一般的な構文エラーです。メッセージ末尾の引用された断片は、
サーバーが解析を諦めた場所で、通常は本当の間違いの 1 語か 2 語後ろです。

## AS は省略でき、省略すると入力ミスが隠れる

列の後の裸の名前は `AS` と同じ意味です。これが、忘れたカンマが姿を隠す方法でも
あります。

```sql theme={null}
SELECT title release_year FROM film;
```

```text theme={null}
+-----------------------------+
| release_year                |
+-----------------------------+
| ACADEMY DINOSAUR            |
| ACE GOLDFINGER              |
| ADAPTATION HOLES            |
...
+-----------------------------+
1000 rows in set (0.00 sec)
```

これは 2 列のつもりでした。カンマの欠落が `release_year` を `title` のエイリアスに
変えたため、結果は `release_year` という見出しの 1 列で、映画のタイトルを保持して
います。文は有効なので、サーバーは何も報告しませんでした。

すべてのエイリアスに `AS` を書いても、サーバーがこれを拒否するようにはなりません。
ここではどちらの列にも `AS` がないからです。それでも、クエリを読み返したときに
間違いが見えるようになります。前に `AS` のない、列の後の裸の名前は、カンマの
欠落です。

## まとめ

* 結果の列に自分で選んだ名前を付けるには `AS` を使います。
* 計算列のデフォルトの見出しは式なので、計算列には常にエイリアスを付けます。
* エイリアスに空白や予約語が含まれるときは、バッククォートで囲みます。
* 裸の名前がカンマの欠落と読めるように、すべてのエイリアスに `AS` を書きます。

## 関連項目

* [SELECT](https://villagesql.com/docs/ja/tutorial/select.md) — エイリアスが付く文
* [ORDER BY](https://villagesql.com/docs/ja/tutorial/order-by.md) — 結果の並べ替え（引用符の種類が重要になり始める場面）
* [MySQL の文字列関数](https://villagesql.com/docs/ja/guides/string-functions.md) — 名前を必要とする式


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.