24 Temmuz 2018 Salı

PostgreSQL

Fonksiyonlar
Copy
CSV dosyasını tabloya yüklemek için şöyle yaparız.
COPY Customer
FROM 'C:\Users\Public\Vaseis\Customer.txt' DELIMITER ',' CSV HEADER;
CURRENT_TIMESTAMP 
Çözünürlüğü mikrosaniye seviyesinde ancak timestamp değeri pek sık güncellenmiyor bu yüzden arka arkaya iki select aynı sonucu verebilir.

Örnek
Şöyle yaparız.
postgres=# select current_timestamp;
       current_timestamp       
-------------------------------
 2018-08-06 02:41:42.472163+02
(1 Zeile)

postgres=# select current_timestamp;
       current_timestamp       
-------------------------------
 2018-08-06 02:41:42.472163+02
(1 Zeile)
Date
String'den date döndürür. Şöyle yaparız.
UPDATE temp
   SET temp_date = temp_date - (date_trunc('year', temp_date ) - date '2016-1-1')
Date_trunc
Date'in belirtilen kısmını döndürür. Şöyle yaparız.
UPDATE temp
   SET temp_date = temp_date - (date_trunc('year', temp_date ) - date '2016-1-1')
Explain
Şöyle yaparız.
EXPLAIN ANALYZE
CREATE TABLE electrothingy
AS
  SELECT
    x::int AS id,
    (x::int % 20000)::int AS locid,  -- fake location ids in the range of 1-20000
    now() AS tsin,                   -- static timestmap
    97.5::numeric(5,2) AS temp,      -- static temp
    x::int AS usage                  -- usage the same as id not sure what we want here.
  FROM generate_series(1,1728000000) -- for 1.7 billion rows
    AS gs(x);
Having
HAVING yazısına taşıdım.

Insert Into
Şöyle yaparız.
INSERT INTO answer (userans, username)
  SELECT 'OptionA', username FROM answer WHERE username = 'Some Name';
Interval
String'den date döndürür. Şöyle yaparız.
UPDATE temp SET temp_date = temp_date - interval '2 years'
WHERE EXTRACT (YEAR FROM temp_date) = 2018;
Partition By 
Örnek
Elimizde şöyle bir tablo olsun
id integer | num integer
___________|_____________
1          | 4 
2          | 4
3          | 5
4          | 6
Gruplamak için şöyle yaparız.

SELECT id, COUNT(id) OVER(PARTITION BY num) from test;

id         | count
___________|_____________
1          | 2 
2          | 2
3          | 1
4          | 1
Similar To
Like cümlelerini or'lamak yerine
WHERE state LIKE '%idle%' OR state LIKE '%disabled%'
Şöyle yaparız
WHERE state SIMILAR TO '%(idle|disabled)%'
to_char metodu
Tarihin yıl alanını almak için şöyle yaparız.
select to_char(now(),'YYYY')
UNION ALL
Örnek
Elimizde şöyle bir tablo olsun.
| id  | ad1    | ad2   | ad3    |
| ----|--------| ------| -------|
| 1   |val_1   |NULL   | NULL   |
| 2   |val_2   |val_1  | NULL   |
| 3   |val_3   |NULL   | val_3  |
Tüm sütunlardaki değerleri saymak için şöyle yaparız.
select t.value, count(*)
from (
   select ad1 value from ad_convention
   union all
   select ad2 value from ad_convention
   union all
   select ad3 value from ad_convention
) t
group by t.value
Çıktı olarak şunu alırız.
| value   | times |
| --------| ------|
| val_1   | 2     |
| val_2   | 1     |
| val_3   | 2     |
Sequence
Şöyle yaparız
CREATE SEQUENCE seq_abcd
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE public.seq_abcd OWNER TO USER_APP;
Stored Procedure
Örnek
Şöyle yaparız.
CREATE OR REPLACE FUNCTION public.getinformations (
  IN stateId integer,
  IN dateStart timestamp,
  IN dateEnd timestamp
)
  RETURNS SETOF DECLAREDTYPE
LANGUAGE plpgsql
AS $$ [...]
Trigger
Trigger'ı tabloya eklemek için şöyle yaparız.
CREATE TRIGGER mytrigger_name AFTER UPDATE ON mytable_name
 FOR EACH ROW EXECUTE PROCEDURE mytrigger();
Örnek
Şöyle yaparız
CREATE OR REPLACE FUNCTION prevent_deletion() 
RETURNS trigger AS $$
BEGIN
  IF current_user != 'user1' THEN
    RAISE EXCEPTION 'You cannot delete records from this table!';
  END IF;  
  RETURN OLD;
END;
$$ LANGUAGE plpgsql;
Örnek
Şöyle yaparız.
CREATE OR REPLACE FUNCTION table_update_notify() RETURNS trigger AS $$
DECLARE
  id bigint;
BEGIN
  IF TG_OP = 'INSERT' THEN
    id = NEW.id;
  ELSE
    id = OLD.id;
  END IF;
  PERFORM pg_notify('my_trigger_name',
    json_build_object('table', TG_TABLE_NAME, 'id', id, 'type', TG_OP)::text);
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;




Hiç yorum yok:

Yorum Gönder