Open Source WEB

ビューは結局エイリアスということだったのだが、 まだエイリアスについて調べていなかったので、ここでやっておこう。

ビューのカラム名に漢字を使った場合の例をもう一度使おう。

とりあえず、以下の`東京`というテーブルがある。

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(面積)になってしまった。

う〜ん、どうしたんだ。失敗したときは休むに限る。今日はここまでとしよう。


戻る:ビューはどのように実現されているか

次へ:エイリアスのクォートは何でも良いのかな


フィードバック:

Name:
Comment:
残念!: (Mon Dec 12 15:08:19 2005 )
カンマが無いので、populationがareaのエイリアスになっています。
fuji: (Mon Dec 12 16:59:05 2005 )
そうなんです。ということで、明日続きを書くことにしよう。

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us