Imshoo

独学で勉強しているプログラミングのメモ

PostgreSQLコマンドメモ

接続

postgresに接続

sudo su postgres  
psql -d postgres

ユーザー

ユーザー作成

with〇〇でパスワードの設定や権限の付与もできる

CREATE USER [ユーザー名] ;
CREATE USER [ユーザー名] with PASSWORD ' ' LOGIN;

ユーザー一覧表示

\du

ユーザー削除

drop user [ユーザー名] ;

権限

権限付与

権限は例えば
* SUPERUSER
* CREATEDB
* CREATEROLE
など。

alter role [ユーザー名] [権限名]

データベース

データベース一覧表示

lはLの小文字。

\l

データベース作成

create database [データベース名];

データベース削除

drop database [データベース名];

データベース接続

postgresユーザーになっているとき

 psql -d [データベース名] -U  [ユーザー名] -h localhost

postgresユーザーではない状態で直接DBに接続する場合はOS側のユーザー名、パスワードとDBに接続したいユーザー名、パスワードが一致していないといけないよう。

スキーマ

スキーマ一覧表示

\dn
\dn+ // アクセス権限付きで表示

スキーマ作成

create schema [スキーマ名];

スキーマ削除

  • cascade スキーマの中に含まれるテーブルごと削除
  • restrict スキーマの中にテーブルが存在している場合削除できない
    デフォルトはrestrict
drop schema [スキーマ名] [cascade  restrict];

テーブル

テーブル一覧表示

\dt [スキーマ名].*

テーブル定義とカラム情報表示

\d [スキーマ名].[テーブル名]

テーブル作成

create table [スキーマ名].[テーブル名] (カラム名 型);

テーブル削除

  • cascade ビューや外部キーごと削除
  • restrict ビューや外部キーが存在する場合削除できない
    デフォルトはrestrict
drop table [スキーマ名].[テーブル名] [cascade  restrict];

データ追加

全てのカラムにデータを追加する場合はカラム名を省略できる

insert into [スキーマ名].[テーブル名] ([カラム名] ...) values ([value] ...);
insert into [スキーマ名].[テーブル名] ([カラム名] ...) values ([value] ...), ([value] ...), ([value] ...);  // 複数追加

データ取得

全てのカラムのデータを取得する場合はカラム名を*にする

select [カラム名, ...] from [スキーマ名].[テーブル名];

データ更新

複数のカラムを更新する場合は[カラム名] = [value], [カラム名] = [value], ...と続ける。
最後にwhereを付けて条件に一致した行のみ更新とすることができる

update [スキーマ名].[テーブル名] set [カラム名] = [value] (where = );

データ削除

delete from [スキーマ名].[テーブル名];  // 指定したテーブルのデータを全て削除
delete from [スキーマ名].[テーブル] whrere [条件] // 条件指定で指定した行のみ削除もできる

その他

切断

\q

sqlファイル実行

DB接続後に下のコマンド

\i [file path]