Microsoft PowerPoint - データベース理論.pptx

Similar documents
Microsoft PowerPoint - myadmin.ppt

Microsoft PowerPoint - db03-5.ppt

PowerPoint Presentation

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

hands_on_4.PDF

Microsoft PowerPoint - 講義補助資料2017.pptx

プレポスト【問題】

ビジネスサーバ設定マニュアル_Standard応用編

Si 知識情報処理

Microsoft PowerPoint pptx

SQLite データベース IS04 組み込み 1

クイックマニュアル(利用者編)

PowerPoint プレゼンテーション

Microsoft Word - tutorial3-dbreverse.docx

PowerPoint プレゼンテーション

データベース 【1:データベースシステムとは】

10th Developer Camp - B5

スクールCOBOL2002

ご存知ですか? データ転送

<8B9E93738CF092CA904D94CC814090BF8B818F B D836A B B B816A2E786C73>

Microsoft PowerPoint - T4OOマニュアル_admin管理者_ pptx

関係データベース

データベースアクセス

eYACHO 管理者ガイド

Webシステム授業資料

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第7版   None

アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2

第 12 講データ管理 1 2 / 14 ページ 12-1 データベースソフトの概要 データベースとは集められた様々なデータをテーマや目的に沿って分類 整理したものです データベースソフトでは データベースを作成し その管理を行います 何種類ものファイルや帳簿で管理していたデータをコンピュータ上で互

PowerPoint プレゼンテーション

目次 ログイン ログイン お知らせ画面... 3 チェック結果の表示 / 新規作成 / 更新 / データ出力 チェック結果一覧の表示 新規作成 チェック結果の検索 チェック結果の詳

<4D F736F F F696E74202D20352D335F8D5C90AC CF909482CC90B690AC82C695D28F572E707074>

. 起動 目次 P.. ログイン 画面 P.. メニュー 画面 P.. POS 開示 _ 指定店舗 アイテム別 期間合計 画面 ( レポート A) P. 5. POS 開示 _ 店舗別 指定アイテム 期間合計 画面 ( レポート B) ----

Microsoft Word - CBESNet-It連携ガイドver8.1.doc

ユーザーのページ

データベース工学 2011年度資料

スライド 1

概要 ABAP 開発者が SAP システム内の SAP ソースまたは SAP ディクショナリーオブジェクトを変更しようとすると 2 つのアクセスキーを入力するよう求められます 1 特定のユーザーを開発者として登録する開発者キー このキーは一度だけ入力します 2 SAP ソースまたは SAP ディクシ

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB

VB実用Ⅲ⑩ フリーデータベースⅡ

Webシステム授業資料

の手引き Chapter 1 manaba へようこそ Chapter 2 ログイン方法 マイページについて Chapter 3 リマインダ設定 Chapter 4 コース登録 ( 自己登録 ) Chapter 5 manaba の機能紹介 Chapter 6 respon アプリ Chapter

ホームページ公開方法

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

推奨 web ブラウザについて スマートフォンやタブレットには様々な web ブラウザがあります Android 端末には 標準ブラウザ ios 端末には Safari どちらでも使用できる Y ブラウザ FireFox Google Chrome などの web ブラウザがあります ビット web

POWER EGG2.0 Ver2.6 ユーザーズマニュアル ファイル管理編

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

目次 専用アプリケーションをインストールする 1 アカウントを設定する 5 Windows クライアントから利用できる機能の紹介 7 1ファイル フォルダのアップロードとダウンロード 8 2ファイル更新履歴の管理 10 3 操作履歴の確認 12 4アクセスチケットの生成 ( フォルダ / ファイルの

情報リテラシー 第1回

Microsoft Word - 206MSAccess2010

ファイルのアップロード. 上メニューから [ アップロード ] を選択します. [ アップロード ] 画面に移行しますので, 以下の手順で操作を行います アップロードするファイルを選択し, 指定場所へ [ ドラッグ & ドロップ ] します ドラッグ & ドロップ ファイルがリストアップされたことを

Microsoft Word - macマニュアル【 】.doc

Microsoft PowerPoint - T4OOマニュアル_初期設定用_ pptx

◎phpapi.indd

AppsME(kintone)_セットアップガイド

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第8版  

PowerPoint プレゼンテーション

目次 1. ログイン ログアウト デスクトップ ( 例 :Word Excel 起動中 ) Dock( 例 :Word Excel 起動中 ) Finder ウィンドウ メニューバー ( 例 :Word 起動中 )...

目次. WEB メールへのログイン.... メール送信手順.... メール受信手順.... アドレス帳の操作手順.... フォルダーの操作手順 メール発信者登録 署名登録手順 基本的な設定 参考情報... 8

SISJIN

PowerPoint プレゼンテーション

Microsoft Word - BRマニュアル教員用new.docx

目次 1. ログイン P2 2. 送受信管理 P メールの新規送信 P 未送信 ( 保存 ) メールの編集 削除 P 送信済みメールの状況確認 P6 3. メンバー ( 送信先 ) 管理 P メンバーの新規登録 編集 P メンバーの削除 P

V-CUBE Gate 管理者用マニュアル

ホームページにパスワード認証を設定します 会員限定のページなどに利用できます 設定の手順 を設定するには 以下の手順で行います ユーザ登録 を設定したページにアクセスするためのユーザを登録します の設定 を設定するページ アクセスを許可するユーザを選択し 設定します 設定完了 を設定したページにアク

Microsoft Word Webmail

改訂履歴 日付バージョン記載ページ改訂内容 V2.1 - 初版を発行しました V3.1 P5 ドキュメントラベルが新規追加された事を追記 P7 P8 新しくなったラベルのツリー表示説明を追記 新しくなったラベルの作成 削除操作を追記 P9 ラベルのグループ

Microsoft Word - CBSNet-It連携ガイドver8.2.doc

Transcription:

Forml Method Group きょうのポイント データベース理論入門 November 3, 2008 担当 : 飯島淳一 データベースと何か 実体 - 関連モデル ( 問題 ) リレーショナルデータモデル ( 問題と小テスト ) 関係代数 ( 小テスト ) 参考増永良文 リレーショナルデータベース入門 サイエンス社 2002. IS-FMG, T,I,T, All Rights Reserved, 2008 見える化 (visuliztion) 情報システム データベースとは何か 意思決定 もの と こと 情報 早く 速く 写像 鏡像として現実世界を把握 APL プログラム エンドユーザ DBMS 行為 ( ビジネスにおける活動 ) ビジネス DB OS Mieruk is identifying problems nd bringing them to the foreground. http://www.toyot.co.jp/en/news/06/00.html 3 IS-FMG, T,I,T, All Rights Reserved, 2008 Forml Method Group

データと情報 データベースとは 関心 評価基準 APL プログラム エンドユーザ データ 処理 ( 選択 加工 ) 情報 DBMS OS DB 意味付与 ファイルと DB の違いファイル :APL に付随したデータ群データベース :APL と切り離したデータ群 データの一貫性アクセス権限機密保護 データベースの歴史 963 年 IDS(Integrted Dt Store) 960 年代 CODASYL(the Conference on Dt Systems Lnguge) の活動 97 年ネットワークデータモデルの提案 970 年代 E,F,Coddによるリレーショナルデータモデルの提案 980 年代 RDBシステムの実用化階層データモデルの提案 990 年代オブジェクト指向 DBシステム データモデル 概念モデル 実世界のデータ構造と制約の記述 976 年にPeter Chenによって提案された実体 - 関連 (ER) モデルが代表的 対象を実体 関連 属性で記述 論理モデル 管理可能な表現 データモデル 実世界 リレーショナル ( 関係 ) 型 ネットワーク型 ヒエラルキカル ( 階層 ) 型 オブジェクト指向型 概念モデル 論理モデル

Forml Method Group 実体 - 関連モデル 実体ー関連モデル 教員名職種 教員 学生 M 給与 担当 履修 N N 科目名 科目 単位数 学籍番号学生名住所得点 実世界を実体 (entity) と実体間の関連 (reltionship) として認識することによって得られるモデル 学生のA 君 という具体的な実体ではなく 学生 という実体型 (entity type) として また A 君が情報システム基礎実験という授業を申告している という具体的な関連ではなく 申告する という関連型 (reltion type) として認識各々はそれぞれを特徴付ける属性 (ttribute) を持つ 属性の中でその実体を唯一に識別できる属性集合で極小なものを主キーと呼ぶ IS-FMG, T,I,T, All Rights Reserved, 2008 実体 - 関連 (ER) モデルの例 問題 教員名 職種 給与 教員学生 M 担当履修 学籍番号学生名住所 身の回りの実世界から 諸君が関心を持っている対象に注目することにより 2 つの実体 ( 各実体の属性は 3 つ程度 ) とその間の一つの関連 ( 関連の属性は つ程度 ) を抽出し 実体 - 関連モデルとして表現せよ 得点 多重度 :( 一対一 ) :N( 一対多 ) N:( 多対一 ) M:N( 多対多 N 科目 N 科目名 単位数

Forml Method Group リレーション リレーショナルデータモデル 商品 納品 商品番号 商品名 定価 商品番号 顧客番号 納品数量 G テレビ 98,000 G C 3 G2 洗濯機 59,800 G C2 0 G3 テレビ 98,000 G2 C2 5 G2 C3 0 G3 C3 2 顧客 顧客番号 顧客名 C A 商店 C2 Bマート C3 C 社 IS-FMG, T,I,T, All Rights Reserved, 2008 ドメイン (domin): 定義域 集合 一般にD i で表記直積 (Crtesin Product):D=D D n リレーション ( 関係 )R:D,,D n 上の関係とは 直積 D D n の部分集合 ( 以降では有限集合について考える ) リレーションRのタプル (tuple):rの要素リレーションrの濃度 (crdinlity):rの要素数リレーションrの次数 (degree):rが定義されている直積を構成するドメイン数 次数 単項 次数 n n 項リレーションはテーブル表示が可能 問題 2 属性名とリレーション名 D ={,2}, D 2 ={,b,c}, D 3 =D とするとき この上の3 項関係 Rの例を作れ Rの濃度は何か? 代表的なタプルをひとつあげよ? データの解釈はリレーションの設計時に決定している 各列 ( カラム ) のデータの属性を属性名と呼び リレーションにも名前 ( リレーション名 ) をつける たとえば D ={x xは人名 },D 2 =INTEGERとし R={( 太郎,25),( 一郎,30),( 花子,26),( 桃子,22)} とするとき Rの第 カラムの属性名は 名前 であり 第 2カラムの属性名は 年令 であると考えることができる また このリレーション名を 友人 と考えることができる リレーションR D D n の属性名をA,,A n とするとき dom(a i )=D i で表す

リレーションスキーマとインスタンス 具体的なテーブルの中身としてのタプルは 変わりうるが リレーション名や属性名は不変と考えられる そこで これらをまとめて リレーションスキーマ (reltion schem) と呼び ある時点での具体的なテーブルをインスタンスと呼ぶ たとえば 友人 ( 名前, 年齢 ) は2つの属性を持つリレーションスキーマであり 先のRはそのインスタンスである ER モデルから RDB スキーマへの変換 実体型の変換 E(K,A,,A m ) を実体型とする ただし Kは主キーである このとき EはリレーションスキーマR E (K,A,,A m ) に変換される 関連型の変換 対 関連型 対多関連型 多対 関連型 多対多関連型 主キー 例 : 主キー 候補キー (cndidte key): リレーションのタプルを識別できる属性 (unique identifier)) の組の中で 極小 (miniml) となるもの 候補キーの中で 空値 (null vlue) を取らないものをひとつ選んで それを主キー (primry key) と呼ぶ リレーションスキーマでは 下線を引いて主キーを表す : R(,A k,,a k2,,a km, ) 例 : リレーションスキーマと主キー社員 ( 社員番号, 社員名, 給与, 所属, 健保番号 ) 社員 社員番号社員名給与所属健保番号 社員 社員番号 社員名 給与 所属 健保番号 0650 鈴木一郎 50 K55 80596 508 浜崎アユ 40 K4 8403 023 宇田ひかる 60 K4 8020 2034 鈴木一郎 40 K55 8998 社員名は候補キー? 社員番号は候補キー? 0650 鈴木一郎 50 K55 80596 508 浜崎アユ 40 K4 8403 023 宇田ひかる 60 K4 8020 2034 鈴木一郎 40 K55 8998 社員 ( 社員番号, 社員名, 給与, 所属, 健保番号 )

外部キー 対 関連型 社員 ( 社員番号 社員名 給与 所属 ) と部門 ( 部門番号 部門名 部門長 ) を考えるとき 社員の所属は 必ず部門の主キーである部門番号の値として出現するし 部門の部門長は必ず社員の主キーである社員番号の値として出現する このとき 所属は部門の 部門長は社員の外部キーであると呼ぶ 形式的には 2つのリレーションスキーマ R(A,,A m ), S(B,,B n ) において A i がSの外部キーであるとは R,Sを各々 R,Sの任意のインスタンス tをrの任意のタプルとするとき Sのあるタプルu が存在して u[b ]=t[a i ] となっていることである R(C ) を 2 つの実体型 E L (K,A,,A m ) と E R (H,B,,B n ) の 対 関連型とする このとき R はリレーションスキーマ R R (K,H,C ) あるいは R R (K,H,C ) に変換される このとき K あるいは H は各々 E L,E R の主キーと外部キーとなる E L E R R K A A 2 C H B R R K H C R R K H C 対多関連型 多対 関連型 R(C ) を2つの実体型 E L (K,A,,A m ) とE R (H,B,,B n ) の 対多関連型とする このとき RはリレーションスキーマR R (K,H,C ) に変換され H は主キーとなる このとき HはE R の外部キーともなる R(C ) を2つの実体型 E L (K,A,,A m ) とE R (H,B,,B n ) の多対 関連型とする このとき RはリレーションスキーマR R (K,H,C ) に変換され K が主キーとなる このとき KはE L の外部キーともなる K K E L A E L A A 2 R R K H C N A 2 R R K H C R C R C E R N H E R H B B

多対多関連型 例 :ER から RDB スキーマへの変換 R(C ) を2つの実体型 E L (K,A,,A m ) とE R (H,B,,B n ) の多対多関連型とする このとき RはリレーションスキーマR R (K,H,C ) に変換され {K,H} は主キーとなる このとき HとKは各々 E L,E R の外部キーとなる 学生 学籍番号 学生名 学生 学籍番号 学生名 住所 E L M R N E R K A A 2 C H R R K H C M 履修 N 科目 住所得点科目名単位数 履修 外部キー 学籍番号 科目名 得点 外部キー 科目科目名 単位数 B 関係データ操作言語の基本概念 関係代数 データ操作言語 (DML-Dt Mnipultion Lnguge) ユーザの要求 RDBに質問 (query) をして 結果を求める RDBを更新する リレーションスキーマのインスタンスは リレーション すなわ ち 数学的関係である 数学的関係は 集合の直積の部分集 合である よって 集合演算などの代数演算が可能となる RDB DML ユーザ IS-FMG, T,I,T, All Rights Reserved, 2008 Forml Method Group 28

関係代数 標準に用いられる4つの集合演算 和 (union) 差 (difference) 積 (intersection): 差で実現可能 直積 (product) 関係代数固有の4つの演算 射影 (projection) 選択 (selection) 結合 (join) ( 自然結合 ) : 直積と選択で実現可能 商 (quotient): 直積 射影 差で実現可能 和 (union) 定義 R S={t t R t S} 例 テニス部員 サッカー部員氏名 所属 連絡先 鈴木一郎 K55 5643-392 浜崎アユ K4 559-0585 別所幸治 K55 5274-520 宇田ひかる K4 5989-320 29 30 差 (difference) 直積 (product) 定義 R-S={t t R t S} 例 テニス部員 - サッカー部員 R(A,,A n ),S(B,,B m ) に対し RとSの直積を次のように定める : R S={(r,s) r R s S } 社員 社員番号 氏名 給与 所属 部門 0650 鈴木一郎 50 K55 部門番号 部門名 部門長 508 浜崎アユ 40 K4 023 宇田ひかる 60 K4 K55 データベース 0650 2034 別所幸治 40 K55 K4 ネットワーク 508 氏名所属連絡先 浜崎アユ K4 559-0585 別所幸治 K55 5274-520 社員 部門社員 社員番号 社員 氏名 社員 給与 社員 所属 部門 部門番号 部門 部門名 部門 部門長 0650 鈴木一郎 50 K55 K55 データベース 0650 0650 鈴木一郎 50 K55 K4 ネットワーク 508 508 浜崎アユ 40 K4 K55 データベース 0650 508 浜崎アユ 40 K4 K4 ネットワーク 508 023 宇田ひかる 60 K4 K55 データベース 0650 023 宇田ひかる 60 K4 K4 ネットワーク 508 2034 別所幸治 40 K55 K55 データベース 0650 2034 別所幸治 40 K55 K4 ネットワーク 508 3 32

射影 (projection) 選択 (selection) 供給 R(A,,A n ) を関係とし X= {A i,,a ik } {A,,A n } とするとき R の X 上の射影 R[X] を次のように定める : R[X]={u u dom(a i ) dom(a ik ) ( t)(t[a i ]=u[a i ] t[a ik ]=u[a ik ])} 関係の縦方向への切出し R(A,,A n ) を関係とするとき 属性 A i とA j がθ- 比較可能であるとは. dom(a i )=dom(a j ) ( ドメインが一致 ) 2. 任意のタプルtに対して t[a i ]θt[a j ] の真偽が常に定まる θは具体的には >,, =,, <, =とする θ- 選択演算の定義 R[A i θa j ]={ t t R t[a i ] θt[a j ]} 供給元部品供給先 供給 [ 供給元 部品 ] 商品 A P0 K55 A P02 K5 A P02 K4 供給元 A A 部品 P0 P02 商品番号 商品名 原価 売価 定価 G0 刺身 600 500 980 商品 [ 原価 > 売価 ] A2 P02 K4 A2 P03 K5 A3 P0 K4 A3 P02 K5 A3 P03 K5 A2 A2 A3 A3 A3 P02 P03 P0 P02 P03 G20 豆腐 90 75 20 G30 卵 95 00 40 G40 コーヒー豆 700 860 860 G50 ケーキ 200 250 300 商品番号 商品名 原価 売価 定価 G0 刺身 600 500 980 G20 豆腐 90 75 20 33 34

用語の説明 : テーブル, レコード, フィールド 情報システム基礎実験 第 5 回データベースの基礎 レコード ( 行 ) リレーショナルデータモデルのタブルに対応する テーブル ( 表 ) リレーショナルデータモデルのインスタンスに対応する 会員番号 氏名 住所 誕生日 KU3B005 前原美紀 260-0855 千葉県千葉市中央区市場町 - 928/6/ KU3B008 武田陽子 90-0005 福井県福井市大手 3-7- 945/8/8 KU3B006 古石理絵 60-0023 東京都新宿区西新宿 2-8- 957//2 KU3B007 下山美歌子 23-002 神奈川県横浜市中区日本大通 966//28 KU3B004 豊岡可織 336-00 埼玉県浦和市高砂 3-5- 975/7/3 KU3B009 桝岡由子 420-0853 静岡県静岡市追手町 9 6 976/6/29 KU3B00 井上佑介 30-00 茨城県水戸市三の丸 -5-38 94/5/30 KU3B003 小田学 37-0026 群馬県前橋市大手町 -- 96//3 KU3B00 室内昌明 460-000 愛知県名古屋市中区三の丸 3--2 963/8/29 KU3B002 大槻隆男 320-0027 栃木県宇都宮市塙田 --20 972/2/4 参考文献 : http://www.rfs.jp/sitebuilder/sql/index.html ( 第 4 章 SQL 構文 ) フィールド ( 列, 性質, プロパティ ) 山田和夫 ( 著 ) 基礎からのPHP, ソフトバンククリエーティブ (2007) リレーショナルデータモデルのドメインタブルに対応する 2 用語の説明 (SQL,DBMS, ライブラリ ) DBMS(DtBse Mngement System) はデータベースを管理し データに対するアクセス要求に応えるソフトウェアで,mySQL も一種の DBMS である DtBse Mngement System DBMS の仕組み SQL(Structured Query Lnguge) はデータベースと会話するための言語だと理解すればよい SQL を使って, DBMS( テータベース管理システム ) に対し, こんなことを伝えることができる : データを格納すべき表の定義 複数の表を関連づけるための規約や制約 データベースに必要な機密保護の宣言 表に対するデータの登録 修正 削除 表中のデータを検索 3 データベースB Tble Tble 3 2 3 Tble 2 データベースA Tble 2 3 Tble 2 SQL(Structured Query Lnguge) で会話し, データの検索, 登録, 修正などを行う 4

mysql で管理されているデータベース データベース B Tble 3 Tble 2 データベースA Tble Tble 2 2 3 Tble 2 3 PHP と mysql の連携 私はloclhostにいる mtsui というユーザです 私のパスワードは hideki です 接続させてください $my_con = mysql_connect($hostnme,$yournme,$pssword) 2 接続 OK です 3 データベースAに接続させてください mysql_select_db($db_nme,$my_con); 4 命令 を実行してください mysql_query($query); 5 どうもありがとう 仕事が完了しましたので, 接続を切って下さい mysql_close($my_con) php プログラム 重要な SQL 文 データベース操作 :CREATE DATABASE ( データベースの作成 ), DROP DATABASE ( データベースの削除 ),USE ( データベースを指定 ), テーブル操作 :CREATE TABLE ( テーブルの作成 ),DROP TABLE ( テーブルの削除 ), データ操作 :INSERT ( 行の挿入 ),UPDATE ( 行の更新 ), DELETE ( 行の削除 ) データ検索 集約 :SELECT ( 行の抽出 ),FROM,WHERE,ORDER BY, GROUP BY,JOIN SQLの例 SELECT フィールド名 FROM テーブル名 WHERE 条件文 ( 指定したテーブルの中から, 条件文を満たすレコードを抽出し, 指定したフィールドを表示する ) 6 接続を切りました 5 6 USE 文で利用するデータベースを宣言 データベースの操作する前に まず DBMSに これからどのデータベースを利用するかを伝える必要がある 今後のグループワークを含め 情報システム基礎実験で使うのは iskiso というデータベースですので 最初に 下記 SQL 文を実行する必要がある USE iskiso; このスライドでは 分かりやすいように SQL 文予約語は全て大文字で表示していますが 通常 SQL 文の予約語の大文字 / 小文字は区別されません USE iskiso を実行しても use iskiso を実行しても 結果が変わりません 7 CREATE TABLE 文 : テーブルを作る CREATE TABLE < テーブル名 > ( < カラム名 > < 型 > < オプション >, < カラム名 > < 型 > < オプション >, ) MySQLでよく使うデータ型は : VARCHAR: 可変長文字 INT:32bitの整数型 DATETIME : 日時 MySQL では カラム名 ( 列の名前 ) として 半角英数字及び _ が使えます (DBMS によっては 日本語が使える場合もある ) MySQLでは 以下のオプションを指定できる : PRIMARY KEY: このカラムは主キーである NOT NULL: 値が空であってはならない AUTO_INCREMENT : 自動的な連番とする 型は ソートするときの順番に影響します 例えば ID というカラムの型を INT と指定すると ID=2 の行が ID=2 の行の前にくるが 型を VARCHAR と指定すると 2 が 2 の前にきます 8 2

CREATE TABLE の例 INSERT 文 : 行の挿入 CREATE TABLE IF min_customer ( id int() NOT NULL AUTO_INCREMENT PRIMARY KEY, nme, ge INT, min_customer min_customer gender INT, prefecture VARCHAR(20), id id INT() INT() telephone vrchr(32), nme nme compny vrchr(64) ge ge INT() INT() ) id nme ge gender prefecture telephone compny 木村尚志 53 東京都 03-5324-0000 ( 有 ) 山田電算 2 田中仙市 27 千葉県 043-234-0000( 株 ) テラソフト 3 鈴木良美 3 2 千葉県 043-234-0000( 株 ) テラソフト 4 吉田盛朗 25 埼玉県 048-234-0000 個人事業主... gender gender INT() INT() prefecture prefecture VARCHAR(20) VARCHAR(20) telephone telephone compny compny VARCHAR(64) VARCHAR(64) 9 INSER INTO < テーブル名 > ( < カラム名 > ) VALUES ( < 値 > ) 例 INSERT INTO min_customer (nme, ge, gender, prefecture, telephone, compny) VALUES ( ' 木村尚志 ',53,'',' 東京都 ','03-5324-0000','( 有 ) 山田電算 '); INSERT INTO min_customer (nme, ge, gender, prefecture, telephone, compny) VALUES ( ' 田中仙市 ',27,'',' 千葉県 ','043-234-0000','( 株 ) テラソフト '); INSERT INTO min_customer (nme, ge, gender, prefecture, telephone, compny) VALUES ( ' 鈴木良美 ',3,'2',' 千葉県 ','043-234-0000','( 株 ) テラソフト '); INSERT INTO min_customer (nme, ge, gender, prefecture, telephone, compny) VALUES ( ' 吉田盛朗 ',25,'',' 埼玉県 ','048-234-0000',' 個人事業主 '); id nme ge gender prefecture telephone compny 木村尚志 53 東京都 03-5324-0000 ( 有 ) 山田電算 2 田中仙市 27 千葉県 043-234-0000( 株 ) テラソフト 3 鈴木良美 3 2 千葉県 043-234-0000( 株 ) テラソフト 4 吉田盛朗 25 埼玉県 048-234-0000 個人事業主 0 SELECT 文 : データの抽出 関係代数の 選択 (selection) に対応する SELECT < カラム名 >, < カラム名 >, FROM < テーブル名 > [WHERE 節 ] [GROUP BY 節 ] [HAVING 節 ] [ORDER BY 節 ] 全顧客の氏名 年齢を抽出する例 : SELECT nme, ge FROM min_customer; MySQL を使ってみる WHERE 節でデータを絞り込み ORDER BY 節で並べ替える 20 歳以上で 30 未満の顧客の氏名 年齢を抽出し 氏名の昇順 年齢の降順で出力する例 : SELECT nme, ge FROM min_customer WHERE ge >= 20 AND ge < 30 ORDER BY nme ASC, ge DESC; 田中仙市 27 吉田盛朗 25 実行すると 2 件のデータが抽出される 2 3

[ 注意 ] このページは使わない ( 誤ってパスワードを変更する恐れがある ) ハッスルサーバーにログインし 左メニューの [MySQL] をクリックすると左記画面が出ます これは パスワード変更画面 です ログイン画面 ではありません 誤ってパスワードを変更する恐れがあるので このページを使わないでください 3 MySQL 演習での注意事項 他人のデータを誤って変更することがないよう 下記命名ルールに従って テーブル名をつけて下さい 二人一組で演習する際 自分のチーム番号をテーブル名の先頭につけてください ( 例 : チーム が使うテーブルなら 名前を test, kikei などにする ) グループワークで MySQL を使う際 0 に続くグループの番号をテーブル名の先頭につけてください ( 例 : 4 班 挽きたて微糖 のテーブルなら 名前を 04test, 04kikei などにする ) SQL 文を実行するとき 細心の注意を払って テーブル名をよく確認しましょう グループワークの際 データが壊れてもすぐ復旧できるよう バックアップをしっかりやりましょう 4 演習の準備 TerPd を起動し ファイル memo.txt を作ってください これから実行する SQL はこのファイルの中で編集します 今後 グループワークで SQL を実行する場合も 必ず テキストファイルとして編集し 実行した SQL 文をファイルの中で保存してください ( そうすれば データが壊れた場合 迅速に復旧できます ) utf-8 がガジェットの標準的な文字コードです これから作るデータの文字コードを全て utf-8 にしましょう そのために 文字 / 改行コード指定保存 の操作をし 文字コードを UTF-8 に変更してください サーバ上の MySQL を操作するための Web ページの URL は以下です ブラウザを起動し このページにアクセスし ブックマークしておく ( 念のために 演習時に常にもってくる 備忘録 にも この URL をメモしてください ) https://www.hustle.ne.jp/phpmydmin/ 5 MySQL 操作画面 (phpmyadmin) へのログイン手順. 一番上の [ 言語欄 ] を 日本語 -Jpnese (utf-8) に変更する 2. [ サーバの選択 ] 欄を mysql3.nid.jp に変更する 3. ホワイトボードに書かれているID パスワードを入力する 4. [ 実行する ] をクリック phpmyadminにログイン後 30 分以上操作がないと自動的にphpMyAdminからログアウトされる その場合 再度ログインしてから使ってください 6 4

CREATE TABLE 文を使ってみる 下記 SQL 文を入力し 性別を管理するテーブル gender を作ろう (TerPd で SQL 文を編集し コピー ペーストを使って phpmyadmin で実行してください ) gender の前に 二人一組演習のチーム番号をつけてください 例 : チーム の場合 テーブル名は gender CREATE TABLE gender ( id INT PRIMARY KEY, nme ) チーム番号 min_customer min_customer ログインできたら SQL アイコンをクリックし SQL タブで USE iskiso; を入力し 実行してください 7 id id INT() INT() nme nme ge ge INT() INT() gender gender INT() INT() prefecture prefecture VARCHAR(20) VARCHAR(20) telephone telephone compny compny VARCHAR(64) VARCHAR(64) gender = id id id nme nme gender gender INT() INT() 8 CREATE TABLE 文の実行画面 CREATE TABLE 文実行結果画面 SQL が正常に実行したかどうかが表示される 9 20 5

SQL 文が正常に実行されなかった場合 下記 INSERT 文を実行してみよう ( テーブル名は各自のものに変えてください ) INSERT INTO gender (id,nme) VALUES (, ' 男性 '); INSERT INTO gender (id,nme) VALUES (2, ' 女性 '); チーム番号 エラーのときは MySQL からのメッセージをよく読み 理解したうえで SQL 文を見直し [ 戻る ] を使って前の画面に戻り 修正した SQL 文を再度実行する 2 22 INSERT 文の実行結果 SELECT 文を使ってみよう 20 歳以上で 30 未満の顧客の氏名 年齢を抽出し 氏名の昇順 年齢の降順で出力する SQL 文を実行してみてください SELECT nme, ge FROM min_customer WHERE ge >= 20 AND ge < 30 ORDER BY nme ASC, ge DESC; INSERT 文 DELETE 文 UPDATE 文を実行すると 変更された行数も結果として表示される 23 phpmyadminでは データベースから先に出力された行が下に表示されるので 指定した順番の逆のようにみえる 24 6

GUI を使う SQL 文実行結果画面で データベースの構造をGUIで確認することもできる 左メニュにあるテーブル名をクリックしてみよう GUI 画面で [ 表示 ] タブを使うと テーブルの中身のデータを見れる また 構造タブを使うと カラムの一覧を見れる PHP と mysql の連結 データベースにアクセスする PHP プログラムを作ってみよう 25 26 解説 : ログイン 解説 : データベース操作 $conn = mysql_connect("mysql3.nid.jp","iskiso","w93f3") or die ('DB Connection Error= '. mysql_error()); mysql_query("set NAMES 'urf-8'", $conn); これは phpmyadminでのログイン操作に相当する部分 ログインが成功すると $conn を使って データベース操作を行える mysql_select_db("iskiso", $conn); $sql = "SELECT * FROM min_customer"; $rs = mysql_query($sql, $conn); これは phpmyadmin で USE iskiso; 文を実行するのに相当する部分 これは phpmyadminでクエリーを実行するのに相当する部分 実行した結果が $rs に代入される 27 木村尚志 53 東京都 03-5324-0000 ( 有 ) 山田電算 2 田中仙市 27 千葉県 043-234-0000( 株 ) テラソフト 3 鈴木良美 3 2 千葉県 043-234-0000( 株 ) テラソフト 4 吉田盛朗 25 埼玉県 048-234-0000 個人事業主 28 7

解説 : 結果表示 echo "<TABLE border=>"; while ($row = mysql_fetch_ssoc($rs)) { echo "<TR>"; forech ($row s $key => $vl) { echo "<TD>$key=<b>$vl</b></TD>"; } echo "</TR>"; } echo "</TABLE>"; 木村尚志 53 東京都 03-5324-0000 ( 有 ) 山田電算 2 田中仙市 27 千葉県 043-234-0000( 株 ) テラソフト 3 鈴木良美 3 2 千葉県 043-234-0000( 株 ) テラソフト 4 吉田盛朗 25 埼玉県 048-234-0000 個人事業主 これは $rs に代入されたデータを HTML 形式で表示する部分 <HTML><HEAD> <met http-equiv="content-type" content="text/html; chrset=utf-8" /> <TITLE>MySQL</TITLE></HEAD> <BODY> <?php $conn = mysql_connect("mysql3.nid.jp","iskiso","w93f3") or die ('DB Connection Error= '. mysql_error()); mysql_query("set NAMES 'urf-8'", $conn); mysql_select_db("iskiso", $conn); $sql = "SELECT * FROM min_customer"; $rs = mysql_query($sql, $conn); echo "<TABLE border=>"; while ($row = mysql_fetch_ssoc($rs)) { echo "<TR>"; forech ($row s $key => $vl) { echo "<TD>$key=<b>$vl</b></TD>"; } echo "</TR>"; } echo "</TABLE>"; <TABLE border=> <TBODY> <TR> <TD>id=<B></B></TD> <TD>nme=<B> 木村尚志 </B></TD> <TD>ge=<B>53</B></TD> min_customerの全 <TD>gender=<B></B></TD> <TD>prefecture=<B> 東京都 </B></TD> <TD>telephone=<B>03-5324-0000</B></TD> mysql_close($conn); テータを表示する <TD>compny=<B>( 有 ) 山田電算 </B></TD></TR>...?> mysql-showtble.php </TBODY></TABLE> 29 30 </BODY> </HTML> 左記 PHP プログラムを作り サーバ上の自分のフォルダーにアップロードし 実行してみてください 実行結果 3 8