5月31日 -SQLの基礎-

1.今日の目標

 データベースを操作するためにSQLについて学ぶ

 

2.結果・感想

 仕事としてプログラミングを扱っていくにあたり、DBの取り扱いについても学ぶ必要があるとのことなので取り急ぎSQLについて学ぶ。同時進行でPHPも学んでいきたい。就職活動が入るため勉強量が少し減るかもしれない。出来るだけ減らさないように努力したい。3日間は遠征のためPCいじれず。スマホにて勉強を進めた。

 SQLの内部結合と外部結合、主問い合わせと副問い合わせについてはおそらく明日以降のprogateのSQL編で学ぶことが出来ると思うので一応学んだが次回吐き出すことにする。学んだ時の参考URLは貼りつけておく。

5月に関しては(書き始めた日にちを元に考えると)18、23、24、27~30日を除いて記事を毎日更新している。「継続は力なり」を信じて今後も学びながら記事更新を続けていきたいと思う。

 

3.学んだことの書き出し

SQLの基礎編1

 SQLはデータベース言語

データベースは表(テーブル)で管理され、縦の列(カラム)と横の列(レコード)がある。テーブルは必要に応じて複数に分けられる。

select カラム名 from テーブル名;

SQLは大文字でも小文字でも問題なし

select カラム名,カラム名 from テーブル名;

,で区切って複数のカラムのデータを取り出せる

select * from テーブル名;

全てのカラムを指定できる

select * from テーブル名 where カラム名 = "値";

テーブルからカラム名の値が指定した値なら取り出す

数値データは""で囲まない(日付データは囲む)

=以外に< <= >= >といった比較演算子が使える

数値データと日付データに比較演算子が使える

where カラム名 like "%値%"

=の代わりにlikeと指定した値を含むものを取り出せる

%は何かの文字列という意味

値%を全貌一致、%値を後方一致という

not カラム名 = 値;で一致しない場合の意

where カラム名 is NULL;カラムが空のデータ

where カラム名 is not NULL;カラムがNULLではないデータ

where 条件1 and 条件2;条件1と2を満たすデータ

where 条件1 or 条件2;条件1か2どちらかを満たすデータ

order by カラム名 並び替える方法(asc昇順 desc降順);で昇順や降順に並び替える。whereの後に書けばどちらの分も有効になる

limit 取得するデータ数;で指定した数データを取得する

order byとlimitではlimitをあとに書く

 

ER図とはDB設計で使う設計手法のこと。

ER図は4つのオブジェクトで構成されている。

IE記法」と「IDEF1X記法」の2種類が最も有名。

4つのオブジェクトは以下の通り

①データのまとまり(エンティティ)

②エンティティ内の属性情報(アトリビュート)

③エンティティ同士の関係を表現する線(リレーション)

④関係性の詳細(カーディナリティ)

 

 ER図の書き方5ステップ

ユースケース図やユースケース記述を作成し、システムシナリオを確認する

②エンティティを洗い出す

③ エンティティをマスタ系(基礎情報となるデータ)とトランザクション(業務に伴い発生した出来事の詳細を記録したデータ)に分ける

④画面設計図や類似システムの画面を元にアトリビュート(属性)を洗い出す

⑤ER図に落とし込む

 

 排他制御とは共有資源(データやファイル)に対して、同時アクセスを制御する仕組み。代表的なものとして楽観ロック(楽観的排他制御)と悲観ロック(悲観的排他制御)がある。

楽観ロックとは同時アクセスが珍しい場合に用いられる。データにはロックせず、Version管理のカラムを作成し、データ取得時のVersionがデータ更新時のVersionと同一であるかを確認することで同時更新によるデータの不整合を防ぐ仕組み。データ更新時に検知するので、作業が長い場合には不向き。やっと終わったと思ったら同時アクセスがあったので最初から、ということがある。

対して悲観ロックとは同時アクセスが頻繁に起こる場合に用いられる。トランザクション開始直後に更新対象のレコードのロックを取得する。ロックされたレコードはトランザクションがコミットまたはロールバックされるまで他のトランザクションから更新されない。バツボタンを押して作業を強制終了してしまったりするとロックの解法が行われず、その場合のロック解除方法を設けるなどの対応策が必要になる。

 

ステートフルとはセッション情報を記憶してページの閲覧などを続けること。ステートレスとはセッション情報を残さずに 続けること。ステートレスのメリットは1度に送信するデータ量が増えてパフォーマンスが落ちる可能性があるが、「リクエストが自己完結型となる」「サーバー資源をすぐに開放できる」「サーバ側のシステムがシンプルになる」というメリットがある。

  

4.明日の課題

 SQLの基礎勉強を進める

 

5.参考URL

Progate | Progate - Learn to code, learn to be creative.

いつもお世話になっています。分かりやすさと情報量がすごい。

若手プログラマー必読!5分で理解できるER図の書き方5ステップ

 図説してくれているので理解しやすい

副問合せを使った複雑な条件指定:Webブラウザで気軽に学ぶ実践SQL講座(11) - @IT

【新人教育 資料】第9章 SQLへの道 〜結合編〜 - Qiita

この新人教育は初学者のDB関連の勉強にはとても参考になると思うありがたい記事。

排他制御(楽観ロック・悲観ロック)の基礎 - Qiita

こちらも図説あり。やはり文章だけではなく図があると理解が捗る。将来誰かに教えるようになるために説明図の作り方は勉強しておきたい。

ステートレスとは - Qiita

ステートフルとステートレスについて説明してある。店員と客の例えが分かりやすい。

 

6.今後やりたいこと・高めたいスキル・優先順位

SQLPHP、説明図作成、30DAYSトライアル、JQuory、Wordpressはてなブログの機能、アルゴリズムSEO、PerfectPixel、線形代数(詳細ではなく全体の流れ)