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

Contenu connexe

En vedette

En vedette (6)

Vivir en prime time (en situaciones de discapacidad).
Vivir en prime time (en situaciones de discapacidad).Vivir en prime time (en situaciones de discapacidad).
Vivir en prime time (en situaciones de discapacidad).
 
Organizational culture (indo)
Organizational culture (indo)Organizational culture (indo)
Organizational culture (indo)
 
The Los Angeles Area Fashion Industry Profile
The Los Angeles Area Fashion Industry ProfileThe Los Angeles Area Fashion Industry Profile
The Los Angeles Area Fashion Industry Profile
 
Twitter
TwitterTwitter
Twitter
 
Twitter Lists Made Social with Listly [infographic]
Twitter Lists Made Social with Listly [infographic]Twitter Lists Made Social with Listly [infographic]
Twitter Lists Made Social with Listly [infographic]
 
Irisan-A1 Geometri ruang 2016 Unnes Rombel 2
Irisan-A1 Geometri ruang 2016 Unnes Rombel 2Irisan-A1 Geometri ruang 2016 Unnes Rombel 2
Irisan-A1 Geometri ruang 2016 Unnes Rombel 2
 

Plus de Yuka Obu

企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために
Yuka Obu
 

Plus de Yuka Obu (19)

データベース技術 14(Database 14)
データベース技術 14(Database 14)データベース技術 14(Database 14)
データベース技術 14(Database 14)
 
データベース技術 13(Database 13)
データベース技術 13(Database 13)データベース技術 13(Database 13)
データベース技術 13(Database 13)
 
データベース技術 12(Database 12)
データベース技術 12(Database 12)データベース技術 12(Database 12)
データベース技術 12(Database 12)
 
データベース技術 11(Database 11)
データベース技術  11(Database 11)データベース技術  11(Database 11)
データベース技術 11(Database 11)
 
データベース技術 10(Database 10)
データベース技術 10(Database 10)データベース技術 10(Database 10)
データベース技術 10(Database 10)
 
データベース技術 8(Database_8)
データベース技術 8(Database_8)データベース技術 8(Database_8)
データベース技術 8(Database_8)
 
データベース技術 7(Database 7)
データベース技術 7(Database 7)データベース技術 7(Database 7)
データベース技術 7(Database 7)
 
データベース技術 6(Database_6)
データベース技術 6(Database_6)データベース技術 6(Database_6)
データベース技術 6(Database_6)
 
データベース技術 5(Database_5)
データベース技術 5(Database_5)データベース技術 5(Database_5)
データベース技術 5(Database_5)
 
データベース技術 4(Database_4)
データベース技術 4(Database_4)データベース技術 4(Database_4)
データベース技術 4(Database_4)
 
データベース技術 3(Database_3)
データベース技術 3(Database_3)データベース技術 3(Database_3)
データベース技術 3(Database_3)
 
データベース技術 2(Database_2)
データベース技術 2(Database_2)データベース技術 2(Database_2)
データベース技術 2(Database_2)
 
データベース技術 1(Database_1)
データベース技術 1(Database_1)データベース技術 1(Database_1)
データベース技術 1(Database_1)
 
ソーシャルメディアワークショップ1
ソーシャルメディアワークショップ1ソーシャルメディアワークショップ1
ソーシャルメディアワークショップ1
 
企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために
 
Sns 2
Sns 2Sns 2
Sns 2
 
Twitter in Hitachiohta 3
Twitter in Hitachiohta 3Twitter in Hitachiohta 3
Twitter in Hitachiohta 3
 
Twitter in Hitachiohta 2
Twitter in Hitachiohta 2Twitter in Hitachiohta 2
Twitter in Hitachiohta 2
 
Twitter in Hitachiohta 1
Twitter in Hitachiohta 1Twitter in Hitachiohta 1
Twitter in Hitachiohta 1
 

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