データベース技術 10(database 10)

17
データベース技術 10回(2015.12.11 15127日月曜日

Upload: yuka-obu

Post on 14-Apr-2017

245 views

Category:

Education


1 download

TRANSCRIPT

Page 1: データベース技術 10(Database 10)

データベース技術第10回(2015.12.1)

115年12月7日月曜日

Page 2: データベース技術 10(Database 10)

SQLiteの操作•データーベスの作成&接続

•テーブルの作成

•データの追加、更新、削除

•データの取得

create table、alter table、drop table

insert、update、delete

select文、条件文の作り方between by, is null, order by, group by集計関数

215年12月7日月曜日

Page 3: データベース技術 10(Database 10)

表の結合•SQL文作成のポイント

-「主キーとそれを参照している外部キーが等しい」という条件をつける

-同じカラム名がある場合はテーブル名.カラム名とする

•具体例:売上.輸出先コード=輸出先.輸出先コード

報告書コード 日付 輸出先コード

1101 3/5 121102 3/7 231103 3/8 25

輸出先コード 輸出先名

12 アメリカ23 中国25 フランス

「売上」表 「輸出先」表

参照

315年12月7日月曜日

Page 4: データベース技術 10(Database 10)

内部結合(inner join)•値が共通する行だけ選択する結合方法

-等結合(equi join)• 同じ意味を表す列を介して表を結合すること

• 同じ値を持つ行を結合条件として指定する• 売上報告書の例がこれにあたる

-自然結合(natural join)• 重複する列を1つにまとめる結合

415年12月7日月曜日

Page 5: データベース技術 10(Database 10)

外部結合(outer join)•どちらか一方の表の行全体を残し、もう片方の表にない行に空値を設定する結合方法-左外部結合(left outer join)

-右外部結合(right outer join)• 2つの表をSQL文中で左・右どちらかにおいた時、どちらの表の行を全部残すかによって決まる

515年12月7日月曜日

Page 6: データベース技術 10(Database 10)

左外部結合と右外部結合右表左表

左外部結合 右外部結合

615年12月7日月曜日

Page 7: データベース技術 10(Database 10)

ビュー表の作成•ビュー表(View table)

-ユーザーから見たときのみに存在する仮想的な表

-実表(Base table):実際のデータが入力される表

•ビュー表 作成の書式- CREATE VIEW ビュー名 AS SELECT文;

•作成したビューからデータの取得- SELECT * FROM ビュー名;

715年12月7日月曜日

Page 8: データベース技術 10(Database 10)

ビュー表 実行例

- .tablesを実行すると実表と合わせてビューも表示される

-ビューの削除:DROP VIEW ビュー名;

815年12月7日月曜日

Page 9: データベース技術 10(Database 10)

ビュー表の使用方法の例•複数の表を結合した結果をビューとして定義しておく-ビュー表に対して検索を行う-ビュー表をユーザに提示する

報告書コード 日付 輸出先名 商品名 単価 個数

1101 3/5 アメリカ メロン ¥800 1,1001101 3/5 アメリカ いちご ¥150 3001102 3/7 中国 りんご ¥120 1,7001103 3/8 フランス レモン ¥200 500

915年12月7日月曜日

Page 10: データベース技術 10(Database 10)

データベースとプログラム•プログラムとデータの独立性

- SQLでデータベース処理を行うことにより、プログラムとデータを分けて考えることが可能

-生産性の向上につながる

データベース

DBMSプログラム SQL

1015年12月7日月曜日

Page 11: データベース技術 10(Database 10)

クライアントとサーバ•Webの場合

-アプリケーションサーバがDBのデータを利用

データベース

データベースサーバ

Webサービス Webアプリ

アプリケーションサーバ

Webサーバ

Webサイトの見た目を作るクライアントとの窓口

計算をする データを管理する役割り:

ユーザ

クライアント

1115年12月7日月曜日

Page 12: データベース技術 10(Database 10)

プログラムの例(Ruby)require "sqlite3"

db = SQLite3::Database.new("database.db")

sql = "create table Item (商品コード integer primary key, 商品名 text, 価格 int)"db.execute(sql)puts "Itemテーブルを作成しました。"

db.transaction do sql = "insert into Item values (?, ?, ?)" db.execute(sql, 101, "メロン", 800) db.execute(sql, 102, "いちご", 150) db.execute(sql, 103, "リンゴ", 120) db.execute(sql, 104, "レモン", 200)end

db.execute2("select * from Item") do | row | puts row.join("\t")end

db.close

SQL文を作成

SQL文を作成

SQL文を実行

具体的なデータを入力しSQL文を実行

SQL文を実行

結果を表示

データベースに接続

1215年12月7日月曜日

Page 13: データベース技術 10(Database 10)

プログラム内部での表の扱い•カーソル(行の位置を表す概念)を使う

-抽出結果として得た表に、1行ずつアクセスする

-繰り返し文を使って1行ずつカーソルを進める

-フェッチ:カーソルで1行ずつデータを取り出すこと

db.execute2("select * from Item") do | row | puts row.join("\t")end

商品コード 商品名 単価101 メロン ¥800102 いちご ¥150103 りんご ¥120104 レモン ¥200

カーソル繰り返し文

1315年12月7日月曜日

Page 14: データベース技術 10(Database 10)

プログラムを作ってみよう•テキストエディタでソースコードを入力

•文字コード:utf-8

•ファイル名「database.rb」で保存

1415年12月7日月曜日

Page 15: データベース技術 10(Database 10)

ソースコードrequire "sqlite3"

db = SQLite3::Database.new("database.db")

sql = "create table Item (商品コード integer primary key, 商品名 text, 価格 int)"db.execute(sql)puts "Itemテーブルを作成しました。"

db.transaction do sql = "insert into Item values (?, ?, ?)" db.execute(sql, 101, "メロン", 800) db.execute(sql, 102, "いちご", 150) db.execute(sql, 103, "リンゴ", 120) db.execute(sql, 104, "レモン", 200)end

db.execute2("select * from Item") do | row | puts row.join("\t")end

db.close1515年12月7日月曜日

Page 16: データベース技術 10(Database 10)

プログラムを動かす•コマンドプロンプトを使う

-「ruby database.rb」と入力 -> エンターキーで実行

•プログラムを動かせるWebサービスを使う- paiza.IO

• C、C++、Java、PHP、MySQLなど様々なコードの実行が可能

• アカウントを作成するとソースコードの保存、公開などができる

1615年12月7日月曜日

Page 17: データベース技術 10(Database 10)

paiza.IOでのプログラム実行-言語からRubyを選択し、ソースコードを入力、実行

Rubyを選択

ソースコードを入力

実行

実行結果

1715年12月7日月曜日