プログラマーの先輩に弟子入りして、SQLはじめました

個人的な下期の目標として「システム的な知見を高める」ということを掲げたので、何か実務に活きそうな物はないかと思い、SQLの勉強をすることに決めました。
SQLとはデータベースに入っている情報を扱うためのデータベース言語のことです。
SQLを使えるようになれば、データベースに登録されている実データを確認する事ができたり、rawデータをCSVにファイルに落としたりと仕事の幅が広がりそうです。
せっかく社内にプログラマーさんがたくさんいるので、誰かに弟子入りしようと思い、隣に座っていたF先輩に弟子入りすることに決めました。
F先輩の指導の元、休憩時間中に地道に学んでいこうと思います。
ということで優しい先輩から課題が送信されてきました。

軽くお願いした割にはとても丁寧に問題文を作ってくれた先輩に感謝しつつ、課題に取り組んでいきたいと思います。
まず1.2のインストールについては問題なく、インストールできました。
先ほど登録したIPアドレスの情報やユーザー名、パスワードを入力し、無事テスト環境に接続できました。
ここからやっとデータベースへの接続を行います。
まず、自分がどのホスト(IPアドレス)の、どのデータベースに接続するかを指定します。今回は指定されたホスト名:123.123.12.123(仮)のmarumaru(仮)というデータベースに接続します。
接続するためには以下の部分に情報を入力する必要があるようです。
psql -h ホスト名 -p ポート番号 -U ロール名 -d データベース名
そのため以下のように入力したところ、無事指定されたデータベースに接続する事ができました。
psql -h 123.123.12.123 -U pgsql -d marumaru
普段全くこんなことをしないので、ここまででもだいぶ感動的です。
しかしデータベースにただ接続しただけでは全く意味がありません!
自分が欲しい情報を取得できるようになってこそ意味があります。

次は接続したデータベースの中から、自分が欲しい情報の入っているテーブル名と変数名を指定する必要があります。
指定する方法はざっくりこんな感じのようです。
select 表示したい変数名 from 情報の入っているテーブル名
課題ではkuruma_tableというテーブルに入っている情報を全て表示するように指示がありました。早速先の例にならってSQL文を書いていこうと思いましたが、そもそもこのテーブルには何が登録されているか分かりません。
そこでまずは「\d テーブル名」でテーブルに登録されている情報を確認していきます。

どうやらkuruma_tableには以下の5項目が登録されているようです。
- kuruma_namae_id
- kuruma_namae
- registration_date
- update_date
- delete_date
select文の後ろにこれだけ入力すれば情報を取得できそうですが、ちょっと量が多くて正直面倒です。
ググってみたら「*」を入れることで全て指定できるようなのでこちらを利用してみます。
select * from kuruma_table
ずらっと大量にデータを取得する事ができました!
どうやら実験は成功のようです。
ただ、正直企画やディレクターの業務ではこの量のデータを全て取得することはまれな気がします。
むしろここに何が何件登録されているとか、ここに登録されている情報が何件存在するとかの方が役立ちそうです。
そこで課題にはありませんが、登録されているデータ件数をカウントする方法を勝手に調べてみます。
どうやらselectの部分をselect count (*)とすることで件数を取得する事ができそうです。
早速、先ほどのkuruma_tableで試してみましょう。
select count(*) from kuruma_table
count
-------
18379
(1 行)
想像を超える量のデータが入っていて驚きましたが、件数の取得ができました。
ここまでの課題と自己学習でテーブル内の情報と入っている情報の件数を取得する事ができるようになりました。
これで最低限、自分が欲しいデータの確認ができるようになったといえるでしょう、、!!
ただし、あくまでもこれはテーブル内にどのような情報があるか分かっていることが前提です。
何があるか分からないままデータベース内を漁っても時間ばかりが過ぎるだけであまり意味がありません。
SQLにはデータベースの構造を調べるコマンドもあるようなので、今後はそれらも活用し、よりどこにデータがあるかを把握した上で、より効率的にデータベース内の調査が出来るように勉強を進めていきたいと思います。
ファブリカコミュニケーションズで働いてみませんか?
あったらいいな、をカタチに。人々を幸せにする革新的なサービスを、私たちと一緒に創っていくメンバーを募集しています。
ファブリカコミュニケーションズの社員は「全員がクリエイター」。アイデアの発信に社歴や部署の垣根はありません。
“自分から発信できる人に、どんどんチャンスが与えられる“そんな環境で活躍してみませんか?ご興味のある方は、以下の採用ページをご覧ください。