Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
ビューは結局エイリアスということだったのだが、 まだエイリアスについて調べていなかったので、ここでやっておこう。
ビューのカラム名に漢字を使った場合の例をもう一度使おう。
とりあえず、以下の`東京`というテーブルがある。
mysql> CREATE TABLE `東京` ( `name` VARCHAR(20),`area` FLOAT, `population` INT)
-> DEFAULT CHARACTER SET eucjpms;
Query OK, 0 rows affected (0.11 sec)
mysql> INSERT INTO `東京` VALUES
-> ('千代田区',11.64,43881),('世田谷区',58.08,810897),
-> ('新宿区',18.23,304539),('文京区',11.31,93949),
-> ('足立区',53.20,645873),('江東区',39.48,429224);
Query OK, 6 rows affected (0.15 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM `東京`;
+----------+-------+------------+
| name | area | population |
+----------+-------+------------+
| 千代田区 | 11.64 | 43881 |
| 世田谷区 | 58.08 | 810897 |
| 新宿区 | 18.23 | 304539 |
| 文京区 | 11.31 | 93949 |
| 足立区 | 53.2 | 645873 |
| 江東区 | 39.48 | 429224 |
+----------+-------+------------+
6 rows in set (0.03 sec)
mysql>
違うのは、ここからだ。
前回は、このテーブルからビューをでっちあげてやったのだが、 ここでは、エイリアスを使って同様の表示を得てみようと思う。
mysql> SELECT `name` AS `区名`, `area` AS `面積`, `population` AS `人口`,
-> ROUND(`population`/`area`) AS `人口密度` FROM `東京`;
+----------+-------+--------+----------+
| 区名 | 面積 | 人口 | 人口密度 |
+----------+-------+--------+----------+
| 千代田区 | 11.64 | 43881 | 3770 |
| 世田谷区 | 58.08 | 810897 | 13962 |
| 新宿区 | 18.23 | 304539 | 16705 |
| 文京区 | 11.31 | 93949 | 8307 |
| 足立区 | 53.2 | 645873 | 12140 |
| 江東区 | 39.48 | 429224 | 10872 |
+----------+-------+--------+----------+
6 rows in set (0.05 sec)
mysql>
SELECTの直後にSELECTする式をカンマ(,)で区切りながら並べられる訳だが、 この式には、エイリアスを付けることができる。
select_expr [[AS] column_alias_name]
良く見ると、エイリアスを付けるときでも、ASは省略可能になっている。
ASの省略
では、ASを省略した場合を試してみよう。
mysql> SELECT `name` `区名`, `area` `面積`, `population` `人口`,
-> ROUND(`population`/`area`) `人口密度` FROM `東京`;
+----------+-------+--------+----------+
| 区名 | 面積 | 人口 | 人口密度 |
+----------+-------+--------+----------+
| 千代田区 | 11.64 | 43881 | 3770 |
| 世田谷区 | 58.08 | 810897 | 13962 |
| 新宿区 | 18.23 | 304539 | 16705 |
| 文京区 | 11.31 | 93949 | 8307 |
| 足立区 | 53.2 | 645873 | 12140 |
| 江東区 | 39.48 | 429224 | 10872 |
+----------+-------+--------+----------+
6 rows in set (0.00 sec)
mysql>
という風に、AS を全部省略することができる。
さて、全部にエイリアスを付けなくても、一部で良いと思って 以下を実行してみた。
mysql> SELECT `name` `区名`, `area` `population`,
-> ROUND(`population`/`area`) `人口密度` FROM `東京`;
+----------+------------+----------+
| 区名 | population | 人口密度 |
+----------+------------+----------+
| 千代田区 | 11.64 | 3770 |
| 世田谷区 | 58.08 | 13962 |
| 新宿区 | 18.23 | 16705 |
| 文京区 | 11.31 | 8307 |
| 足立区 | 53.2 | 12140 |
| 江東区 | 39.48 | 10872 |
+----------+------------+----------+
6 rows in set (0.00 sec)
mysql>
うまく行ったと思ったら、2番目のカラムのタイトルが population なのに、 値はarea(面積)になってしまった。
う〜ん、どうしたんだ。失敗したときは休むに限る。今日はここまでとしよう。
フィードバック:
残念!: (Mon Dec 12 15:08:19 2005
)
fuji: (Mon Dec 12 16:59:05 2005
)