読者です 読者をやめる 読者になる 読者になる

SQLの学習に使えるサンプルデータベース'world'について

SQLはシンプルな文法でデータベースの操作ができるが、学習の環境を作るのが面倒である。本番のサーバで運用しているサービスのデータをSQLの初心者が直接触れるような会社はないだろうし、個人で学習するにしても何から始めていいか分からない。

SELECT文の書き方はGoogleで検索すればいくらでも出てくるが、SELECTの対象となるテーブルが無ければ学習したことを試すこともできない。SQLの練習をするためにデータを用意するのも面倒だ。そんなときは、MySQLが用意している'world'というデータベースを使うのが良い。

worldデータベースについて

worldは世界の国・都市・人口などのデータベースで、City/Country/CountryLanguageの3つのテーブルに分かれている。

City

世界の主要な都市の名前やDistrict(行政区)、人口等が格納されているテーブル。

Country

世界各国に関する様々な情報(名前、面積、独立年、人口、平均寿命、首都、GNPなど)が格納されているテーブル。

CountryLanguage

それぞれの国で話されている言語が格納されているテーブル。言語の名前、公用語かどうか、話者の比率などが国ごとに格納されている。

使用手順

まずはMySQLをインストールして初期設定をする必要がある。
MySQL :: MySQL Community Downloads
Macの場合はHomebrew等のパッケージ管理ツールでインストールするのが楽だと思う。設定の方法は環境に応じて異なり多種多様なのでご自分にの環境に合わせてGoogleで検索してください。
qiita.com

データベースのSQLファイルはこちらからダウンロードできる。
http://dev.mysql.com/doc/index-other.html

ダウンロードしたら解凍し、以下のコマンドでsqlファイルを読み込む(rootユーザでローカルのMySQLにパスワードありで接続している)。

$ mysql -u root -p mysql < world.sql

読み込んだ後に、MySQLのプロンプトでshow databases;を実行すると、以下の通り使用可能なデータベース*1が表示される。ここでworldが表示されていない場合は、worldデータベースの読み込みが上手くできていない。
f:id:hqac:20160101102323p:plain

読み込みが完了したら、useコマンドでworldデータベースに接続できる。

mysql> use world;

こうすれば、SELECT文で特定の国の都市のみを抽出したりORDER BY句で人口やGNP順に並べ替えたりできるようになる。

なお、公式ドキュメントによるworldデータベースの初期設定方法はこちら(英語)。
http://dev.mysql.com/doc/world-setup/en/world-setup-installation.html

*1:テーブル(列と行を使ってデータを二次元で表すもの。要はExcelのシート)を集めたもので、テーブルをファイルとするとフォルダにあたる概念。MySQL以外のデータベースエンジンではスキーマと呼ぶこともある。