2019年02月04日

order by をよく忘れる

asc もしくは指定なしのデフォ 昇順 (小さいものが先にくる)
desc 降順 (大きいものから先にくる)

複数条件の場合

order by 条件A,条件B

まず条件Aで並べて、同じ値のものを条件Bで並べる

って メモしたがまた忘れるんだろうなぁw

投稿者 muuming : 08:56

2018年08月06日

postgre timetamp to date

TO_DATE(TO_CHAR(column1, 'YYYY/MM/DD'),'YYYY/MM/DD')

一度文字になおしてそれをdate型に
ワタシ的にはこれがわかりやすい

投稿者 muuming : 14:35

2018年07月03日

postgres ユーザー周り 

ユーザー作成
root@pghost01:# su - postgres
postgres@pghost01:~$ createuser -D -E -R -S -P pguser01
createuser の引数の意味は以下の通りです:

-D : 新しいユーザに対してデータベースの作成を禁止
-E : データベースに格納するユーザのパスワードを暗号化
-R : 新しいユーザに対して新しいロールの作成を禁止
-S : 新しいユーザはスーパーユーザにはならない
-P : 新しいユーザのパスワードプロンプトを表示

もしくは
su - postgres
psql
create user myfrwk
パスワード設定
psql
\password username

現行ユーザー一覧
\du

これでパスワードつきのユーザー作成ができたわけだが、
pg_hba.conf次第では
local all all trust
とかなってれば、接続時にパスワード聞かれない。
local all all md5
とかにすればパスワード聞かれる。

さらに、接続先データベースをユーザーごとに制限したい場合もpg_hba.confで
local cakedb cakeuser md5
host cakedb cakeuser 127.0.0.1/32 md5
細かく指定すればok(再起動要るよ)

新規DB作成
-bash-4.2$ createdb mydb -E UTF8 --template=template0 --locale=ja_JP.UTF-8
psql
grant all on DATABASE mydb to myfrwk;


※権限削除は
REVOKE all on DATABASE mydb from myfrwk;

そのユーザーでつないでからの
psql -U myfrwk -d mydb;
テーブル作成

いつも忘れる

投稿者 muuming : 09:51

2018年06月30日

postgres ユーザー権限全部与え

GRANT ALL ON ALL TABLES IN SCHEMA public TO user1;

投稿者 muuming : 13:05

2018年05月30日

createdb sqlにて

create database pong encoding 'UTF-8' TEMPLATE template0 LC_COLLATE 'ja_JP.UTF-8' LC_CTYPE 'ja_JP.UTF-8';

投稿者 muuming : 12:32

2018年01月29日

postgres date型をlikeで

以前は

select * from table where date like '201-02%';

とか乱暴にしていたが、どうも最近動かないような?

select * from table where date <  (timestamp '2017-02-1' + '1 month' )  and  
date >= (timestamp '2017-02-1' )

で多分良いと思う。 多分・・・

投稿者 muuming : 15:34

2017年12月30日

postgres ユーザーまわり

createuser -D -E -R -S -P myuser

createdb mydb

GRANT 権限名 ON DATABASE データベース名 TO ユーザ名;
権限
 {{SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER}
  [,...] | ALL [PRIVILEGES]}

ユーザーの確認\du

投稿者 muuming : 11:28

2017年05月01日

更新系のテーブル構造

create table hoge(
id serial not null,
item_id serial not null,
item_editor_id int not null,
item_name text,
instime timestamp not null default now()
);

更新の場合はitem_id指定して、新規登録の場合はitem_idおまかせでinsert

insert into hoge("item_id","item_editor_id","item_name")values($item_id,$item_editor_id,'itemname');

insert into hoge("item_editor_id","item_name")values(,$item_editor_id,'itemname');

情報取得時はidが一番大きいものを取得

select * from hoge as a where id = (select id from hoge as s where s.item_id = a.item_id order by s.item_id desc limit 1);

 

ビューを作っておきましょう

create view items
-> as select item_id, item_name,instime from hoge as a
-> where id = (select id from hoge as s where s.item_id = a.item_id order by s.item_id desc limit 1);

投稿者 muuming : 08:31

2016年03月15日

あとから not null postgres

ALTER TABLE テーブル名 add カラム名 text;
update テーブル名 set カラム名 = '';
ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL;

列に新しいデフォルトを設定するには、以下のようなコマンドを使用します。

ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77;
デフォルト値を削除するには常に次のようにします。

ALTER TABLE products ALTER COLUMN price DROP DEFAULT;

投稿者 muuming : 11:32

2016年01月19日

カラム数年後

SELECT girls_uptime + (interval '1 years'*girls_age) from girls;

投稿者 muuming : 06:11

2012年10月19日

pg_dump データーなし

pg_dump -s データベース名

これでテーブル作成のcreate 文だけ吐き出される

投稿者 muuming : 10:13 | コメント (0)

2010年07月13日

postgresメンテ

vaccume -a -z
で削除したものを圧縮等やってくれる

んでもインデックスのサイズは変わらないらしい
データベースに接続後
SELECT pg_relation_size('item_pkey');
でインデックスサイズ取得可能

REINDEX TABLE テーブル名;
でそのテーブル関係のインデックスは小さくなる

投稿者 muuming : 13:22 | コメント (0)

2009年12月25日

postgres 検索実行時間を調べる

explain analyze
のあとにsqlを打って実行

投稿者 muuming : 16:51 | コメント (0)

2009年11月06日

3時間後

よーわすれるのでメモ


1日後
select now() + interval '1 day' as 1日後;


3時間後
select now() + interval '0.125 day' as 3時間後;


投稿者 muuming : 14:31 | コメント (0)

2009年10月02日

今から1年後 insert

now() + interval '@ 1 year'

投稿者 muuming : 16:52

2009年10月01日

postgres case文

よーわすれるのでメモ


$sql .= " CASE";
foreach($gift_corse as $t_key => $t_dat){
    $sql .=" WHEN gift_corse_id = ".$t_key." then '".$t_dat[0]."'";
}
$sql .= " END AS gift_corse_id,";

投稿者 muuming : 09:25 | コメント (0)

2009年09月30日

postgres date フォーマット

日付の整形 よーわすれるのでメモ

select to_char(item_instime, 'YYYY年MM月DD') as hoge from hogehoge;

投稿者 muuming : 13:42 | コメント (0)

2009年09月28日

serial型 今入ったの何ぼ?

nextval した後に今入ったのはなんぼかを調べる

$sql = "select currval('item_item_id_seq'::regclass) as nowseri";

投稿者 muuming : 13:40

2008年03月19日

sqlで日付を足す

select i + interval '1 day' from t2;
select TO_CHAR((todokeday+interval '7 days'),'YYYYMMDD') as raisyu from ・・・

投稿者 muuming : 11:56 | コメント (0)

2007年10月11日

postgresエスケープ

pg_escape_string

恥ずかしいので隠しとこ(゜▽゜)

pg_escape_string() は、データベースに挿入するための 文字列をエスケープします。
PostgreSQL フォーマットにエスケープされた 文字列を返します。
addslashes() の代わりにこの関数を 使用することを推奨します。
カラム型が bytea の場合は、代わりに pg_escape_bytea() を使用しなければなりません。

投稿者 matsu : 14:14 | コメント (0)

2006年12月19日

テーブルの追加など alter table

・列の追加
ALTER TABLE テーブル名 ADD [COLUMN] 列名 データ型 ;

・列を削除
ALTER TABLE テーブル名 DROP [COLUMN] 列名
[ RESTRICT | CASCADE ] ;

・テーブル制約の追加
ALTER TABLE テーブル名 ADD テーブル制約の定義 ;

・テーブル制約の削除
ALTER TABLE テーブル名 DROP CONSTRAINT テーブル制約の定義
[ RESTRICT | CASCADE ] ;

・デフォルト値の追加
ALTER TABLE テーブル名
ALTER [COLUMN] 列名 SET DEFAULT デフォルト値 ;

・デフォルト値の削除
ALTER TABLE テーブル名 ALTER [COLUMN] 列名 DROP DEFAULT ;

投稿者 muuming : 11:24 | コメント (0)

2006年03月27日

データの型

数値型
SMALLINT 又は INT2    -32768~32767
INTEGER 又は INT4     -2147483648~2147483647
BIGINT すごい大きい整数


文字データ
CHARACTER(長さ) 又は CHAR(長さ)      固定長 足りない部分は空白で埋める
CHARACTER VARYING(長さ) 又は VARCHAR(長さ) 可変長 
TEXT 文字長に制限無し

うう 先は長い

投稿者 muuming : 14:58 | コメント (0)

2005年11月11日

インサート文

insert into table名 (カラム,カラム,カラム) values ('値','値','値');

全部のカラムに値をいれるなら
insert into table名 values ('値','値','値'); と省略もできる

投稿者 muuming : 16:32 | コメント (0)

2005年11月07日

接続できない!ポートが開いてないぞ!

postgresインスコしたままでは外部向けポートが開いていない場合がありまっする。

そんなときは以下見てみよう
postgres.conf

#tcpip_socket = false

tcpip_socket = true

明示的にOPENしてあげないと外部からの接続は受け付けないもより。

接続場所の限定は pg_hba.conf

# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD

local all all trust
# IPv4-style local connections:
host all all 127.0.0.1 255.255.255.255 trust


ここらへんいじりませう。

投稿者 muuming : 12:40 | コメント (0)

2005年07月29日

initdb エンコード 

initdb するときに
initdb --encoding=EUC_JP --no-locale
とすると、基本文字コードが EUCに固定になるらしい。

うしろの--no-locale がよーわからんがw

投稿者 muuming : 19:45 | コメント (0)