O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

データベース技術 9(Database 9)

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Hpm100615
Hpm100615
Carregando em…3
×

Confira estes a seguir

1 de 30 Anúncio
Anúncio

Mais Conteúdo rRelacionado

Mais de Yuka Obu (19)

Anúncio

Mais recentes (20)

データベース技術 9(Database 9)

  1. 1. データベース技術 第9回(2015.11.24) 115年11月24日火曜日
  2. 2. データの追加・更新 •全てのカラムに値を指定して追加 - INSERT INTO テーブル名 VALUES(値1, 値2, ...); •特定のカラムだけに値を指定しデータを追加 - INSERT INTO テーブル名(カラム1, カラム2, ...) VALUES(値1, 値2, ...); •既に格納されているデータを変更する - UPDATE テーブル名 SET カラム名1 = 値1, カラム名2 = 値2, ... WHERE 条件式; 215年11月24日火曜日
  3. 3. データの削除 •テーブルに格納済みのデータを削除する - DELETE FROM テーブル名 WHERE 条件式; - 削除対象のデータは、WHERE句の条件式で指定する - 条件式に一致するデータが複数の場合は、複数の   データが削除される - WHERE句を省略した場合、全てのデータが削除される 315年11月24日火曜日
  4. 4. SQLiteの操作 •データーベスの作成&接続 •テーブルの作成 •データの追加、更新、削除 •データの取得 今日やること 415年11月24日火曜日
  5. 5. データの取得 •基本的書式 - SELECT カラム名1, カラム名2, ... FROM テーブル名; •全てのカラムを取得する場合 - SELECT * FROM テーブル名; •取得するデータの条件を指定する場合 - SELECT カラム名 , ... FROM テーブル名 WHERE 条件式; 515年11月24日火曜日
  6. 6. 条件の作成(1) •比較演算子 比較演算子 意味 例 例の意味 A=B AとBが等しい 価格=200 価格が200と等しい A>B AがBより大きい 価格>200 価格が200より大きい A>=B AはB以上 価格>=200 価格が200以上 A<B AがBより小さい 価格<200 価格が200より小さい A<=B AはB以下 価格<=200 価格が200以下 A<>B AとBは等しくない 価格<>200 価格が200でない 615年11月24日火曜日
  7. 7. 条件の作成(2) •論理演算子 論理演算子 意味 例 例の意味 AND AかつB 商品コード>=200 AND 単価=100 商品コードが200以上で かつ 単価が100 OR AまたはB 商品コード>=200 OR 単価=100 商品コードが200以上か または 単価が100 NOT Aではない NOT 単価=100 単価が100でない 715年11月24日火曜日
  8. 8. Select文実行例 815年11月24日火曜日
  9. 9. いろいろな検索方法 •値の範囲を指定(BETWEEN BY) •空値の検索(IS NULL) •データを並べ替えて表示(ORDER BY) •データをグループ化して合計や平均を計算 (GROUP BY) - 集計関数 915年11月24日火曜日
  10. 10. 値の範囲を指定 •カラムが値1と値2の間に含まれている場合 - SELECT カラム名 , ... FROM テーブル名    WHERE カラム BETWEEN 値1 AND 値2; •カラムが値1と値2の間に含まれていない場合 - SELECT カラム名 , ... FROM テーブル名    WHEREカラム NOT BETWEEN 値1 AND 値2; 1015年11月24日火曜日
  11. 11. 値の範囲を指定 実行例 1115年11月24日火曜日
  12. 12. 空値の検索 •書式 - SELECT カラム名 , ... FROM テーブル名    WHERE カラム IS NULL; •実行例 1215年11月24日火曜日
  13. 13. データを並べ替えて表示 •書式 - SELECT カラム名 , ... FROM テーブル名 ORDER BY カラム名1 [ASC | DESC], カラム名2 [ASC | DESC], ...; - ASC:昇順 - DESC:降順 - ASC、DESCを省略した場合は昇順 1315年11月24日火曜日
  14. 14. データを並べ替えて表示 実行例 1415年11月24日火曜日
  15. 15. データをグループ化(1) •集計関数を使う 集計関数 意味 COUNT(*) 行の数を求める COUNT(列名) 空値を除く行の数を求める COUTN(DISTINCT 列名) 空値と重複行を除く行の数を求める SUM(列名) 各行の合計値を求める AVG(列名) 各行の平均値を求める MAX(列名) 各行の最大値を求める MIN(列名) 各行の最小値を求める 1515年11月24日火曜日
  16. 16. データをグループ化(2) •書式 - SELECT カラム名, ... FROM テーブル名 GROUP BY カラム名, カラム名, ...; •例 - 平均年齢を求める:select avg(old) from user; - addressごとの平均年齢を求める:select address, avg(old) from user group by address; 1615年11月24日火曜日
  17. 17. データをグループ化 実行例 1715年11月24日火曜日
  18. 18. 他テーブルからのデータの追加 •他のテーブルからデータを取得し格納する - INSERT INTO テーブル名 SQL文; - INSERT INTO テーブル名(カラム名1, カラム名2, ...) SQL文; - データを追加するテーブルのカラム数とSQL文で取得 するデータ数は同じである必要がある • 例:INSERT INTO テーブル1 SELECT C1, C2, C3 FROM テーブル2 WHERE …; 1815年11月24日火曜日
  19. 19. ここで... •これまでの流れ - 売上報告書から第三正規形の表を作成 - データベース化を行った(SQLiteの操作) •データベースから売上報告書を作成する    →表の結合(複数の表をつなげること) 1915年11月24日火曜日
  20. 20. 売上報告書 •売上報告書 報告書コード 日付 輸出先コード 輸出先名 商品コード 商品名 単価 個数 1101 3/5 12 アメリカ 101 メロン ¥800 1,100 1101 3/5 12 アメリカ 102 いちご ¥150 300 1102 3/7 23 中国 103 りんご ¥120 1,700 1103 3/8 25 フランス 104 レモン ¥200 500 2015年11月24日火曜日
  21. 21. 第三正規形にまでにした表 •リレーショナルデータベースではこの表を使う 報告書コード 日付 輸出先コード 1101 3/5 12 1102 3/7 23 1103 3/8 25 輸出先コード 輸出先名 12 アメリカ 23 中国 25 フランス 「売上」表 「輸出先」表 商品コード 商品名 単価 101 メロン ¥800 102 いちご ¥150 103 りんご ¥120 104 レモン ¥200 報告書コード 商品コード 個数 1101 101 1,100 1101 102 300 1102 103 1,700 1103 104 500 「商品」表「売上明細」表 参照 参照 参照 2115年11月24日火曜日
  22. 22. 表の結合 •SQL文作成のポイント - 「主キーとそれを参照している外部キーが等しい」と いう条件をつける - 同じカラム名がある場合はテーブル名.カラム名とする •具体例:売上.輸出先コード=輸出先.輸出先コード 報告書コード 日付 輸出先コード 1101 3/5 12 1102 3/7 23 1103 3/8 25 輸出先コード 輸出先名 12 アメリカ 23 中国 25 フランス 「売上」表 「輸出先」表 参照 2215年11月24日火曜日
  23. 23. 表の結合 具体例 SELECT 売上.報告書コード, 日付,     売上.輸出先コード, 輸出先名,     売上明細.商品コード, 商品名, 単価, 個数 FROM 売上, 売上明細, 商品, 輸出先 WHERE 売上.報告書コード = 売上明細. 報告書コード     AND     売上明細.商品コード = 商品.商品コード     AND     輸出先.輸出先コード = 売上.輸出先コード 報告書コード 日付 輸出先コード 1101 3/5 12 輸出先コード 輸出先名 12 アメリカ 「売上」表 「輸出先」表 商品コード 商品名 単価 101 メロン ¥800 報告書コード 商品コード 個数 1101 101 1,100 「商品」表 「売上明細」表 2315年11月24日火曜日
  24. 24. 表の結合 結果 報告書コード 日付 輸出先コード 輸出先名 商品コード 商品名 単価 個数 1101 3/5 12 アメリカ 101 メロン ¥800 1,100 1101 3/5 12 アメリカ 102 いちご ¥150 300 1102 3/7 23 中国 103 りんご ¥120 1,700 1103 3/8 25 フランス 104 レモン ¥200 500 SELECT 売上.報告書コード, 日付,     売上.輸出先コード, 輸出先名,     売上明細.商品コード, 商品名, 単価, 個数 FROM 売上, 売上明細, 商品, 輸出先 WHERE 売上.報告書コード = 売上明細. 報告書コード     AND     売上明細.商品コード = 商品.商品コード     AND     輸出先.輸出先コード = 売上.輸出先コード 2415年11月24日火曜日
  25. 25. いろいろな結合方法(1) •内部結合(inner join) - 値が共通する行だけ選択する結合方法 - 等結合(equi join) • 同じ意味を表す列を介して表を結合すること • 同じ値を持つ行を結合条件として指定する • 売上報告書の例がこれにあたる - 自然結合(natural join) • 重複する列を1つにまとめる結合 2515年11月24日火曜日
  26. 26. いろいろな結合方法(2) •外部結合(outer join) - どちらか一方の表の行全体を残し、もう片方の表にな い行に空値を設定する結合方法 報告書コード 日付 輸出先コード 1101 3/5 12 1102 3/7 1103 3/8 25 輸出先コード 輸出先名 12 アメリカ 23 中国 25 フランス 報告書コード 日付 輸出先コード 輸出先名 1101 3/5 12 アメリカ 1102 3/7 1103 3/8 25 フランス 2615年11月24日火曜日
  27. 27. いろいろな結合方法(2) •外部結合(outer join) - どちらか一方の表の行全体を残し、もう片方の表にな い行に空値を設定する結合方法 - 左外部結合(left outer join) - 右外部結合(right outer join) • 2つの表をSQL文中で左・右どちらかにおいた時、どちらの表の行を全 部残すかによって決まる 2715年11月24日火曜日
  28. 28. いろいろな結合方法(3) 右表左表 左外部結合 右外部結合 2815年11月24日火曜日
  29. 29. Work:小テスト •データを取得するSQL文を考える問題 •manabaから解答(解答者を出席とします) 2915年11月24日火曜日
  30. 30. 参考文献 •SQLite入門 http://www.dbonline.jp/sqlite/ •マンガでわかるデータベース, オーム社 3015年11月24日火曜日

×