はじめてでも本質を理解できる! データベース超入門 研修コースに参加してみた
今回の研修参加レポートは↓です!
はじめてでも本質を理解できる!データベース超入門
内容そのものは、データベースがなぜ必要なのか、というところからスタートし、簡単なSQLでデータ操作するというものでした。
個人的には理解が誤っていたことにたくさん気付けて、新人研修やインターネットなどでサラッと学んだ人には、復習と深掘りができるので、とてもオススメだと思います!!
では、どんな内容だったのかレポートします!
もくじ
想定する受講者
- 何らかのプログラミング言語による開発の経験・知識があることが望ましい
受講目標
- RDBMSの役割を理解し、データ操作の考え方を身につける
講師紹介
登壇されたのは 坂井 恵 さんで、最近は企業の情シス部門ではなく業務部門向けのIT支援を行ってらっしゃるとのことでした。
またコミュニティ活動もされていて、日本MySQLユーザ会の副代表を務め、ユーザ会のイベントを開催したり、サイト更新、他イベントでの講演など多岐に渡った活動をされています。
ご本人曰く、「なんでも屋」とのことでした。一見すると、たしかに。。
またご自身では触れていませんでしたが、書籍出版にも携わってらっしゃいます。
- 「5.5新機能対応 MySQL徹底入門 第3版」 [共著] (翔泳社)
- 「MySQL辞典 ~コマンド・関数・パラメータ、目的別逆引きリファレンス~」 (共著) (翔泳社) など
データベースとは
ここで参加されている方に、簡単に普段の業務を聞くと、開発に携わっていない方がわりといらっしゃいました
タイトルには超入門とあるので、想定している受講者、何らかの開発経験がある、とは伝わらなかったのかも知れません。
さて、ここではそもそも、なぜデータベースは必要なのか、というお話です。
スライドの通り、データベース (このコースではDBMSを指しています) が無くてもよいことがあり、坂井さんから、例えば、自分が覚えておきたいことぐらいではデータベースは必要無いとも紹介されました。
確かに、本屋などではエクセル指南書がまだまだ売れており、DBMSまで必要ない業務は多そうです。
DBMSの目的
では、なぜデータベースが必要なのか。
例えば、
- ファイルが壊れてしまったときのバックアップはどうするのか
- 複数人数でデータを触るとき、上書き更新を防ぐにはどうするのか
- 1万件の注文履歴から欲しいデータを出すときはどうするのか
こういったときに、これを実現する仕組みを自分で作るのは大変なので、データベースが必要になるとのことでした。
当たり前かも知れませんが、会社やビジネスが大きくなるにつれ、データベースは必要になるのですね。
データベースで必要な知識
データベースといっても幅が広く、amazonでも関連書籍は3000以上あります。。
このデータベースで知っておくべきことをまとめていただいたのがこの図です。
- データ設計
- SQL操作
- データ保全
この3つが必要とのことで、こう区切られると見通しがとても良くなりますね。
この研修コースでは SQL操作 を扱います。
データ操作をするSQL
SQLと言っても、データを操作するだけでなく、データ保管場所の定義もします。
データを操作 (マニピュレーション) するので、 DML (Data Manipulation Language) と言い、データを定義 (ディフィニション) するので、 DDL (Data Definition Language) と呼ばれます。
データを保管するテーブル
そのデータベースで扱うテーブルについて、エクセルとの違いを解説していただきました。
例えば、
- セル結合とか出来ません
- 数字が入るところに文字が入ってはダメ
- 行を特定するためのキーが必要
- よく使われる `id` はユニークであるのが ほぼ 必須
- 例えば、 id=3 という行が2つあると、
DELETE id=3
としたときに、意図せずその2つが消えてしまう - ほぼと言っているのは、組み合わせてキーにすることがあるからとのことです
- 例えば、 id=3 という行が2つあると、
わかりやすく違いを解説してもらえました。
比較を聞けば聞くほど、擬似的なDBMSとしてエクセルを使うケースが多いので、こういった制約がなく、なんと自由なのかと思ってしまいます。
(それだけにエクセル から 業務アプリ 移行が難しいのですね)
おまけ話 「行と列の覚え方」
坂井さんからおまけ話として、行と列をどうすると混同しなくなるのか、紹介していただきました。
- 行という漢字をみると、横に書くイメージがあるので、行
- 列という漢字を見ると、縦に書くものが多いので、列
たしかに、覚えられました!!
テーブルのデータには順序が無い
ここは個人的に理解が誤っていた点で、データベースでは表ではなく、 行がバラバラに保管されている というイメージが重要ということでした。
保管した順で出てくるように思われがちですが、自分で順序を指定しないと思ったとおりに出てこず、このため検索するのが大変でインデックス (索引) というものを指定して出しやすくしている、とのことでした。
ちなみに、今のRDBMSはここ5年で頭が良くなったので、インデックスを指定しなくても良くなっているそうです。(恩恵に預かっています!!)
テーブル in スキーマ
ここも今までイマイチ理解できてなかったのですが、スキーマとはセキュリティ的に見せてよいテーブルとかをスキーマ毎に決めたりできるという役割とのことでした。
たしかにRDBMSごとではなく、テーブルごとに決められると煩雑になりませんね。
また、セキュリティの関連の話で、RDBMSによってユーザー認証も異なるそうで、MySQLはインストール後、いちいちユーザーを作らなくてはならないのに対して、PostgresSQL ではOSのログインユーザーがユーザーになるそうです。
実際に触ってみよう
ここからは実際に坂井さんに用意していただいたテーブル (講座はホントこの辺が楽です!!) と、MySQLを使って、SQLで操作していきます。
- データの登録
INSERT
- データの検索 (表示)
SELECT
- データの更新
UPDATE
- データの削除
DELETE
なお、データーベースにアクセスするには
- コマンドラインから接続する
- プログラムから接続する
この2つがあり、プログラムから接続することのほうが多いですが、今回はコマンドラインから接続します。
データ操作するときに考えること
演習しながら、SQLを書くときの順番を教えてもらいました。
また、その以前にやることとして2つ紹介いただききました。
- テーブル操作をする前にどんなテーブルなのか、見ないと変な操作をすると意図しない結果になってしまう
- 普通はテーブル定義書をみるけど、ない場合や更新がない時が多い。。 orz
- なので、SQLで
desc テーブル名
で出してくる
その他SQLで演習しているときに教えてもらったこと
- マニュアル見よう!! -> MySQL :: MySQL 5.6 リファレンスマニュアル
日本語訳は Oracle が頑張ったので、とてもいい UPDATE
- 重要なのは
where
を指定しないと、全件上書きする。。 (TдT) - 誰もが通る道、とフォローいただきました。
- たしかに、私も通ったことがあります。。
- 重要なのは
SELECT
*
は研修ではよく使うけど、現場ではカラムを指定することが多い //SELECT * FROM USERS;
- 甘えていました。。。
OR
は結構パフォーマンス食うのでin
を使おう- 条件式
- 完全一致
=
- 大小
>
- 不一致
<>
// プログラミングと違うので注意 - 部分一致
LIKE
- 完全一致
ということで、一通りSQL演習をしていたのですが、残念ながら、一部の演習時間が予定より長引き、 集約とJOIN は解説だけで終わりました。残念。。
次回はペース配分を見直して実施されますので、期待です!
まとめ
このコースではDBMSがなぜ必要なのか、というところから掘り下げ、簡単なSQLを使って、データーベースを操作しました。
書籍などでサラッと理解していたところも多くあり、復習と深掘りにはとてもよい効果がありました。
あとは今回、講師も初登壇ということもあり、演習時間が予定よりオーバーし、一部演習できなかったパートもありましたが、次回は見直されることと思います!
そうなると、想定の受講者、何らかの開発に参加したことがある方には、とても学びの多いコースになると思います!
SEカレッジが気になった方はこちらからお気軽にお問合わせ下さい!
SEカレッジの詳細をご覧になりたい方はこちら!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。