28 Mart 2021 Pazar

NOW() metodu

Giriş
MySQL için açıklaması şöyle
The time returned by NOW(), and other date time functions, is derived from the start time of the query. 
Açıklaması şöyle
Default Timestamps
It is always better to have the two timestamptz fields created_at and updated_at columns with default now() .... Storing what time a record was created or modified would be very useful in the future when going over some analytics or reporting. Audit logs might be required and timestamps are key.
Örnek
Görmek için şöyle yaparız. Burada sleep() olmasına rağmen now() tek select için aynı sonucu veriyor.
MariaDB [test]> select now(),sleep(10),now();
+---------------------+-----------+---------------------+
| now()               | sleep(10) | now()               |
+---------------------+-----------+---------------------+
| 2021-03-22 14:17:05 |         0 | 2021-03-22 14:17:05 |
+---------------------+-----------+---------------------+

23 Mart 2021 Salı

FULL OUTER JOIN - İki Tablonun Union'ı Gibidir

Giriş
Join tiplerini görsel olarak gösteren resimler burada.
Şeklen şöyle
Bir başka şekil şöyle


İki çeşit FULL OUTER JOIN var.
1.  FULL OUTER JOIN
2.  FULL OUTER JOIN (IF NULL)

Not : Bazı veri tabanları Full Outer Join'i desteklemez. Örneğin MySQL. Açıklaması şöyle
Unlike SQL Server, MySQL does not have a distinct JOIN type for FULL OUTER JOIN. You may, however, combine LEFT OUTER JOIN and RIGHT OUTER JOIN to get the same effects as FULL OUTER JOIN.
Bu durumda şöyle yaparız
SELECT *  FROM tableA 
LEFT JOIN tableB 
  ON tableA.id = tableB.id

UNION

SELECT * FROM tableA
RIGHT JOIN tableB 
  ON tableA.id = tableB.id

1.  FULL OUTER JOIN
Örnek
Şöyle yaparız
SELECT FROM tableA a FULL OUTER JOIN tableB b ON a.key = b.key
Örnek
Şöyle yaparız
-- Retrieve all employees and department names, including those -- without a department and departments without employees SELECT employees.employee_name, departments.department_name FROM employees FULL JOIN departments ON employees.department_id = departments.department_id;
2. RIGHT JOIN (IF NULL)
İki tablonun kesişimi olmayan satırları gösterir.
Örnek
Şöyle yaparız
SELECT FROM tableA a FULL OUTER JOIN tableB b on a.key = b.key
WHERE a.key IS NULL OR b.key IS NULL


RIGTH JOIN - İki Tablonun Kesişimi Yoksa Soldaki Satırı Null Döner

Giriş
Join tiplerini görsel olarak gösteren resimler burada.
Şeklen şöyle
İki çeşit RIGHT JOIN var.
1. RIGHT JOIN
2. RIGHT JOIN (IF NULL)

1. RIGHT JOIN
Sağdaki tablonun tamamını ve soldaki tablonun kesişimini verir. Dolayısıyla sağdaki tablo ile kesişimi olmayan satırlar için bazı sütunlar null gelir.

Örnek
Şöyle yaparız
SELECT from tableA A RIGHT JOIN tableB B on A.key = B.key
2. RIGHT JOIN (IF NULL)
Örnek
Şöyle yaparız
SELECT from tableA A RIGHT JOIN tableB B on A.key = B.key WhERE A.key is NULL


9 Mart 2021 Salı

Sütun Tipleri - Array

Giriş
Oracle'daki VARARRAY tipi gibidir.

Örnek
Şöyle yaparız.
CREATE TABLE event (
  id INT8 NOT NULL,
  version INT4,
  sensor_names TEXT[],
  sensor_values INTEGER[],
  PRIMARY KEY (id)
)
Örnek
Şöyle yaparız
CREATE TABLE product (
  id        BIGINT,
  images    TEXT[]
)
INSERT INTO product(id, images) VALUES (1, '{"url1", "url2", "url3"}');

SELECT * FROM product WHERE images @> ARRAY['url2']

7 Mart 2021 Pazar

pg_sleep metodu

Örnek
Şöyle yaparız
select 1 from t_book where (select pg_sleep(1)) is not null limit 3;