データベースS 第8回 PosgreSQL入門 システム創成情報工学科 尾下 真樹 今回の内容 • 演習 第1回 PostgreSQL入門 • PostgreSQLの概要 • 演習の環境について • PostgreSQLの基本的な使い方 参考書 • 「PHP4徹底攻略 改訂版 」 堀田倫英 石井達矢 廣川類 著 ソフトバンクパブリッシング (3,800円) – PHP(次回説明) + PostgreSQL についての詳しい参考書 • 「PostgreSQLによるLinuxデータベース構築」 廉升烈 著、翔泳社 出版 (2,200円) 演習環境の説明 • PostgreSQL(ぽすとぐれす、ぽすとぐれすきゅーえる) – フリーのリレーショナルデータベースシステム – 広く使われている – それほどパフォーマンスが要求されない用途で あれば、十分実用になる – Windowsでも動く(cygwinを入れる必要がある) が、今回の演習では Linux を使用 • 希望者は、自宅の PC-UNIX や Windows を使ってレ ポートをやっても構わない PostgreSQLの実行環境 • クライアント・サーバ環境 – PostgreSQLサーバ • データベースを全て管理 • 今回の演習では、popura.ces.kyutech.ac.jp という 学科のサーバを使用 – クライアント • データベースにコマンドやSQLなどを送り、結果を受 け取る • 今回の演習では、端末室のPC (pcXX.ces.kyutech.ac.jp) クライアント・サーバ環境 • サーバがクライアントにサービスを提供する 利用者 データベースサーバ 操作(コマンドを実行) 結果(実行結果をテキストで表示) 別の利用者 データを管理 コマンドラインインター フェース psql • psql – クライアントで使用するフロントエンド・プログラ ム – 対話的にコマンドやSQLを実行できる – キャラクターベース PosgreSQLの使い方 • データベースの作成 • psqlの起動 • テーブルの作成 • データの挿入 • ファイルからのコマンド実行 • SQLによる問い合わせ • データの更新と削除 データベース作成、psqlの起動 • createdb コマンド(プログラム) – 最初にデータベースを作成する必要がある – データベース名(本演習ではユーザ名と同じに する) や PostgreSQLサーバ名などを指定する – 最初に一度だけ行う – 詳しい使用方法は、資料を参照 • psql コマンド(プログラム) – 同じくデータベース名とサーバ名を指定して起動 データベース作成、psqlの起動 username@pcXX > createdb dbname -h popura.ces.kyutech.ac.jp CREATE DATABASE username@pcXX > psql dbname -h popura.ces.kyutech.ac.jp Welcome to psql 7.3.2, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit dbname=# dbname には、必ず自分のアカウント名を入れること psqlの操作 • psqlの内部コマンド – \で始まるコマンド (環境によっては \ は / と表示 される) – メタ情報(テーブル一覧)の表示や、ファイルの 読み込みなど • SQL – テーブルの作成、データの挿入、問い合わせ – SQLなどのコマンドの最後には ; を入力 • ; を入れるまで、複数行に渡って入力しても良い psqlの内部コマンド • コマンドの例 コマンド \q 機能 psqlを終了。 \l データベース一覧の表示。 \d テーブル一覧の表示。 \i オプションfilenameで指定したファイルを読み込み、 filename そのコマンドを実行する。 \copy ファイルとテーブルの間でデータを読み書きする。 詳しい使い方は後述。 \? psqlで使用可能なコマンドの一覧を表示。 テーブルの作成 • テーブルの作成 – 詳しくは資料を参照 create table employee( id varchar(4) not null unique, dept_no varchar(2), name varchar(12) not null, age int2, primary key( id ) ); • 入力方法 – psqlのコマンドラインから直接入力 – ファイルに記述して、\i コマンドで読み込み実行 指定可能な型1 分類 型 int2 意味 整数(2バイト、-32378~+32767) int / int4 整数(4バイト、±約21億) 数値 int8 整数(8バイト、±約18桁) 型 real / float4 浮動小数点表現による実数(4バイト) float8 浮動小数点表現による実数(8バイト) text 可変長文字列(長さ制限なし) (PostgreSQL独自) 文字 varchar(n) 可変長文字列(最大のn文字) 列型 char(n) 固定長文字列(常にn文字、自動的に 空白が追加される) 指定可能な型2 分類 型 data 日付 時刻 型 time timestamp interval 他 boolean 意味 日付 時間 日付と時間 日付時間の間隔 真偽値(TRUE, FALSE, NULL のどれ かをとる) ※ これら以外の型については、参考書等を参照 テーブルの作成(方法1) • create table を実行 – 前ページのように途中に改行を入れてもOK (psql は ; (セミコロン) までを解釈) dbname=# create table employee ( id varchar(4) not null unique, dept_no varchar(2), name varchar(12) not null,age int2, primary key( id ) ) ; – テーブル名や属性名には、アルファベットを使う のが無難 テーブルの作成(方法2) • テキストファイルから実行することもできる – あらかじめ、テキストファイルに処理の内容を記 述した上で、ファイルを呼び出して実行 employee_table.txt create table employee( id varchar(4) not null unique, dept_no varchar(2), name varchar(12) not null, age int2, primary key( id ) ); dbname=# \i employee_table.txt データの挿入(方法1) • INSERT文を使用 insert into employee( id, dept_no, name, age ) values( ‘0001’, ‘007’, ‘taro’, 20 ); • 入力方法 1. psqlのコマンドラインからSLECT文を直接入力 • 一度にひとつのデータしか挿入できない 2. ファイルにINSERT文を記述して、\i コマンドで 読み込み実行 (前のスライドと同じ方法) 3. ファイルにデータを記述して、\COPYコマンドで 読み込み設定 データの挿入(方法2) • \COPYコマンドによる方法 – あらかじめテキストファイルにデータを記述し、 \COPY コマンドで一度にテーブルに読み込み employee_data.txt 0001,01,尾下 真樹,27 0002,02,下戸 彩,17 0003,03,本村 拓哉,30 0004,01,宇田 ヒカル,20 0005,01,織口 裕二,35 0006,02,松浦 亜矢,17 0007,03,山田 一郎,30 dbname =# \COPY employee FROM ‘employee_data.txt’ USING DELIMITERS ',' テーブルの削除 • drop table コマンドで、テーブルを削除可能 – 演習中に、間違えてテーブルのデータがおかし くなったりしたときには、一度テーブルを削除し て作り直すと良い dbname =# drop table employee; 問い合わせ • SQLによる問い合わせ – 前回学習した SQLを使って、さまざまな問い合わ せを実行することができる • 同じくSQLを使用して、データの削除 (DELETE)や変更(UPDATE)もできる 問い合わせの例 • 部門番号01の従業員の人数 select count(*) from employee where dept_no = '01'; • 21歳以下の従業員の氏名の一覧 select name from employee where age < 21; 複数のテーブルの追加 • 部門のテーブル・データも追加 department.txt create table department( dept_no varchar(2) not null unique, name varchar(12) not null, primary key( dept_no ) ); insert into department values( '01', '開発' ); insert into department values( '02', '営業' ); insert into department values( '03', '総務' ); dbname=# \i department.txt 外部参照整合性制約の設定 dbname =# alter table employee add constraint employee_dept_key foreign key (dept_no) references department (dept_no); • 従業員テーブルに制約を追加 – alter table テーブル名 add constraint 制約名 ・・・ – 制約名は適当(制約削除のときに使用) – 外部参照整合性制約 • foreign key (外部キー属性) references 参照先テーブル(参照先属性) insert into employee values( '0010', '04', 'Jack', 20 ); 演習 • 各自、資料の説明に従って、データベースを 作成し、用意されているデータを追加せよ • 演習問題のSQLを考えて、実行せよ • Moodleに置かれているレポートのファイル に、回答を貼り付けて、Moodleから提出 – 締め切り 7/15(金) 12:30 – 2週分の演習問題として評価する – 先にMoodleの演習問題を全て解いて、正解して から、演習のSQLに挑戦すると良い 来週の講義 • 休講(CLで各自演習) 次回予告 • ウェブインターフェースの作成 – HTML + PHP – SQLの結果を動的に表示するようなウェブペー ジや、データベース更新のためのウェブインター フェースを作成
© Copyright 2024 ExpyDoc