MySQL from 節いろいろ
サブクエリから生成されるテーブル
以下のような使い方は全く意味を成さない。直接NameとPopulationをcityテーブルから取得すればいい。
mysql> select t.Name, t.Population from (select ID, Name, CountryCode, District, Population from city) t limit 10; +----------------+------------+ | Name | Population | +----------------+------------+ | Kabul | 1780000 | | Qandahar | 237500 | | Herat | 186800 | | Mazar-e-Sharif | 127800 | | Amsterdam | 731200 | | Rotterdam | 593321 | | Haag | 440900 | | Utrecht | 234323 | | Eindhoven | 201843 | | Tilburg | 193238 | +----------------+------------+ 10 rows in set (0.00 sec)
ビュー
ビューを作って
mysql> create view city_view as select Name, Population from city; Query OK, 0 rows affected (0.01 sec)
ビューに対してクエリを発行し、データにアクセスする
mysql> select Name from city_view limit 10; +----------------+ | Name | +----------------+ | Kabul | | Qandahar | | Herat | | Mazar-e-Sharif | | Amsterdam | | Rotterdam | | Haag | | Utrecht | | Eindhoven | | Tilburg | +----------------+ 10 rows in set (0.00 sec)
ビューが作成されたあと、追加のデータが作成されることはない。
ビューを作成する目的は、ユーザーから不要な列を隠したい、複雑なデータベースの状態を単純にしたいなど。
テーブルリンク
2つ以上のテーブルを何らかの共通のキーを元に結合して出力する。非常によく使われる。
mysql> select city.Name as CityName, country.Name as CountryName, country.Code from city INNER JOIN country ON city.CountryCode = country.Code limit 10; +----------------+-------------+------+ | CityName | CountryName | Code | +----------------+-------------+------+ | Kabul | Afghanistan | AFG | | Qandahar | Afghanistan | AFG | | Herat | Afghanistan | AFG | | Mazar-e-Sharif | Afghanistan | AFG | | Amsterdam | Netherlands | NLD | | Rotterdam | Netherlands | NLD | | Haag | Netherlands | NLD | | Utrecht | Netherlands | NLD | | Eindhoven | Netherlands | NLD | | Tilburg | Netherlands | NLD | +----------------+-------------+------+ 10 rows in set (0.00 sec)
テーブルエイリアスを定義した場合
mysql> select c.Name as CityName, o.Name as CountryName, o.Code from city c INNER JOIN country o ON c.CountryCode = o.Code limit 10; +----------------+-------------+------+ | CityName | CountryName | Code | +----------------+-------------+------+ | Kabul | Afghanistan | AFG | | Qandahar | Afghanistan | AFG | | Herat | Afghanistan | AFG | | Mazar-e-Sharif | Afghanistan | AFG | | Amsterdam | Netherlands | NLD | | Rotterdam | Netherlands | NLD | | Haag | Netherlands | NLD | | Utrecht | Netherlands | NLD | | Eindhoven | Netherlands | NLD | | Tilburg | Netherlands | NLD | +----------------+-------------+------+ 10 rows in set (0.00 sec)