データベース設計 第8回 クライアント=サーバーモデル(2) 2010.12.01 データベース設計 第8回 クライアント=サーバーモデル(2) 坂口利裕
サーバーの運用準備(1) サーバー用のマシンの要件 多数のクライアント・マシンからの要求に耐える 安定したOSで動作する 一定以上の速度・メモリ容量・データベース格納に必要なディスク容量が必要 小規模範囲(部署内・家庭内)での利用であれば一般のPCでも十分 安定したOSで動作する Windows系:Windows Server MacOS系: MacOS X(テン) Server 商用Unix系: Solaris,AI/Xなど多数 オープンソース・フリーUnix系: Linux,FreeBSDなど多数 2010.12.01 データベース設計
サーバーの運用準備(2) サーバー用ソフトのインストール DBサーバー: Oracle,PostgreSQL,MySQLなど Webサーバー: IIS,Apacheなど CGI作成用言語: Perl,PHPなど(DB連携のための機能拡張も必要) 管理者権限(Administrator,rootなどのスーパーユーザー)で作業 DB作成権限をユーザーに許可 2010.12.01 データベース設計
実習用サーバーの仕様 ホスト名: orion.yokohama-cu.ac.jp データベース設計 2010.12.01 実習用サーバーの仕様 ホスト名: orion.yokohama-cu.ac.jp マシン: NEC(Sun MicrosystemsのOEM) OS: Unix(Solaris 5.10) DBサーバー: PostgreSQL Webサーバー: Apache CGI作成用言語: PHP(予定) 2010.12.01 データベース設計 坂口利裕
実習用サーバー上でのDB作成手順(1) 遠隔操作用に ssh を使用して接続 TeraTermのウィンドウ内でコマンドを使用 データベース設計 2010.12.01 実習用サーバー上でのDB作成手順(1) 遠隔操作用に ssh を使用して接続 [ネットワークツール]→[TeraTerm] ホスト名(Host:)に orion と入力 サービスは SSH を選択 OKをクリックし,各自のユーザ名とパスワードでログイン TeraTermのウィンドウ内でコマンドを使用 接続解除(ログアウト)は exit と入力 文字列で与える操作指令 2010.12.01 データベース設計 坂口利裕
実習用サーバー上でのDB作成手順(2) DBの作成 DBの削除 createdb 【DB名】 ~DB名省略時はユーザー名と同じ DBの削除 dropdb DB名 ~省略はなし DB操作(テーブルの作成/削除,データの追加/削除,テーブルの検索,アクセス権限の設定) psql 【DB名】 ~DB名省略時はユーザー名と同じ 2010.12.01 データベース設計
実習用サーバー上でのDB作成手順(3) psqlによるテーブル作成/削除 データベース設計 2010.12.01 実習用サーバー上でのDB作成手順(3) psqlによるテーブル作成/削除 psqlを起動後,対話処理モードに移行 「ユーザ名=# 」が入力待ちの合図 作成: create table テーブル名 ( フィールド名 型と属性 【,フィールド定義の繰り返し・・・】 ) ; 削除: drop table テーブル名 ; psql終了は \q と入力 2010.12.01 データベース設計 坂口利裕
実習用サーバー上でのDB作成手順(4) psqlによるデータ追加/表示 対話入力: copy テーブル名 from stdin delimiters ‘,’ ; 「>> 」に対してデータをフィールド間を「,」で区切って入力 最後のデータを入力後「¥.」を入力 表示: select * from テーブル名 ; 全データを無条件に表示 2010.12.01 データベース設計
SQLとは (リレーショナル型)データベースの操作言語 データ定義(DDL=Data Definition Language) データ操作(DML=Data Manipulation Language) データ制御(DCL=Data Control Language) 汎用言語(Cobol,Fortran,PL/I)の補完言語として出発(Structured Query Language) DBMS用言語として1986年に標準化を開始 骨格はSQL92(1992年版)で安定 →SQL:2003ではマルチメディアにも対応 2010.12.01 データベース設計
SQL文の基本 言語の一種~プログラミング言語に類似 機能別に設けられた“予約語”で始まる“文”で処理内容を表記する 文の終わり(終端)はセミコロン“;”で示す 例) SELECT * FROM tab WHERE height>=150 ; 意味) “tab”テーブルから“height”フィールドが150以上のものについて,すべてのフィールドを選べ 予約語で始まる 文の終端を示すセミコロン 2010.12.01 データベース設計
SQLによるテーブル操作(1) テーブルから特定のフィールドを抽出(射影) テーブルから特定の行を抽出(選択) データベース設計 2010.12.01 SQLによるテーブル操作(1) テーブルから特定のフィールドを抽出(射影) SELECT 出力フィールド名 FROM テーブル名 ; テーブルから特定の行を抽出(選択) SELECT * FROM テーブル名 WHERE 条件式 ; 2010.12.01 データベース設計 坂口利裕
SQLによるテーブル操作(2) フィールドの指定 複数指定するときはコンマ“,”で区切る SELECT height,weight ・・・ 複数テーブルの同一名のフィールドを指定する時はテーブル名をフィールド名の前にピリオド“.”で付け加える SELECT tab.id ・・・ ASを追加することで出力時のフィールド名を変更できる SELECT id AS newid ・・・ フィールド全部を一括指定する時はアスタリスク“*”を用いる SELECT * ・・・・ 2010.12.01 データベース設計
SQLによるテーブル操作(3) テーブルの指定 複数指定するときはコンマ“,”で区切る SELECT * FROM tab1,tab2 ・・・ 2010.12.01 データベース設計
SQLによるテーブル操作(4) WHERE句の条件式の書き方 単純比較 式1 = 式2 両辺が等しい 式1 <> 式2 両辺が等しくない 式1 < 式2 左辺が小さい 式1 > 式2 左辺が大きい 式1 <= 式2 左辺≦右辺 式1 >= 式2 左辺≧右辺 式は,フィールド名または数値・文字列(シングルクォート‘で括って指定) 複数の比較を同時に行うときは AND(かつ) や OR(または)でつなぐ WHERE (weight >=50) AND (weight<=60) 2010.12.01 データベース設計
SQLによるテーブル操作(5) LIKEによるパターンマッチング 比較の対象が文字列型の場合に有効 データベース設計 2010.12.01 SQLによるテーブル操作(5) LIKEによるパターンマッチング 比較の対象が文字列型の場合に有効 文字列にワイルドカードである“%”を含める 例) ・・・ WHERE name LIKE ‘%yama’ ・・・ →“yama”で終わるもの ・・・ WHERE name LIKE ‘Kawa%’ ・・・ →“Kawa”から始まるもの ・・・ WHERE name LIKE ‘%aya%’ ・・・ →“aya”を含む社員名を持つもの ・・・ WHERE name LIKE ‘Sa%ta’ ・・・ →“Sa”で始まり“ta”で終わる社員名を持つもの 2010.12.01 データベース設計 坂口利裕
SQLによるテーブル操作(6) 複数のテーブルで,キーが一致するものを結合する SELECT 出力フィールド名 FROM テーブル名1,テーブル名2 WHERE テーブル名1.キーフィールド = テーブル名2.キーフィールド ; 2010.12.01 データベース設計
SQLによるテーブル操作(7) テーブルの集合演算 複数のSELECT文を結合して利用 積(共通部分):INTERSECT~Access未サポート 和:UNION ~Accessでもサポート 差:EXCEPT ~Access未サポート 例) SELECT * FROM 名簿1 UNION SELECT * FROM 名簿2 ; →名簿1と名簿2の和集合 2010.12.01 データベース設計
練習 orion 上でSQLを用いてDB操作の練習 別紙・練習6にしたがって作業 Webインタフェースは次回以降に設計作成 2010.12.01 データベース設計