とらりもんHOME  Index  Search  Changes  Login

とらりもん - PostgreSQL Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

* 最初はpostgresというユーザーでしか使えない。
$ sudo su postgres
$ psql
=> \l   (テーブル表示)
=> \q   (終了)

* 文の終わりはセミコロン
=> select now();
;を忘れるとエラーも何も出ずにプロンプトが戻る。

* pgadmin3というGUIを使うのが便利!

!インストール (Ubuntu 14.04)
$ sudo apt-get install postgresql pgadmin3

!データベース作成
$ psql -l       (現在あるデータベースの一覧)
$ createdb blogapp    (新規作成)
$ psql blogapp    (新規作成したデータベースに入る)
$ pg_dump blogapp  (データベースのダンプ)
$ dropdb blogapp  (データベースの削除)

* テーブル操作
=> create table posts (title varchar(255), body text);    テーブル新規作成
=> \d       (テーブルもテーブルでないものも全部表示)
=> \dt            (テーブルのリストを表示)
=> \d users    (usersというテーブルの構造を表示)
=> alter table posts rename to myposts;    (テーブル名の変更)
=> drop table myposts;    テーブル削除
=> \i create.sql     (ファイルからSQLコマンドを読み込んで実行)

* SQL文
コメント
--
/*  */

* データ型
** integer(int), real, serial
** char(5)  固定長
** varchar(255) 可変長
** text  上限なし
** boolean TRUE FALSE t f
** date, time, timestamp (日時)

* ライン(レコード)の挿入
=> insert into posts (title, body) values ('title1', 'body11111');
=> select * from posts;

* レコード表示
=> select * from foo;
=> \x    拡張表示 (もういちど\xやると元に戻る)
=> select * from foo;
=> select * from foo where score > 5;
=> select * from foo where name = '@txt';    @は任意の文字列, _は任意の1文字
=> select * from foo order by score;
=> select * from foo order by score desc;
=> select * from foo order by score, team;

* レコード修正
=> update users set score = 5.8 where name = 'taguchi'

* レコード削除
=> delete from users where score < 3.0;

* フィールドの追加
=> alter table users add fullname varchar(255);

* フィールドの削除
=> alter table users drop fullname

* 複数のテーブルをつないで参照
=> select u.name, p.title from users u, posts p  where u.id = p.user_id and u.id=1;

!ビュー
SQL文につけるエイリアスみたいなもの。
=> create view aaa as
-> select u.name, p.title from users u, posts p  where u.id = p.user_id and u.id=1;
=> \dv
=> select * from aaa;
=> drop view aaa;

!トランザクション
=> begin;
...
=> commit;    
=> rollback;    (キャンセルする時)

!GUIのフロントエンド"pgadmin"を使う!

* PostgreSQLの管理者権限になってPostgreSQLを起動し, ユーザー(role)を新規作成し, そのパスワードを設定し, そのユーザーの所有するデータベースを新規作成。
$ sudo su postgres
$ psql
postgres=# create role nishida SUPERUSER LOGIN CREATEDB CREATEROLE;
postgres=# alter role nishida with password '****';
postgres=# create database testdatabase with owner nishida TEMPLATE template0 encoding 'UTF8';
postgres=#  (CTRL-D)

* うまく新規ユーザーと新規データベースができていてログイン可能かどうかをチェックする
$ psql testdatabase nishida -h localhost
Password for user nishida: 1234
testdatabase=#
testdatabase=#  (CTRL-D)

* その新規ユーザーでその新規データベースに, pgadmin3で接続する。
(postgres以外の一般ユーザーで)
$ sudo pgadmin3
画面左上のプラグの絵のアイコンをクリック
名前 test (何でも良い)
ホスト localhost
Port  5432
サービス
DBメンテナンス testdatabase
ユーザ名 nishida
パスワード ****
パスワード保存 レ