12
イタンジ的プログラミング講座#3 2/23 今後の予定 #1 2/9:プログラムの基礎 #2 2/16:現代のプログラム(関数とオブジェクト指向) #3 2/23:データベースとSQL #4 3/2WEBプログラミングとフレームワーク ※毎朝8時から実施します

20150217 イタンジプログラミング講座テキスト第3回

Embed Size (px)

Citation preview

Page 1: 20150217 イタンジプログラミング講座テキスト第3回

イタンジ的プログラミング講座#3  2/23

今後の予定  #1  2/9:プログラムの基礎  #2  2/16:現代のプログラム(関数とオブジェクト指向)  #3  2/23:データベースとSQL  #4  3/2:WEBプログラミングとフレームワーク    ※毎朝8時から実施します  

Page 2: 20150217 イタンジプログラミング講座テキスト第3回

前回の復習と事前準備

•  動画で学ぶRuby、有名なドットインストール h6p://do;nstall.com/lessons/basic_ruby_v2  

•  その他有名な学習サービス  h6p://bit.ly/1FkUNJo      

Page 3: 20150217 イタンジプログラミング講座テキスト第3回

データベースとは?

•  データベースは関係性のあるデータが一杯入った入れ物です  

•  関係性?例えば物件というデータは管理会社という他のデータと関係性があると思います  

•  関係性+データを保存するので正式にはリレーショナルデータベースと呼ばれます  

•  エクセルのシートがVLOOKUPで関連付けられているイメージを持つと分かりやすいです  

h6ps://docs.google.com/spreadsheets/d/16z0oc26OSFJMokHFvsoT2yTVr2ujqC3sA4zCriPA7oA/edit?usp=sharing  

Page 4: 20150217 イタンジプログラミング講座テキスト第3回

プログラムとデータベース

•  プログラム、特にWEBプログラムは基本的にはデータを扱うプログラムです  

•  データを作る(CREATE)、読む(READ)、更新する(UPDATE)、削除する(DELETE)これらの操作を行う為にWEBプログラムは存在する事が一般的です  

•  それぞれの頭文字を取ってCRUD(クルード)と呼ばれるのがWEBプログラムの基本となります  

Page 5: 20150217 イタンジプログラミング講座テキスト第3回

データベースを操作する言語SQL

•  毎回言語が変わって大変だと思いますが、データベースはSQLという言語で操作します  

•  INSERT(作る、CREATE)  

•  SELECT(読む、READ)  

•  UPDATE(更新する、UPDATE)  

•  DELETE(削除する、DELETE)  

Page 6: 20150217 イタンジプログラミング講座テキスト第3回

まずはデータベースを作ってみます

CREATE  TABLE  yokozawa_employees  (      id  INT,      first_name  VARCHAR(30),      last_name  VARCHAR(30),      age  INT  );  

Page 7: 20150217 イタンジプログラミング講座テキスト第3回

CRUDを操作するSQL

・データを作るINSERT文  INSERT  INTO  yokozawa_employees  VALUES  (1,  "yokozawa",  "yusuke",  31);    ・データを読むSELECT  SELECT  *  FROM  yokozawa_employees  WHERE  id  =  1;    ・データを更新する

UPDATE  yokozawa_employees  SET  age  =  32  WHERE  id  =  1;    ・データを削除する

DELETE  FROM  yokozawa_employees  WHERE  id  =  1;    

Page 8: 20150217 イタンジプログラミング講座テキスト第3回

より複雑なデータを取り扱う

・曖昧な絞込条件

SELECT  *      FROM  customers    WHERE  email  LIKE  '%[email protected]%';    ・複数条件

SELECT  *  FROM  customer_contacts    WHERE  room_id  IS  NOT  NULL        AND  customer_id  =  4256  ;  

Page 9: 20150217 イタンジプログラミング講座テキスト第3回

より複雑なデータを取り扱う

・集計、ソート SELECT  customer_id,  count(*)      FROM  customer_contacts    GROUP  BY  customer_id    ORDER  BY  count(*)  DESC  ;    ・結合 SELECT  c.created_at                ,cs.first_contact_at                ,TO_DAYS(cs.first_contact_at)  -­‐  TO_DAYS(c.created_at)      FROM  customers  as  c    INNER  JOIN  customer_statuses  cs          ON  c.id  =  cs.customer_id  ;  

Page 10: 20150217 イタンジプログラミング講座テキスト第3回

Appendix

•  ディレクターがSQLを学んでよかったこと@nanapi  tech  blog  h6p://nanapi.co.jp/blog/2014/08/15/director-­‐skill-­‐sql/    •  マンガで分かるデータベース h6p://amzn.to/1CCXxOM    •  業務システムのための上流工程入門―要件定義から分析・設計まで h6p://amzn.to/1DARawH    •  かなり古いサイトですがネットリファレンスとしてはとても優秀なサイト h6p://homepage2.nisy.com/sak/w_sak3/doc/sysbrd/sak3sql.htm  

※その他SQLに関する本はイタンジ社内にあるので興味があれば読んで下さい。

Page 11: 20150217 イタンジプログラミング講座テキスト第3回

まとめ

•  データベースとは関係性を持った表の集合です  

•  CRUDという動作があり、SQLという言語で操作します  

•  WEBプログラムの殆ど全てはデータを扱うプログラムです  

•  SQLそのものはシンプルで覚えやすいです  

Page 12: 20150217 イタンジプログラミング講座テキスト第3回

宿題

•  trainingデータベースにid,社員ID,出勤日時,退勤日時を持つyokozawa_;mecardsテーブルを作る

•  ;mecardsテーブルに直近3日間の出勤記録をINSERTする •  ;mecardsテーブルの一番最近の出勤記録の出勤日時を一時間早くUPDATEする

•  ;mecardsテーブルの一番古い出勤記録をDELTEする •  employeesテーブルと;mecardsテーブルを結合し、社員id,出勤日数を表示する    ※ヒントJOINとcount(*)を利用します