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() を使用しなければなりません。
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