都道府県データベースの作成と問い合わせ命令文の復習

今日は、『実践Pythonによるデータベース入門』の第2章 "SQL―手始め―"で学んだことをアプトプットします。

今回は、章末の演習問題に挑戦です。

【2.1】47都道府県のデータベースを作成

47都道府県のデータベースを作成します。
参照するサイトは、「都道府県プロフィール」です。

データベース名は、todoufukenbaseとします。

mysql> CREATE DATABASE todoufukenbase;

続いて、テーブルの作成。
テーブル名は、todoufukenとします。

あ、でもその前に、USE命令文を使うのでしたね^^;

テーブルを作成するときは、毎回どのデータベースのものかを明示的に示すのは面倒なので、それをやらなくていいように、以下に示すUSE命令文を使うといいようです。
mysql> USE todoufukenbase

テーブル作成に戻ります。
本書にて、列名とデータ型が以下のように表示されているので、その使用に基づいて新規テーブル「todoufuken」を作成します。

画像1

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   |
+--------------+-----------+
| 東京都       | 新宿区    |
| 神奈川県     | 横浜市    |
| 大阪府       | 大阪市    |
+--------------+-----------+

サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪