PostgreSQLの使い方 0312006003 浅川 和久 2008/11/19 PostgreSQLの使い方 1 目次 • • • • • • • • • PostgreSQLのユーザ ユーザの登録 ユーザの削除 データベースの作成 psql データの登録 データの表示 データの変更 データの削除 2008/11/19 PostgreSQLの使い方 2 PostgreSQLのユーザ PostgreSQLには2種類のユーザがある • スーパユーザ – データベースの管理を行う特別なユーザ – 一切のセキュリティチェックが適用されない • 一般ユーザ – 通常の作業は一般ユーザで行う 2008/11/19 PostgreSQLの使い方 3 ユーザの登録(1) • PostgreSQLのスーパユーザになる • creatuserというUNIXコマンドを実行する #su - postgres $createuser foo データベースのユーザ名とUNIXのユーザ名は一致している必要はない。 ユーザ名はアルファベットで始まる31文字以内のアルファベット小文字、数字、ア ンダースコアの組み合わせ(空白やハイフンなどの記号、日本語は使えない) 2008/11/19 PostgreSQLの使い方 4 ユーザの登録(2) Shall the new user be allowed to create databases? (y/n) y このユーザが新しいデータベースを作ることができるかどうか Shall the new user be allowed to create more new users? (y/n) n このユーザが新しいユーザを追加できるかどうか この質問にyと答えるとスーパユーザと同等の権利を持つユーザを作成する 2008/11/19 PostgreSQLの使い方 5 ユーザの削除 • dropuserコマンドを実行する • スーパユーザだけが実行できる #su - postgres $dropuser foo 2008/11/19 PostgreSQLの使い方 6 データベースの作成 $createdb foo CREATE DATABASE ユーザ名と同じ名称のデータベースを作っておくと、psqlコマンドを使ったときに データベースを指定する必要がなくなる。 データベースを削除する場合はdropdbコマンドを使う。ただし、他人が作ったデー タベースは削除できない。(スーパユーザなら可能) 2008/11/19 PostgreSQLの使い方 7 psql(1) • 対話的にデータベースを操作できるコマンド $psql Welcome to psql, 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 foo=> 2008/11/19 PostgreSQLの使い方 8 psql(2) • ユーザ名と異なるデータベースを使う $psql test • データベースの一覧を表示する $psql -l List of databases Database | Owner | Encoding -------------------------------------------foo | foo | EUC-JP regression | postgres | EUC-JP template1 | postgres | EUC-JP (3 rows) 2008/11/19 PostgreSQLの使い方 9 テーブルの作成(1) • CREATE TABLE CREATE TABLE テーブル名 (列名1 データ型, 列名2 データ型…); テーブル名、列名は数字以外ではじまる31文字以内のアルファベット小文字、数 字、アンダースコア、日本語の組み合わせが使える。 空白やハイフンなどの記号、予約語は使えない。 2008/11/19 PostgreSQLの使い方 10 予約語 2008/11/19 PostgreSQLの使い方 11 データ型 データ型 意味 データ型 意味 CHAR(n) nバイトの文字列 (nバイトに満たない場合は空白で埋 める) DATE 日付 TIME 時刻 TIMESTAM P 日付と時刻 INTERVAL 時間間隔 BOOL 真偽 POINT 点 BOX 矩形 OID オブジェクトID VARCHAR( n) 最大nバイトの可変長文字列 TEXT 可変長文字列 SMALLINT 2バイト整数 INTEGER 4バイト整数 INT INTEGERの別名 INT8 8バイト整数 NUMERIC 多倍長整数(有効桁数1000桁まで) DECIMAL 多倍長整数(有効桁数1000桁まで) FLOAT 浮動小数点 2008/11/19 OID(オブジェクトID)… すべてのテーブルを識別できる PostgreSQLの使い方 12 テーブルの作成(2) • 「お天気日記」テーブルの作成 DROP TABLE otenki; CREATE TABLE otenki ( day DATE PRIMARY KEY, --日付(主キー) tenki TEXT, --天気(晴れ、くもり) ondo INTEGER, --温度 uryou INTEGER --雨量 ); otenki.sql otenki.sqlという名前で保存する。 漢字コードはEUC-JPにする。 2008/11/19 PostgreSQLの使い方 13 テーブルの作成(3) $psql –e –f otenki.sql DROP TABLE otenki; psql:otenki.sql : 2 : ERROR : Relation ‘otenki’ does not exist CREATE TABLE otenki ( day DATE PRIMARY KEY, tenki TEXT ondo INTEGER, uryou INTEGER ); psql:otenki.sql: 8 : NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index ‘otenki_pkey’ for table ‘otenki’ CREATE 改行、空白、タブは無視される。 PRIMARY KEYはこの列が主キーであることの指定。 主キーとは、その列の値を指定すれば、行がユニークに定まる列のこと。 2008/11/19 PostgreSQLの使い方 14 テーブルの作成(4) • テーブルの内容を確認する foo => \d otenki Table “otenki” Attribute | Type | Modifier ---------------------------------------------------day | data | not null tenki | text | ondo | integer | uryou | integer | Index: otenki_pkey day列は主キー。主キーの場合はNULL(データが存在しない、定まらないことを 示す)が許されないのでnot nullが自動的に指定される。 index:otenki_pkeyはday列に対応するインデックス。 インデックスはデータを高速に検索するためのしくみ。 2008/11/19 PostgreSQLの使い方 15 データの登録 • テーブルに行を追加する INSERT INTO テーブル名 VALUES(値1,値2,…) otenki.sql DROP TABLE otenki; CREATE TABLE otenki ( day DATE PRIMARY KEY, --日付(主キー) tenki TEXT, --天気(晴れ、くもり) ondo INTEGER, --温度 uryou INTEGER --雨量 INSERT INTO otenki VALUES(‘2000-8-1’,’晴れ’,30,0); INSERT INTO otenki VALUES(‘2000-8-3’,’曇’,27,10); INSERT INTO otenki VALUES(‘2000-8-10’,’雨’,25,100); ); 2008/11/19 PostgreSQLの使い方 16 データの表示(1) • テーブルの行を取り出す(問い合わせ、クエリ) SELECT 選択項目1,選択項目2…[FROM テーブル1,テーブル2…[WHERE 条件式]] foo => SELECT * FROM otenki; day | tenki | ondo | uryou ---------------------------------------------2000-08-01 | 晴れ | 30 | 0 2000-08-03 | 曇 | 27 | 10 2000-08-10 | 雨 | 25 | 100 foo => SELECT * FROM otenki WHERE tenki = ‘雨’; day | tenki | ondo | uryou ---------------------------------------------2000-08-10 | 雨 | 25 | 100 2008/11/19 PostgreSQLの使い方 17 データの表示(2) foo => SELECT * FROM otenki WHERE ondo <= 29; day | tenki | ondo | uryou ---------------------------------------------2000-08-03 | 曇 | 27 | 10 2000-08-10 | 雨 | 25 | 100 day tenki ondo uryou 2000-08-01 晴れ 30 0 2000-08-03 曇 27 10 2000-08-10 雨 25 100 foo => SELECT AVG(ondo) AS 平均気温 FROM otenki; 平均気温 -----------------27 foo => SELECT SUM(uryou) AS 合計雨量 FROM otenki; 合計雨量 -----------------110 2008/11/19 PostgreSQLの使い方 18 データの変更(1) • UPDATE UPDATE テーブル名 SET 列名1 = 値1,列名2 = 値2 [WHERE 条件式] 2008/11/19 PostgreSQLの使い方 19 データの変更(2) foo => UPDATE otenki SET uryou = 20 WHERE day = ‘2000-8-3’; test => SELECT * FROM otenki; day tenki day | tenki | ondo | uryou ---------------------------------------------2000-08-01 晴れ 2000-08-01 | 晴れ | 30 | 0 2000-08-03 曇 2000-08-10 | 雨 | 25 | 100 2000-08-10 雨 2000-08-03 | 曇 | 27 | 20 ondo uryou 30 0 27 10 25 100 foo => UPDATE otenki SET uryou = uryou + 10 WHERE day = ‘2000-8-3’; test => SELECT * FROM otenki; day | tenki | ondo | uryou ---------------------------------------------2000-08-01 | 晴れ | 30 | 0 2000-08-03 | 曇 | 27 | 20 2000-08-10 | 雨 | 25 | 100 2008/11/19 PostgreSQLの使い方 20 データの削除 • DELETE DELETE FROM テーブル名 [WHERE 条件式]; foo => DELETE FROM otenki WHERE day = ‘2000-8-1’; test => SELECT * FROM otenki; day | tenki | ondo | uryou day tenki ---------------------------------------------2000-08-03 | 曇 | 27 | 20 2000-08-01 晴れ 2000-08-10 | 雨 | 25 | 100 2000-08-03 曇 2000-08-10 雨 2008/11/19 PostgreSQLの使い方 ondo uryou 30 0 27 20 25 100 21
© Copyright 2024 ExpyDoc