都道府県データベースの作成と問い合わせ命令文の復習
今日は、『実践Pythonによるデータベース入門』の第2章 "SQL―手始め―"で学んだことをアプトプットします。
今回は、章末の演習問題に挑戦です。
【2.1】47都道府県のデータベースを作成
47都道府県のデータベースを作成します。
参照するサイトは、「都道府県プロフィール」です。
データベース名は、todoufukenbaseとします。
mysql> CREATE DATABASE todoufukenbase;
続いて、テーブルの作成。
テーブル名は、todoufukenとします。
あ、でもその前に、USE命令文を使うのでしたね^^;
テーブルを作成するときは、毎回どのデータベースのものかを明示的に示すのは面倒なので、それをやらなくていいように、以下に示すUSE命令文を使うといいようです。
mysql> USE todoufukenbase
テーブル作成に戻ります。
本書にて、列名とデータ型が以下のように表示されているので、その使用に基づいて新規テーブル「todoufuken」を作成します。
mysql> CREATE TABLE todoufuken(kenmei CHAR(20), kenchou CHAR(20), jinkou INT, menseki FLOAT);
SHOW field文で、作成したテーブルの列名情報を表示して、作成できたかを確認します。
mysql> SHOW fields FROM todoufuken;
+---------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| kenmei | char(20) | YES | | NULL | |
| kenchou | char(20) | YES | | NULL | |
| jinkou | int | YES | | NULL | |
| menseki | float | YES | | NULL | |
+---------+----------+------+-----+---------+-------+
後は、INSERT文で各都道府県ごとのデータを挿入していけばいいのかなと。
mysql> INSERT todoufuken VALUES ('北海道', '札幌市', 5212462, 83424.44);
1件、北海道のデータを挿入して、テーブルのデータを確認してみます。
mysql> SELECT * FROM todoufuken;
+-----------+-----------+---------+---------+
| kenmei | kenchou | jinkou | menseki |
+-----------+-----------+---------+---------+
| 北海道 | 札幌市 | 5212462 | 83424.4 |
+-----------+-----------+---------+---------+
問題ないようです。
上記のINSERT文によるデータの挿入を全都道府県のデータに対して行います。
mysql> SELECT * FROM todoufuken;
+--------------+-----------------+----------+---------+
| kenmei | kenchou | jinkou | menseki |
+--------------+-----------------+----------+---------+
| 北海道 | 札幌市 | 5212462 | 83424.4 |
| 青森県 | 青森市 | 1230535 | 9645.64 |
| 岩手県 | 盛岡市 | 1212201 | 15275 |
| 宮城県 | 仙台市 | 2292690 | 7282.29 |
| 秋田県 | 秋田市 | 952069 | 11637.5 |
| 山形県 | 山形市 | 1064954 | 9323.15 |
| 福島県 | 福島市 | 1830114 | 13784.1 |
| 茨城県 | 水戸市 | 2854131 | 6097.39 |
| 栃木県 | 宇都宮市 | 1932091 | 6408.09 |
| 群馬県 | 前橋市 | 1926370 | 6362.28 |
| 埼玉県 | さいたま市 | 7343453 | 3797.75 |
| 千葉県 | 千葉市 | 6281394 | 5157.57 |
| 東京都 | 新宿区 | 13971109 | 2194.03 |
| 神奈川県 | 横浜市 | 9214151 | 2416.11 |
| 新潟県 | 新潟市 | 2199746 | 12584 |
| 富山県 | 富山市 | 1034670 | 4247.58 |
| 石川県 | 金沢市 | 1130159 | 4186.21 |
| 福井県 | 福井市 | 762679 | 4190.52 |
| 山梨県 | 甲府市 | 806210 | 4465.27 |
| 長野県 | 長野市 | 2034145 | 13561.6 |
| 岐阜県 | 岐阜市 | 1974142 | 10621.3 |
| 静岡県 | 静岡市 | 3618972 | 7777.35 |
| 愛知県 | 名古屋市 | 7541123 | 5173.07 |
| 三重県 | 津市 | 1767615 | 5774.49 |
| 滋賀県 | 大津市 | 1412415 | 4017.38 |
| 京都府 | 京都市 | 2568427 | 4612.2 |
| 大阪府 | 大阪市 | 8817372 | 1905.32 |
| 兵庫県 | 神戸市 | 5438891 | 8401.02 |
| 奈良県 | 奈良市 | 1322970 | 3690.94 |
| 和歌山県 | 和歌山市 | 914055 | 4724.65 |
| 鳥取県 | 鳥取市 | 551402 | 3507.14 |
| 島根県 | 松江市 | 666941 | 6707.89 |
| 岡山県 | 岡山市 | 1882356 | 7114.33 |
| 広島県 | 広島市 | 2794862 | 8479.65 |
| 山口県 | 山口市 | 1341506 | 6112.54 |
| 徳島県 | 徳島市 | 721269 | 4146.75 |
| 香川県 | 高松市 | 948801 | 1876.78 |
| 愛媛県 | 松山市 | 1326487 | 5676.19 |
| 高知県 | 高知市 | 689785 | 7103.63 |
| 福岡県 | 福岡市 | 5106774 | 4986.51 |
| 佐賀県 | 佐賀市 | 808821 | 2440.69 |
| 長崎県 | 長崎市 | 1310660 | 4130.98 |
| 熊本県 | 熊本市 | 1735901 | 7409.46 |
| 大分県 | 大分市 | 1124983 | 6340.76 |
| 宮崎県 | 宮崎市 | 1063759 | 7735.22 |
| 鹿児島県 | 鹿児島市 | 1587342 | 9187.06 |
| 沖縄県 | 那覇市 | 1458839 | 2282.59 |
+--------------+-----------------+----------+---------+
47 rows in set (0.00 sec)
【2.2】単純条件式による問い合わせ命令文の作成
仕様要求は以下のようになります。
(1)人口1000万人以上の都道府県の全列を表示する
(2)人口100万人以下の都道府県の県名、県庁所在地と人口を表示する
(3)面積8,000km2以下の都道府県の全列を表示する
(4)面積3,000km2以下の都道府県の県名、県庁所在地と面積を表示する
(1)人口1000万人以上の都道府県の全列を表示する
mysql> SELECT * FROM todoufuken WHERE jinkou >= 10000000;
+-----------+-----------+----------+---------+
| kenmei | kenchou | jinkou | menseki |
+-----------+-----------+----------+---------+
| 東京都 | 新宿区 | 13971109 | 2194.03 |
+-----------+-----------+----------+---------+
(2)人口100万人以下の都道府県の県名、県庁所在地と人口を表示する
mysql> SELECT kenmei, kenchou, jinkou FROM todoufuken WHERE jinkou <= 1000000;
+--------------+--------------+--------+
| kenmei | kenchou | jinkou |
+--------------+--------------+--------+
| 秋田県 | 秋田市 | 952069 |
| 福井県 | 福井市 | 762679 |
| 山梨県 | 甲府市 | 806210 |
| 和歌山県 | 和歌山市 | 914055 |
| 鳥取県 | 鳥取市 | 551402 |
| 島根県 | 松江市 | 666941 |
| 徳島県 | 徳島市 | 721269 |
| 香川県 | 高松市 | 948801 |
| 高知県 | 高知市 | 689785 |
| 佐賀県 | 佐賀市 | 808821 |
+--------------+--------------+--------+
(3)面積8,000km2以下の都道府県の全列を表示する
mysql> SELECT * FROM todoufuken WHERE menseki >= 8000;
+--------------+--------------+---------+---------+
| kenmei | kenchou | jinkou | menseki |
+--------------+--------------+---------+---------+
| 北海道 | 札幌市 | 5212462 | 83424.4 |
| 青森県 | 青森市 | 1230535 | 9645.64 |
| 岩手県 | 盛岡市 | 1212201 | 15275 |
| 秋田県 | 秋田市 | 952069 | 11637.5 |
| 山形県 | 山形市 | 1064954 | 9323.15 |
| 福島県 | 福島市 | 1830114 | 13784.1 |
| 新潟県 | 新潟市 | 2199746 | 12584 |
| 長野県 | 長野市 | 2034145 | 13561.6 |
| 岐阜県 | 岐阜市 | 1974142 | 10621.3 |
| 兵庫県 | 神戸市 | 5438891 | 8401.02 |
| 広島県 | 広島市 | 2794862 | 8479.65 |
| 鹿児島県 | 鹿児島市 | 1587342 | 9187.06 |
+--------------+--------------+---------+---------+
(4)面積3,000km2以下の都道府県の県名、県庁所在地と面積を表示する
mysql> SELECT kenmei, kenchou, menseki FROM todoufuken WHERE menseki <= 3000;
+--------------+-----------+---------+
| kenmei | kenchou | menseki |
+--------------+-----------+---------+
| 東京都 | 新宿区 | 2194.03 |
| 神奈川県 | 横浜市 | 2416.11 |
| 大阪府 | 大阪市 | 1905.32 |
| 香川県 | 高松市 | 1876.78 |
| 佐賀県 | 佐賀市 | 2440.69 |
| 沖縄県 | 那覇市 | 2282.59 |
+--------------+-----------+---------+
【2.3】複合条件式による問い合わせ命令文の作成
仕様要求は以下のようになります。
(1)人口800万人以上、1000万人未満の都道府県の県名を表示する
(2)人口800万人以上、かつ面積3,000km2以下の都道府県の件名と県庁所在地を表示する。
(1)人口800万人以上、1000万人未満の都道府県の県名を表示する
mysql> SELECT kenmei FROM todoufuken WHERE jinkou >= 8000000 AND jinkou < 10000000;
+--------------+
| kenmei |
+--------------+
| 神奈川県 |
| 大阪府 |
+--------------+
(2)人口800万人以上、かつ面積3,000km2以下の都道府県の件名と県庁所在地を表示する。
mysql> SELECT kenmei, kenchou FROM todoufuken WHERE jinkou >= 8000000 AND menseki <= 3000;
+--------------+-----------+
| kenmei | kenchou |
+--------------+-----------+
| 東京都 | 新宿区 |
| 神奈川県 | 横浜市 |
| 大阪府 | 大阪市 |
+--------------+-----------+
サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪