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

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

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
MySQL_Update_20191010
MySQL_Update_20191010
Carregando em…3
×

Confira estes a seguir

1 de 17 Anúncio

Mais Conteúdo rRelacionado

Mais de Yuka Obu (14)

Anúncio

Mais recentes (20)

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

  1. 1. データベース技術 第10回(2015.12.1) 115年12月7日月曜日
  2. 2. SQLiteの操作 •データーベスの作成&接続 •テーブルの作成 •データの追加、更新、削除 •データの取得 create table、alter table、drop table insert、update、delete select文、条件文の作り方 between by, is null, order by, group by 集計関数 215年12月7日月曜日
  3. 3. 表の結合 •SQL文作成のポイント - 「主キーとそれを参照している外部キーが等しい」と いう条件をつける - 同じカラム名がある場合はテーブル名.カラム名とする •具体例:売上.輸出先コード=輸出先.輸出先コード 報告書コード 日付 輸出先コード 1101 3/5 12 1102 3/7 23 1103 3/8 25 輸出先コード 輸出先名 12 アメリカ 23 中国 25 フランス 「売上」表 「輸出先」表 参照 315年12月7日月曜日
  4. 4. 内部結合(inner join) •値が共通する行だけ選択する結合方法 - 等結合(equi join) • 同じ意味を表す列を介して表を結合すること • 同じ値を持つ行を結合条件として指定する • 売上報告書の例がこれにあたる - 自然結合(natural join) • 重複する列を1つにまとめる結合 415年12月7日月曜日
  5. 5. 外部結合(outer join) •どちらか一方の表の行全体を残し、もう片方の 表にない行に空値を設定する結合方法 - 左外部結合(left outer join) - 右外部結合(right outer join) • 2つの表をSQL文中で左・右どちらかにおいた時、どちらの表の行を全 部残すかによって決まる 515年12月7日月曜日
  6. 6. 左外部結合と右外部結合 右表左表 左外部結合 右外部結合 615年12月7日月曜日
  7. 7. ビュー表の作成 •ビュー表(View table) - ユーザーから見たときのみに存在する仮想的な表 - 実表(Base table):実際のデータが入力される表 •ビュー表 作成の書式 - CREATE VIEW ビュー名 AS SELECT文; •作成したビューからデータの取得 - SELECT * FROM ビュー名; 715年12月7日月曜日
  8. 8. ビュー表 実行例 - .tablesを実行すると実表と合わせてビューも表示される - ビューの削除:DROP VIEW ビュー名; 815年12月7日月曜日
  9. 9. ビュー表の使用方法の例 •複数の表を結合した結果をビューとして定義し ておく - ビュー表に対して検索を行う - ビュー表をユーザに提示する 報告書コード 日付 輸出先名 商品名 単価 個数 1101 3/5 アメリカ メロン ¥800 1,100 1101 3/5 アメリカ いちご ¥150 300 1102 3/7 中国 りんご ¥120 1,700 1103 3/8 フランス レモン ¥200 500 915年12月7日月曜日
  10. 10. データベースとプログラム •プログラムとデータの独立性 - SQLでデータベース処理を行うことにより、プログラ ムとデータを分けて考えることが可能 - 生産性の向上につながる データ ベース DBMSプログラム SQL 1015年12月7日月曜日
  11. 11. クライアントとサーバ •Webの場合 - アプリケーションサーバがDBのデータを利用 データ ベース データベースサーバ Webサービス Webアプリ アプリケーション サーバ Webサーバ Webサイトの見た目を作る クライアントとの窓口 計算をする データを管理する 役割り: ユーザ クライアント 1115年12月7日月曜日
  12. 12. プログラムの例(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日月曜日
  13. 13. プログラム内部での表の扱い •カーソル(行の位置を表す概念)を使う - 抽出結果として得た表に、1行ずつアクセスする - 繰り返し文を使って1行ずつカーソルを進める - フェッチ:カーソルで1行ずつデータを取り出すこと db.execute2("select * from Item") do | row | puts row.join("t") end 商品コード 商品名 単価 101 メロン ¥800 102 いちご ¥150 103 りんご ¥120 104 レモン ¥200 カーソル 繰り返し文 1315年12月7日月曜日
  14. 14. プログラムを作ってみよう •テキストエディタでソースコードを入力 •文字コード:utf-8 •ファイル名「database.rb」で保存 1415年12月7日月曜日
  15. 15. ソースコード 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 1515年12月7日月曜日
  16. 16. プログラムを動かす •コマンドプロンプトを使う - 「ruby database.rb」と入力 -> エンターキーで実行 •プログラムを動かせるWebサービスを使う - paiza.IO • C、C++、Java、PHP、MySQLなど様々なコードの実行が可能 • アカウントを作成するとソースコードの保存、公開などができる 1615年12月7日月曜日
  17. 17. paiza.IOでのプログラム実行 - 言語からRubyを選択し、ソースコードを入力、実行 Rubyを選択 ソースコード を入力 実行 実行結果 1715年12月7日月曜日

×