こんにちは。もんしょー(@sima199407)です。
という疑問があるかと思います。
これについてもう少し詳しく解説していきます!
動画でも解説してます
キーワードから申しますと、「関係性」です。
DB(データベース)ってどういう風に使うのか?
MySQLって結局なんなの?
っていう意見に解決、回答できるかなと思います。
初心者向けに丁寧に説明していきますが、多少覚えておくべき専門用語が出ます。
基礎部分ですので、ご了承ください。
MySQLってなに?
MySQLって聞いてどんなことを思い浮かべますか?
[box03 title="みなさんのイメージ"]
「DBはかろうじて聞いたことあるな」
「なんかユーザの情報を入れておく場所でしょ」
[/box03]
とか、そういった感じが多いかなと思います。
MySQLは無料で使える?
MySQLっていうのは、まずオープンソースのDBです。
オープンソースなんで無料で一応使えるモノになります。
さらにDBのシェアのランキングを見てみるとオラクルDBっていうのが一応トップにあります。
それに次ぐDBです。トップクラスのDBと思っても過言ではないです。
企業の開発はもちろん、個人の開発でも使われ、ブログの運営とかでも使われることあると思います。
レンタルサーバ借りるとなるとMySQLが使えますよって書いてあるところ多いと思います。
MySQL以外のDBって何?
MySQLは大きめの開発でも使えますが、もうちょっと小さいのでもいいよって人だったら、「PostgresDB(ポスグレ)」とかMicrosoftが出してる「Access」ってやつがあります。
基本的には全部同じような操作なのでMySQLで覚えておくのがいいんじゃないかなと思います。
用途によって変える?
大きいもの小さいものって考えもあるんですけども結局大きくなっていくって考えたら最初からMySQLを入れた方が僕はおすすめかなと思います。
個人の開発だったら自分でできると思いますし、企業だったら小さい環境でやるってことは、ちっちゃいサイトだったらまだしも、多分、MySQLとか、オラクルと契約してると思います。
結局、これらのデータベースってなんなの?
その中でMySQLとかオラクルとか色々出てきたんですけども、それをまとめて「RDBMS」っていう言葉があります。
正式名称は「リレーショナルデータベースマネジメントシステム」の頭文字を取ったものです。
これはMySQLをはじめとしたオラクルとかポスグレとかMicrosoftが出しているSQL Serverとか色々まとめた総称の名前です。
リレーショナルっていう言葉は日本語で言うと「関係性」です。
これだけだとちょっと分かりにくいかなと思いますので、少しMySQLの中身の話を交えて話していきます。
DBの仕組みとはこういうことだ
DBの中っていうのは「テーブル」と「カラム」ていうものがあります。
MySQLの中の見た目はエクセルに近いかなと思います。縦横あるような四角いマスがあるようなイメージです。
テーブルとはその全体の表のことを意味します。
エクセルでいうと、カラムっていうのは1つ1つの行の名前です。
エクセルで言えばABCDって書かれてるやつです。あれがカラムです。
EX) 学校で考えてみよう
例えば、学校を想像して頂ければと思うんですけども今年入学した時の新入生。
そのために新入生テーブルを今回作るとします。
その中には
・学生番号
・名前
・学年
・クラス
というカラムを作っておきました。
さらにそこにですね、
図書館で貸し出した本のテーブルを作りましょう。
そこのカラムに何が入るかというと
・本の名前
・借りる期限
・借りた生徒の学籍番号
のデータです。
図書委員が借りた人の名前を調べるには?
もし、あなたが図書委員だとして、なかなか本を返却してくれない人がいる。。
その人の名前を知りたい。
けど、図書館のテーブルのものしか見れない。。
ヒントとしては、借りた生徒の学籍番号ってものしかないわけなんですけども、それだけでも名前っていうものは調べられます。
調べ方
どうやって調べるかっていうと、新入生のテーブルの「学籍番号」と図書館で貸し出した本テーブルの「借りた生徒の学籍番号」が合致するのがあれば、その人の名前を知ることができます。
そこの関係性があるわけですね。
RDBMSってのは芋づる式
そのためカラムに関係性があるものがあれば芋づる式にデータを引っ張ってこれるのがRDBMSのメリットです。
つまり、
テーブル同士でこの情報が欲しいからとか、部署のIDだけ書いてあって、部署テーブルっていうモノが別にあればそこからデータ引っ張ってきて、・・・
ということができてしまうんです。
言葉だけではわかりづらいと思いますが、使ってるうちに「あっそういうことね」って腑に落ちると思います。
関係性って言葉だけでも覚えて頂ければ幸いです。
どんな時に使うの?
DBは知っての通りデータを保存しておく場所です。
Webサイトであればユーザの情報を保存したりとかSNSだったら投稿されたコンテンツですね、あとは通販サイトだったら商品情報とか、そういったモノを保存しておくわけです。
基本的にWebサービスを作るってことであれば大なり小なりDBを使うことになります。
そんな感じでDBっていうのはいつでもどんな場面でも使われます。
どんな勉強をするべきなのか
必ずと言ってもいいほど使われ、Webサービスを作るうえで避けては通れないってところですね。
ただ、やることっていうのは明快で基本的に4つのことを覚えておきましょう。
1つ目「追加」
2つ目「取り出し」
3つ目「編集」
4つ目「削除」
です。
この4つを覚えておけばとりあえず大丈夫です。
専門用語で覚えると?
もうちょっと詳しく解説すると、DB・SQLを書く時に使う
追加→「insert」
取り出し→「select」
編集→「update」
削除→「delete」
ですね。
この4つ覚えておきましょう。
さらにこれを覚えると最高
さらに余裕のある人はあと3つ覚えてください。
テーブルをつなげる→「join」
条件をつける→「where」
1つにまとめる→「group by」
です。順に解説します。
テーブル同士をつなげる、関係性のあるテーブル通しを繋げるのを「join」って言います。
「条件で絞る」例えば「学籍番号が10番以降の人」とか「学年が2年生から3年生の人」など条件で絞るのを「where」って言います。
グループでまとめることもできて、例えば3年生なら「3年生でまとめます」、本だったら「フィクションの本でまとめます」みたいな感じです。
データをまとめる時に「group by」っていうのを使います。
基本的にさっきあげた基本の4つ+3つの合計7つを学んでおくと割とSQL、MySQL使う上でできることは多いんじゃないかなと思います。
DBだけの求人ってあるのかどうか
SQL簡単に使えるように見えるんですけど意外と、負荷をかけにくい設計にしたりとかデータの取得スピードを上げたりだとかそういう調整をするっていうのは奥深いモノでもあるんですね。
そのためDB専門で扱うDBエンジニアって職種もあるわけなんですよ。
求人はサーバサイドとかフロントに比べるとそこまで多くはないんですけども大規模なWebサービスを開発している会社とかだったら結構募集してたりします。
DBの知識に加えて、そういう人はインフラの知識が求められたりとかサーバサイドの知識をもう少し求められるかもしれないです。
そんな感じでDBのエンジニアっていうのもいますよってことですね。
実務1〜2年あると見つかる可能性は高いですね。
DB+サーバーサイド系がいい
サーバサイドの人でも十分MySQLの知識っていうのは必要になってきます。
おすすめとしてはサーバサイドの知識を付けて、PHPとかPythonとか動かしながらMySQLを同時に動かすっていうところが多くなってくると思うので、ここで狙っていくのがいいんじゃないかなと思います。
エンジニアだったらフロントも関係なくやった方がいいかなと思う言語になりますのでSQLはおすすめになります。
まとめ
1つ目、MySQLは使い勝手の良いデータベース!
MySQLは個人でも大規模でも使えます。商用利用の場合は、ライセンスが必要です。
基本的に個人の開発だったら無料で使えます。
わりと使いやすいSQLだと思います。
2つ目、情報の紐づけがカギになる!
紐づけ、関係性ですね。
関係性のある情報を芋づる式に取ってこれるので、是非ここを意識して勉強してみてください。
3つ目、どのエンジニアも学んでおくべき!
DB専門のエンジニアだけでなくインフラ・サーバサイド・フロントの人もSQLを学んでおいたほうが役に立つんじゃないでしょうか。
今回のまとめです。
・MySQLは使い勝手の良いデータベース
・情報の紐づけがカギになる
・どのエンジニアも学んでおくべき