タグ別アーカイブ: PostgreSQL

OSSDB講座第二,三回(全八回)@LA池袋校

IMG_6204

毎週土曜に受講しているPostgreSQLの講座。
時間帯はおおよそ10:00-16:00くらいの時間(昼休み50分)

覚えたことを覚えたなりにアウトプットしないと忘れるので覚え書き。

二回、三回ので扱った内容は表の照会。
基本的に表の照会は以下のようなSQL文を打つことになる。

SELECT 照会したい列 FROM 表の名前; となるので以下のような感じ。
SELECT * FROM customer;
customerテーブル(顧客表)の情報をあるだけそのまま出してねという意味になる。

けれど顧客表の中の情報で、名前と電話番号だけ知りたい!とか
東京に住んでて名字がサイトウさんの人の情報だけ出してほしい!とか
売上データで売り上げランキング1位から10位の商品名だけ表示してほしい!とか
さまざまな条件で検索したいときは、それらしいSQL文を書かないといけない。

そういうときはおおまかにこんな感じ。SQL「文」と言われるだけあって文章っぽい。
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+–+-+-+-+-+-+-+-+-+-+-+-
SELECT emp_name , birthday FROM employee WHERE birthday >= ’1980-01-01′ ORDER BY birthday DESC;
担当者表(employee)から、1980年以降生まれの社員の名前と誕生日を降順で表示してね。

表を照会したい    SELECT   (列の名前)
どの表から      FROM    (表の名前)
その行を       WHERE    (行の選択条件)
どの順番で      ORDER BY  (昇順か降順か)

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+–+-+-+-+-+-+-+-+-+-+-+-
表を照会するってだけだけど、より細かい条件の指定もできる。
そういう時は以下のように文節を設けていくことになる。

表を照会したい    SELECT
どの表から      FROM
その行を       WHERE
集計する時の列の指定 GROUP BY
GROUPBYでの選択条件 HAVING
どの順番で      ORDER BY
表示行数の指定    LIMIT
スキップする行の指定 OFFSET

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+–+-+-+-+-+-+-+-+-+-+-+-
さも長ったらしいことを丁寧に説明するときのように、
SQLの文法でも文節と条件を正しく指定して書く必要がある。
SQL文はプログラミングでも英語に近い感覚で捉えられるので、
細かいのは面倒でも法則に慣れればそんなに習得は難しくないんじゃないか、なんて。

二回に分けて、WHERE句の使用方法、GRUOP BYの使い方、
列関数の使用方法、表の結合方法あたりを学んだと思うけど今回は大枠だけ書き置き。

OSSDB講座第一回(全八回)@LA池袋校 

OSSDB講座第一回(全八回)@LA池袋校
オープンソースのPostgreSQLの概念と表からの情報の取得方法(SQL文)など。

・オープンソースデータベースとは

内部のロジック(ソースコード)が公開されており
無料で使えるし自由に改変してもいいよ、というデータベースの仕組み。
Oracleとかの企業からリリースされているDBソフトではなく
有志のソフトウェア技術者達がメンテ、更新を行ってきたもの。
今回の講座ではPostgreSQLというOSSDBを扱っている。
導入コストが抑えられるし機能がそろってるとの評判です。

・データベースにも種類がある

データベース種類 構造 特徴
階層型 ツリー構造 銀行口座のDBなど。
集中アクセスの耐性あり。
検索の柔軟性は△
ネットワーク型 網(ネットワーク)構造 管理が大変
あまり使われていない
関係型 表構造 表の値の一致から関連付けされる
現在の主流

データを扱うにあたっての現在の主流は関係型とされている。
関係型のデータは表構造・・・なので、Excelの表のように列と行で構成されている。
関係型と言われるゆえんは行の中に設定する情報(IDみたいなもの)を関係付けることで
他の表からもデータを引っ張ってこれる仕組みになっているため。

たとえばスーパーで取り扱う商品のデータがあった場合
下の表みたく生産者のデータは別で存在してることが多い。
関係型DBではこの場合、品目IDと生産者IDとを紐付けてデータを引っ張ってこれる。

品目ID 名前 生産者ID 価格(円) 特徴
トマト 200 茨城産の無農薬トマト
レタス 150 長野産のレタス
リンゴ 180 青森産のリンゴ
生産者ID 生産者名 連絡先 住所
山田○○ 050-xxxx-xxxx 茨城県xxxx-xxxx
真田○○ 050-xxxx-xxxx 長野県xxxx-xxxx
木村○○ 050-xxxx-xxxx 青森県xxxx-xxxx

今回の講義ではこういった概念から実際のデータ照会方法までを学んだ。
コマンドプロンプトの黒い画面を叩くことに。(画面ショットは適当)
SQL

SELECT * FROM employee; とか
SELECT emp_name,birthday,sal,comm,sal +coalease(comm,0) FROM employee; とか。

またSQL文の中でswitch構文が使えたり、数字を特定の文字列に変換して表示するとか
少しばかり複雑なこともできることが意外だったので
「JavaなんかのDBを呼び出す言語側でも文字列の置換とかは同じようなことできますけど・・・?」
と講師の先生に問いかけたところ
「アセンブラとかの低級言語では難しいので、DB側でやるかプログラム側かは作るシステムによりけりです」
とのお答えだった。勉強になる・・・!

時間があったら次回も書きます。