20150217 イタンジプログラミング講座テキスト第3回
-
Upload
yusuke-yokozawa -
Category
Engineering
-
view
328 -
download
4
Transcript of 20150217 イタンジプログラミング講座テキスト第3回
![Page 1: 20150217 イタンジプログラミング講座テキスト第3回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/1.jpg)
イタンジ的プログラミング講座#3 2/23
今後の予定 #1 2/9:プログラムの基礎 #2 2/16:現代のプログラム(関数とオブジェクト指向) #3 2/23:データベースとSQL #4 3/2:WEBプログラミングとフレームワーク ※毎朝8時から実施します
![Page 2: 20150217 イタンジプログラミング講座テキスト第3回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/2.jpg)
前回の復習と事前準備
• 動画で学ぶRuby、有名なドットインストール h6p://do;nstall.com/lessons/basic_ruby_v2
• その他有名な学習サービス h6p://bit.ly/1FkUNJo
![Page 3: 20150217 イタンジプログラミング講座テキスト第3回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/3.jpg)
データベースとは?
• データベースは関係性のあるデータが一杯入った入れ物です
• 関係性?例えば物件というデータは管理会社という他のデータと関係性があると思います
• 関係性+データを保存するので正式にはリレーショナルデータベースと呼ばれます
• エクセルのシートがVLOOKUPで関連付けられているイメージを持つと分かりやすいです
h6ps://docs.google.com/spreadsheets/d/16z0oc26OSFJMokHFvsoT2yTVr2ujqC3sA4zCriPA7oA/edit?usp=sharing
![Page 4: 20150217 イタンジプログラミング講座テキスト第3回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/4.jpg)
プログラムとデータベース
• プログラム、特にWEBプログラムは基本的にはデータを扱うプログラムです
• データを作る(CREATE)、読む(READ)、更新する(UPDATE)、削除する(DELETE)これらの操作を行う為にWEBプログラムは存在する事が一般的です
• それぞれの頭文字を取ってCRUD(クルード)と呼ばれるのがWEBプログラムの基本となります
![Page 5: 20150217 イタンジプログラミング講座テキスト第3回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/5.jpg)
データベースを操作する言語SQL
• 毎回言語が変わって大変だと思いますが、データベースはSQLという言語で操作します
• INSERT(作る、CREATE)
• SELECT(読む、READ)
• UPDATE(更新する、UPDATE)
• DELETE(削除する、DELETE)
![Page 6: 20150217 イタンジプログラミング講座テキスト第3回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/6.jpg)
まずはデータベースを作ってみます
CREATE TABLE yokozawa_employees ( id INT, first_name VARCHAR(30), last_name VARCHAR(30), age INT );
![Page 7: 20150217 イタンジプログラミング講座テキスト第3回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/7.jpg)
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回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/8.jpg)
より複雑なデータを取り扱う
・曖昧な絞込条件
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回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/9.jpg)
より複雑なデータを取り扱う
・集計、ソート 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回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/10.jpg)
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回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/11.jpg)
まとめ
• データベースとは関係性を持った表の集合です
• CRUDという動作があり、SQLという言語で操作します
• WEBプログラムの殆ど全てはデータを扱うプログラムです
• SQLそのものはシンプルで覚えやすいです
![Page 12: 20150217 イタンジプログラミング講座テキスト第3回](https://reader036.fdocuments.net/reader036/viewer/2022081816/55a9c3081a28ab9c7d8b46a5/html5/thumbnails/12.jpg)
宿題
• trainingデータベースにid,社員ID,出勤日時,退勤日時を持つyokozawa_;mecardsテーブルを作る
• ;mecardsテーブルに直近3日間の出勤記録をINSERTする • ;mecardsテーブルの一番最近の出勤記録の出勤日時を一時間早くUPDATEする
• ;mecardsテーブルの一番古い出勤記録をDELTEする • employeesテーブルと;mecardsテーブルを結合し、社員id,出勤日数を表示する ※ヒントJOINとcount(*)を利用します