PostgreSQL
インストールに関しては、連携させるものによって多少の違いがありますので割愛します。
リレーショナルデータベースシステムであるpostgresql(いかpostgres)は日本人がよく使うそうです。
簡単なsql文でのデータの取り出し、削除、挿入、更新を行うことやwebと連携させたECサイトなどでのDBの設計等、データベースソフトでは学ぶことが沢山あります。
ここではpostgresqlを例に一連の操作を使う頻度が多いであろうコマンドを中心に、勉強していくことにします。
初期設定 †
$ su
グループとユーザーを作ります。 (サーバーOSが FreeBSD の場合は、useradd の代わりに adduser とします。)
# groupadd postgres # useradd -g postgres -d /usr/local/pgsql postgres # passwd postgres
インストール先ディレクトリを作成します。
# mkdir /usr/local/pgsql # chown -R postgres:postgres /usr/local/pgsql
インストール後の設定 †
- 環境変数をpostgresユーザのbash_profileに登録
export POSTGRES_HOME=/usr/local/pgsql export PGLIB=$POSTGRES_HOME/lib export PGDATA=$POSTGRES_HOME/data export MANPATH="$MANPATH":$POSTGRES_HOME/man export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
- データベースの初期化
initdb --encoding=EUC_JP --no-locale -D /usr/local/pgsql/data
日本語を使用できるようにするためにEUC_JPを追加しています。
ユーザの追加と権限の付与 †
postgres所有の空のDB "postgres" を作る。
user$ su - postgres postgres$ createdb -E EUC_JP postgrespostgresにDB上のパスワードを与える。 postgres$ psql postgres=# ALTER USER postgres PASSWORD 'password'
まずpostgresユーザのパスワードを設定します。
postgres$ psql postgres=# CREATE USER foo WITH PASSWORD 'password' CREATEDB
上記のコマンドでfooユーザを作成。
パスワードも設定できます。
最期のCREATEDBはデータベース作成権限有りと言う意味です。
参照のみのユーザの場合はこの部分を削ります。
コマンドラインでは
postgres$ createuser -P foo
上記のように記述すればユーザが作成できます。
実用ユーザ所有のデータベースを作成
psql で行う場合:
postgres$ psql postgres=# CREATE DATABASE sample OWNER='foo' ENCODING='EUC_JP'
コマンドラインで行う場合
postgres$ createdb -E EUC_JP -O 'foo' sample
データベースの作成とテーブルの作成 †
postgresユーザもしくはpostgresqlのスーパーユーザであることが必須条件
db作成
# CREATEdb hoge
その後psql
# psql hoge postgres=#
その後psql内でテーブル作成
# create table meibo (name varchar(30) , age integer , address varchar(80));
上記コマンド例では「meiboというテーブルを作成」そのmeiboテーブルには「name,age、addressというカラムを作成」、nameカラムは30バイトのvarchar、ageカラムはinteger、addressカラムは80バイトのvarcharという風に設定しています。
psqlの主なコマンド †
| テーブル、シーケンス、インデックス等の情報を表示 | \d \d table_name \d sequence_name \d index_name |
| 関数情報表示 | \df\ df abs |
| 現在存在するデータベース一覧 | \l |
| SQL のヘルプ | \h \h sql |
| PSQL メタコマンドのヘルプ | \? \? psql_meta_command |
| 出力結果のファイル出力 | \o filename |
| PSQL モード終了 | \q ^D |
sql文の基本的な使い方 †
データベースソフトをユーザとして使用する場合に、基本的なsql文を使用することがあります。
まずはselect、delete、update、insert文を覚えるところからはじめます。
それぞれの役割は以下のとおりです。
| コマンド名 | 役割 | 使用例 |
| select | 値をとりだします | select * from meibo; |
| insert | 値を挿入します | insert into test values ('hoge',23,'09011112222'); |
| delete | 値を削除します | delete from test where user = 'hoge'; |
| update | 値を更新します | update test set tel = '09011112222' where user = 'hoge'; |
それぞれの使い方は以下で詳しく記述しますが、sql文の最期には;を必ず入力します。
それでは以下、それぞれの詳しい使用方法です。
select文 †
select文は色々な場面でしようします。
重要なコマンドです。
主な使い方は
postgres=# select * from meibo;
name | age | address
-----------------+-----+-------------
yoshida | 23 | tokyo fuchu
(1 row)
上記のコマンドは「meiboという名前のテーブルの値をすべて表示しなさい。」というコマンドです。
insert文 †
insertもselectと同様に重要なコマンドです。
まずは使ってみます。今回は上記selectで使用したmeiboテーブルにname=yamada、age=35、address=iwate morioka、として値を挿入します。
> insert into meibo values('yamada',35,'iwate morioka');
INSERT 17233 1
上記のように「INSERT 17233 1」というようなメッセージが出ればOKです。
もしも構文になんらかの間違いがあれば、~
ERROR: syntax error at or near ";" at character 61
のようなエラーが表示されます。短い構文ですと間違いがすぐみつかるのですが、長い構文ですとなかなかそうもいきません。エラーの内容を頼りに、適宜修正するようにします。
念のためselectで値が挿入されたか確かめます。
postgres=# select * from meibo;
name | age | address
-----------------+-----+---------------
yoshida | 23 | tokyo fuchu
yamada | 35 | iwate morioka
これでOKです。
また、大量のデータをinertしたい場合やファイルからデータを挿入したい場合はCOPYコマンドを使います。
使い方は
postgres=# COPY name FROM '/home/user/name.txt';
です。name.txt内のデータがnameカラムに挿入されます。
delete文 †
deleteコマンドは構文のミスや抜けで、まったく違うデータもしくはカラムのデータすべてを消してしまう恐れがあるコマンドです。
使用する際にはかならず間違いがないか、確認してから行うようにします。
使い方は様々ですが
postgres=# delete from meibo where user = 'yoshida'; DELETE 1
のように使用します。削除されているか確認
postgres=# select * from meibo; name | age | address --------+-----+--------------- yamada | 35 | iwate morioka
消えています。
今回はmeiboテーブルのnameで指定しましたが、別のカラムを指定することもできます。
また、
#delete from meibo;
と、where以下を抜かしてしまうと
postgres=# delete from meibo; DELETE 1 postgres=# select * from meibo; name | age | address ------+-----+--------- (0 rows)
meiboテーブルのすべての値が削除されてしまいます。
絶対にwhere句は記述して実行するようにします。
update文 †
データの変更、更新を行うコマンドです。
削除と同様に構文の抜けには注意して使用します。
使い方は
参考
http://www.asahi-net.or.jp/~aa4t-nngk/pgsql.html
http://www.spicy-islands.com/index.html
