PostgreSQL kursi
Kuchli va ilg'or SQL database. JSONB, full-text search va murakkab so'rovlar.
O'rta · 64 ta dars · ~6 hafta
Mavzular: PostgreSQL asoslari, Advanced SQL, JSONB, Full-text Search, Window Functions, CTE, Partitioning, Replication, Performance Tuning, Extensions
Kirish va O'rnatish
- PostgreSQL nima? MySQL dan farqi, qachon PostgreSQL tanlash kerak
- O'rnatish — Windows, Mac, Linux, Docker bilan
- psql CLI va pgAdmin — asosiy ishlatish
- Ma'lumot turlari — INTEGER, SERIAL, TEXT, BOOLEAN, TIMESTAMP, UUID, ARRAY, JSONB
- Schema — nima, yaratish, search_path, public schema
DDL va DML
- Database yaratish — CREATE DATABASE, psql buyruqlari, \l, \c, \dt
- CREATE TABLE — constraints, PRIMARY KEY, FOREIGN KEY, CHECK
- ALTER TABLE, DROP — ustun qo'shish, o'zgartirish, o'chirish
- INSERT, SELECT — WHERE, AND, OR, BETWEEN, IN, LIKE, IS NULL
- UPDATE, DELETE — RETURNING, xavfli holatlar
- UPSERT — INSERT ON CONFLICT DO UPDATE / DO NOTHING
- Aggregate funksiyalar, GROUP BY, HAVING, FILTER
JOIN va Munosabatlar
- INNER, LEFT, RIGHT, FULL, CROSS, SELF JOIN
- One-to-Many — loyihalash va so'rovlar
- Many-to-Many — junction table, so'rovlar
- One-to-One — qachon kerak
Ilg'or SQL
- Subquery — WHERE, FROM, SELECT ichida, EXISTS
- CTE — WITH, rekursiv CTE, materialized CTE
- Window Functions — ROW_NUMBER, RANK, DENSE_RANK, NTILE
- Window Functions — SUM, AVG, LAG, LEAD, FIRST_VALUE, LAST_VALUE
- UNION, INTERSECT, EXCEPT
- LATERAL JOIN — nima, qachon kerak
PostgreSQL Maxsus Imkoniyatlari
- JSONB — saqlash, o'qish, yangilash, operatorlar
- JSONB — GIN index, so'rovlarni tezlashtirish
- ARRAY — yaratish, operatorlar, ANY, ALL, unnest
- Full-text Search — tsvector, tsquery, to_tsvector, plainto_tsquery
- Full-text Search — GIN index, ranking, highlight
- UUID — gen_random_uuid, uuid-ossp extension
- ENUM type — yaratish, ishlatish, o'zgartirish
- Generated Columns va Computed Values
Funksiyalar va Protseduralar
- Built-in funksiyalar — string, number, date, conditional
- PL/pgSQL — asoslar, o'zgaruvchilar, shartlar, sikllar
- Function yaratish — RETURNS, LANGUAGE, SECURITY DEFINER
- Stored Procedure — Function dan farqi, CALL
- Trigger — BEFORE, AFTER, INSTEAD OF, trigger funksiya
- VIEW va MATERIALIZED VIEW — farqi, REFRESH
Index va Performance
- Index turlari — B-tree, Hash, GIN, GiST, BRIN
- Composite Index, Partial Index, Covering Index
- EXPLAIN ANALYZE — query plan o'qish, Seq Scan vs Index Scan
- Query optimizatsiya — N+1, join strategiyalari, qoidalar
- VACUUM, ANALYZE, AUTOVACUUM — nima uchun kerak
- Connection Pool — PgBouncer, sozlash
- Table Partitioning — RANGE, LIST, HASH
Transaction va Concurrency
- Transaction — ACID, BEGIN, COMMIT, ROLLBACK, SAVEPOINT
- Isolation Levels — Read Committed, Repeatable Read, Serializable
- Locking — Row lock, Advisory lock, Deadlock
- MVCC — Multi-Version Concurrency Control, qanday ishlaydi
Ma'lumotlar Bazasini Loyihalash
- Normalizatsiya — 1NF, 2NF, 3NF, BCNF
- Denormalizatsiya — qachon va nima uchun
- ER Diagram — jadvallar va munosabatlarni loyihalash
- Naming Convention va Schema Design best practices
Xavfsizlik va Boshqaruv
- User, Role, GRANT, REVOKE — huquqlarni boshqarish
- Row Level Security — RLS, policy yaratish
- SQL Injection — qanday himoyalanish, parameterized query
- Backup va Restore — pg_dump, pg_restore, pg_basebackup
- Replication — Streaming Replication, asoslar
- Monitoring — pg_stat_activity, pg_stat_statements, slow queries
Extensions
- Extensions nima — CREATE EXTENSION, mashhur extensionlar
- PostGIS — geografik ma'lumotlar, location based queries
- pg_trgm — fuzzy search, ILIKE tezlashtirish
- TimescaleDB — time-series ma'lumotlar
PostgreSQL va Node.js
- Node.js — pg moduli, connection pool, CRUD
- Node.js — Transaction, xatolarni boshqarish
- Real loyiha — to'liq DB schema loyihalash va yozish