Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第12回Network講座2019

 第12回Network講座2019

More Decks by 北海道科学大学 電子計算機研究部

Other Decks in Education

Transcript

  1. データベースとは ⚫ データを蓄積するシステムのこと ⚫ 検索や閲覧が 超高速で できる ⚫ 一般的には関係データベース (Relational

    Database, RDB)を指す ⚫ 近年では、より柔軟性が高い NoSQL(非リレーショナル)な DBが台頭しつつある 4
  2. 関係データベースとは ⚫ Excelのような2次元の表で構成されており この表をテーブルという ⚫ テーブルの列を Column 行を Row という

    ⚫ 関係データベースを管理するシステムを Relational Database Management System (RDBMS)と呼ぶ ⚫ SQL で操作する 5
  3. 使ってみよう Raspberry Pi にSSH接続し Maria DB にログインする 6 pi@raspberrypi:~ $

    sudo mariadb 1. MariaDB [(none)]> show databases; ログインできたら データベース一覧を確認してみる 2.
  4. 使ってみよう テーブルの内容を表示してみよう 8 5. MariaDB [nwdb]> select * from members;

    自分のデータを追加してみよう 6. MariaDB [nwdb]> insert into members values(番号, ‘名前');
  5. SQL

  6. 1. SELECT(検索) 12 構文 SELECT 列 FROM テーブル [WHERE 条件]

    SELECT id FROM members; 例 SELECT * FROM members WHERE id=1; SELECT * と記述すると 全ての要素を対象とする [ ] の中はオプション
  7. 2. UPDATE(更新) 13 構文 UPDATE テーブル SET 列=値 [WHERE 条件]

    UPDATE members SET name = 'TEACHER’ WHERE id = 0; SELECT * FROM members; 例 ,(カンマ)で区切ることで 複数の条件や値を指定できる
  8. 3. DELETE(削除) 14 構文 DELETE FROM テーブル [WHERE 条件] DELETE

    FROM members WHERE id = 0; SELECT * FROM members; 例 WHERE句で条件を指定しないと テーブルが全て削除される! DELETE FROM members; 全削除!!
  9. 4. INSERT(追加) 15 構文 INSERT INTO テーブル [列1, 列2…] VALUES

    (値1, 値2…) INSERT INTO members (id, name) VALUES(0, 'Kagawa Seigo’); SELECT * FROM members; 例 すべての列に値を入れる場合 [列1, 列2…]は省略可能
  10. その他 16 SELECT id AS '番号' FROM members; AS 句をつけることで別名を定義できる

    SELECT id, name FROM members; ,(カンマ)で区切ることで 複数の条件や値を指定できる 予約語(SELECT, FROMなど)は小文字でも良い
  11. 演習 11-1 1. 前ネットリーダーの名前のみを 表示してください 2. 3桁のidと名前を持つデータを 追加してください(内容は適当でOK) 3. 2で追加したデータの

    name を id を絞り込み条件とするSQLで 表示してください 4. 2で追加したデータと自分のデータの2つの id と name を表示してください 17
  12. WHERE(絞り込み) 19 構文 WHERE 条件式 id が1 以下のデータを表示したい SELECT *

    FROM members WHERE id < 1; 例 JavascriptやPythonのように 演算子を使用することができる!
  13. LIKE 演算子(パターンマッチング) 20 構文 条件式 LIKE パターン文字列 name が K

    から始まるデータを表示したい SELECT * FROM members WHERE name LIKE 'K%'; 例 パターン 意味 % 0文字以上の文字列 _ 1文字
  14. BETWEEN 演算子(範囲) 21 構文 式 BETWEEN 値1 AND 値2 id

    が 1以上3以下のデータを表示したい SELECT * FROM members WHERE id BETWEEN 1 AND 3; 例 値1 以上 値2 以下 値1 <= x <= 値2
  15. IN 演算子(複数) 22 構文 式 IN (値1, 値2, …) id

    が 0, 1, 2, 3 と一致するデータを表示したい SELECT * FROM members WHERE id IN (0, 1, 2, 3); 例 式 NOT IN (値1, 値2, …)
  16. AND OR 演算子(条件の組み合わせ) 23 構文 条件式1 AND 条件式2 id が

    1以上 かつ name が前ネットリーダーのデータを表示したい SELECT * FROM members WHERE id >= 1 AND name = 'Kagawa Seigo'; 例 条件式1 OR 条件式2 データなし!
  17. 演習 11-2 1. id が 1, 3, 5 以外のデータを 表示してください

    2. name に a が含まれるデータを 表示してください 3. id が 1以上5以下 かつ name が i で終わる データを表示してください。 24
  18. ORDER BY(ソート) 26 構文 SELECT 列 FROM テーブル ORDER BY

    列 [ASC/DESC] payment の内容を日付順に降順で表示したい。 SELECT * FROM payment ORDER BY time DESC; 例 ASC:昇順 DESC:降順 省略した場合は昇順
  19. JOIN(結合) 28 構文 SELECT 列 FROM テーブル JOIN テーブル ON

    結合条件 members と account を結合して表示したい SELECT account.id, name, memo FROM account JOIN members ON account.id = members.id; 例 + =
  20. COUNT(カウント) 31 構文 SELECT COUNT(列) FROM テーブル WHERE 条件式 payment

    テーブルで、idが0の出金回数を知りたい。 SELECT COUNT(id) FROM payment WHERE id = 0; 例
  21. SUM(合計) 32 構文 SELECT SUM(列) FROM テーブル payment の cost

    列の合計を算出したい。 SELECT SUM(cost) as "出金額合計" FROM payment; 例 他にも、代表的な関数として MAX, MIN, AVG などがある
  22. GROUP BY(グループ化) 33 構文 式 GROUP BY 列 payment の

    cost 列の合計をidごとに算出したい。 SELECT id, SUM(cost) as "idごとの出金額" FROM payment GROUP BY id; 例
  23. 条件を追加したグループ化 34 構文 SELECT 列 FROM テーブル WHERE グループ化前の条件式 GROUP

    BY 列 HAVING グループ化後の条件式 payment の cost 列で2000円以上の出費の合計を id ごとに算出し 合計が10000円以上のものを表示したい。 SELECT id, SUM(cost) as “idごとの出金額” FROM payment WHERE cost >= 2000 GROUP BY id HAVING SUM(cost) > 10000; 例
  24. 副問合せ 37 構文 SELECT 列 FROM テーブル WHERE (SELECT …)

    payment テーブルに出金履歴がある人の名前を表示したい。 SELECT name FROM members WHERE EXISTS (SELECT * FROM payment WHERE members.id = payment.id); 例 など 検索結果に基づいて表を操作することを副問合せという。