32 слова | 1 минута

PostgreSQL

Выборка данных

# DISTINCT - без повторений
SELECT DISTINCT email * FROM users ORDER BY email;

# OFFSET - с определенной позиции
SELECT * FROM users OFFSET 10 LIMIT 100;

# FETCH - по аналогии с LIMIT
SELECT * FROM users OFFSET 10 FETCH FIRST 100 ROW ONLY;

# IN - в списке (позволяющий сократить запрос)
SELECT * FROM users WHERE id IN (1,2);

# BETWEEN - запрос значений в заданном диапазоне
SELECT * FROM users WHERE id BETWEEN 1 AND 100;

# LIKE - поиск (iLIKE для игнорирования прописных и заглавных букв)
SELECT * FROM users WHERE email LIKE '%test%';

# COALESCE - замена пустых значений на заранее заготовленные
SELECT COALESCE(email, 'nont found') FROM users;

# HAVING - условие наличия
SELECT email, COUNT(*) FROM users GROUP BY email HAVING COUNT(*) > 10;

Агрегаты и Базовая Арифметика

MIN, MAX, AVG, ROUND, SUM

Работа с Датой и Временем

NOW(), INTERVAL(1 YEAR), EXTRACT(YEAR FROM NOW()), AGE

ON CONFLICT DO

# при конфликте что то делать
INSERT INTO..... ON CONFLICT (id) DO NOTHING;

# при конфликте поменять email
INSERT INTO..... ON CONFLICT (id) DO UPDATE SET email = EXCLUDED.email;

RETURNING - Можем в одном запросе вернуть

INSERT INTO clients(name) VALUES('Denis') RETURNING id;
DELETE FROM customers RETURNING *;

Foreign key

Подробнее: https://postgrespro.ru/docs/postgrespro/10/tutorial-fk