SELECT from WORLD Tutorial/ja
Language: | English • 日本語 • 中文 |
---|
name | continent | area | population | gdp |
---|---|---|---|---|
Afghanistan | Asia | 652230 | 25500100 | 20343000000 |
Albania | Europe | 28748 | 2831741 | 12960000000 |
Algeria | Africa | 2381741 | 37100000 | 188681000000 |
Andorra | Europe | 468 | 78115 | 3712000000 |
Angola | Africa | 1246700 | 20609294 | 100990000000 |
... |
テーブル名 world name:国名 continent:大陸 area:面積 population:人口 gdp:国内総生産
このチュートリアルでは world
テーブルで SELECT コマンドを使う:
導入
全ての国の国名と大陸と人口を表示する SQL コマンドを実行して結果を観察する。
SELECT name, continent, population FROM world
SELECT name, continent, population FROM world
大きな国々
人口が2億人(200000000 ゼロが8個ある)以上の国の名前を表示
SELECT name FROM world
WHERE population = 64105700
SELECT name FROM world
WHERE population>200000000
国民一人当たりの国内総生産
人口population
2億人以上の国の国名name
と国民一人当たりの国内総生産を表示
国民一人当たりの国内総生産は、国内総生産 GDP を 人口 population で割った値。式は GDP/population
SELECT name, gdp/population FROM world
WHERE population > 200000000
南アメリカを100万人単位で
大陸continent
が South America の国のname
とpopulation
を 百万人単位 に変換して表示する。人口 population を 1000000 で割ると100万人単位の人口になる。
SELECT name, population/1000000 FROM world
WHERE continent='South America'
フランス、ドイツ、イタリア
国名name
と人口population
を France, Germany, Italy について表示する。
SELECT name, population FROM world
WHERE name IN ('France','Germany','Italy')
ユナイテッド
国名に 'United' を含む国の国名を特定する。
SELECT name FROM world
WHERE name LIKE '%United%'
ビッグになる2つの道
ビッグになる2つの道: ビッグな国とは、面積が 3000000 平方キロ以上 または 人口が 250000000 以上の国とする。
面積か人口がビッグな国を表示する。国名 人口 面積(name, population , area)を表示する。
select name,population,area
from world
where area>3000000
or population>250000000
どちらか片方だけ(両方はダメ)
排他的論理和 Exclusive OR (XOR)の問題。面積か人口のどちらかだけ(両方は除く)が大きな国を表示する。国名 人口 面積を表示する(name, population, area)。
- オーストラリアは面積は大きく人口は少ないので、含まれる。
- インドネシアは人口は大きく面積は狭いので、含まれる。
- 中国は人口も面積も大きいので除かれる。
- イギリスは人口も面積も小さいので除かれる。
select name, population,area
from world
where
(population>250000000 or area>3000000)
and not(population>250000000 and area>3000000)
端数の丸め
南アメリカ大陸South America
にある国の、国名name
、人口population
(100万人単位)、GDP(10億ドル単位)を表示する。 ROUND/ja ROUND 関数で小数点以下の数値を2桁に丸める。
SELECT name, ROUND(population/1000000,2),
ROUND(gdp/1000000000,2)
FROM world
WHERE continent='South America'
1兆ドル経済
国内総生産 GDP が1兆ドル以上(0が12個)の国の国名と国民一人当たりのGDPを表示する。 GDPの単位は$1000単位にまとめる。
GDPが1兆ドル以上の国の国名と国民一人当たりのGDPを1000ドル単位に丸めて表示する。
select name, ROUND(gdp/population,-3)
from world
where
gdp>1000000000000
国名と首都が同じ文字数
ギリシャ(Greece) の首都はアテネ(Athens)。 GreeceとAthensの綴りはどちらも同じ6文字。
国名 name と首都 capital が同じ長さの国の、国名と首都を表示する。
- LENGTH 関数で文字列の文字数を求める。
SELECT name, LENGTH(name), continent, LENGTH(continent), capital, LENGTH(capital)
FROM world
WHERE name LIKE 'G%'
SELECT name, capital
FROM world
WHERE LENGTH(name)=LENGTH(capital)
国名と首都の一致
スウェーデン Sweden の首都はストックホルム Stockholm 。どちらもSから始まる。
- 文字列の先頭一文字を切り取るには、 LEFT を使う。
- 記号
<>
を NOT EQUALS 演算子の代わりに利用できる。
SELECT name, LEFT(name,1), capital
FROM world
SELECT name,capital
FROM world
WHERE LEFT(name,1)=LEFT(capital,1)
AND name<>capital
全ての母音
Equatorial Guinea (エクアトリアル ギニア)と Dominican Republic(ドミニカ共和国)はどちらも全ての母音(a e i o u)を国名に含んでいる。これらの国は、名前に単語が2つ以上あるので以下の対象としない。
国名に全ての母音を含む国で、空白を含まない単語1つの国名を検索する。
- name NOT LIKE '%a%' で特定の文字を含む国を除外できる。
- 入力済みのSQLはBから始まる国名を表示するが、バハマ Bahamas と ベラルーシ Belarus は少なくとも1つ以上のaを含むので表示されない。
SELECT name
FROM world
WHERE name LIKE 'B%'
AND name NOT LIKE '%a%'
SELECT name
FROM world
WHERE name LIKE '%a%'
AND name LIKE '%e%'
AND name LIKE '%i%'
AND name LIKE '%o%'
AND name LIKE '%u%'
AND name NOT LIKE '% %'
次は
- クイズに挑戦
- 続けてノーベル賞テーブルで、同様のテクニックとより多くの基本スキルを経験できる。
WHERE
節をnobel
テーブルで使う。 - 文のネスト(入れ子)について学ぶ。これは初心者には必須ではないが、有益で楽しい。
world
テーブルでネストしたSELECT
文を使う。