Fonksiyonlar
Copy
CSV dosyasını tabloya yüklemek için şöyle yaparız.
Çö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.
String'den date döndürür. Şöyle yaparız.
Date'in belirtilen kısmını döndürür. Şöyle yaparız.
Şöyle yaparız.
HAVING yazısına taşıdım.
Insert Into
Şöyle yaparız.
String'den date döndürür. Şöyle yaparız.
Örnek
Elimizde şöyle bir tablo olsun
Like cümlelerini or'lamak yerine
Tarihin yıl alanını almak için şöyle yaparız.
Şöyle yaparız
Örnek
Trigger'ı tabloya eklemek için şöyle yaparız.
Şöyle yaparız
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)
DateString'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_truncDate'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);
HavingHAVING 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';
IntervalString'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 ToLike cümlelerini or'lamak yerine
WHERE state LIKE '%idle%' OR state LIKE '%disabled%'
Şöyle yaparızWHERE state SIMILAR TO '%(idle|disabled)%'
to_char metoduTarihin 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 $$ [...]
TriggerTrigger'ı 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