ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ PostgreSQL β Π»ΡΡΡΠΈΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π·Π½Π°Π½ΠΈΠΉ ΠΎ Π‘Π£ΠΠ. ΠΠΎ ΠΎΠ½Π° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ: Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΎΡΠΈΠ»ΠΈΡ 3024 ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎΡΠΌΠ°ΡΠ° Π4. ΠΠΏΡΡΠ½ΡΠΉ Π±ΡΠΊΠ΅Π½Π΄Π΅Ρ ΡΠΎΡΡΠ°Π²ΠΈΠ» ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΌΡΡ Π²Π°ΠΆΠ½ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΠΌΡ ΡΠ°ΠΌΠΎΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ Π·Π½Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ ΡΠ°Π±ΠΎΡΡ Ρ PostgreSQL. ΠΡΠ° ΠΏΠΎΠ΄Π±ΠΎΡΠΊΠ° ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²Π°ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄Π΅Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΈ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π‘Π£ΠΠ.
ΠΠΎΡΡ PostgreSQL ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΡΡΠ΄ΠΎΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°ΡΡ. ΠΠ²ΡΠΎΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° ΡΡΠ° ΡΡΠ°ΡΡΡ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°Π» ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ PostgreSQL: Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ NULL, ΡΠΎΠ½ΠΊΠΎΡΡΠΈ JSONB, ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π° psql.
ΠΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
Π‘ΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ Π² Π±Π°Π·Π΅. ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ°ΠΉΡ, Π³Π΄Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π½Π° ΠΏΠΎΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΡΠΎ-ΡΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ?
ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
- Π₯ΡΠ°Π½ΠΈΡΡ email ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΡΠΌΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
- ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Ρ ΠΎΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ email, ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΅Π³ΠΎ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΎΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ (Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ):
- Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Ρ ΠΈΡ Π΄Π°Π½Π½ΡΠΌΠΈ (Π²ΠΊΠ»ΡΡΠ°Ρ email).
- Π ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ).
- ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ email ΠΌΠ΅Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΎΡΡΡΡΠΏΠΈΡΡ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠΈΠΌΠ΅Ρ β Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΎΡΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠ°ΡΠΎΠ² ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° ΠΏΠ΅ΠΊΠ°ΡΠ½ΠΈ Π·Π° Π³ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ:
- ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ ΡΠΌΠ΅Π½ (ΡΡΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ).
- ΠΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ Π³ΠΎΡΠΎΠ²ΡΡ ΡΡΠΌΠΌΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ Π΅Π΅ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ (Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΡΡΡΡΠ΅Π΅).
ΠΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ β Π΄Π΅Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΡΠ΅Π½Ρ:
- ΠΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠΊ Π½Π΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ .
- Π£ΡΠ»ΠΎΠΆΠ½ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ Π½Π°ΠΈΠ·ΡΡΡΡ Π²ΡΠ΅ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΡΠΌΡ ΠΈΠ· ΡΡΠ΅Π±Π½ΠΈΠΊΠΎΠ², Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ: ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ Π²Π΅ΡΠΊΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ.
Π‘Π»Π΅Π΄ΡΠΉΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² PostgreSQL
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ PostgreSQL ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Β«ΠΠ΅ Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎΠ³ΠΎΒ» Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π²ΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ. ΠΠ΅ Π²ΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ½ΡΡΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ (ΠΈ ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ). ΠΠΎΡ Π³Π»Π°Π²Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ:
- ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ text. ΠΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°. ΠΠ΅ Π½ΡΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Π΅ β PostgreSQL ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΈΠΏ text Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄Π°Π½Π½ΡΡ .
- ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ timestamptz ΠΈΠ»ΠΈ time with time zone. ΠΡΠΈ ΡΠΈΠΏΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΡΠΎΠ²ΡΠ΅ ΠΏΠΎΡΡΠ°, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠ· ΡΠ°Π·Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·ΠΎΠ½ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠΌ Π½Π° Π»Π΅ΡΠ½Π΅Π΅/Π·ΠΈΠΌΠ½Π΅Π΅ Π²ΡΠ΅ΠΌΡ.
- ΠΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π² ΡΡΠΈΠ»Π΅ snake_case β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ, ΡΠ°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡΠΌΠΈ: user_profiles, payment_transactions, order_items ΠΈ Ρ. Π΄.
Π‘ΡΠ°ΡΡΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
Π£ΡΠΈΡΡΠ²Π°ΠΉΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ SQL
Π Π΅Π³ΠΈΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²
Π SQL ΡΠ΅Π³ΠΈΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’ΠΎ Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΠ΅Π±Π½ΠΈΠΊΠ°Ρ SQL-Π·Π°ΠΏΡΠΎΡΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π·Π°Π³Π»Π°Π²Π½ΡΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΡΡΠΎΡΠ½ΡΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ:
ΠΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΌ ΡΡΠΈΠ»Π΅ΠΌ:
ΠΡΠΎ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ PostgreSQL, Π½ΠΎ ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ SQL Π±Π°Π· Π΄Π°Π½Π½ΡΡ .
NULL Π² SQL
NULL Π² SQL ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ null/nil Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π SQL NULL Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ Β«Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β». NULL ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌΠΈ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ NULL = NULL Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ NULL (Π° Π½Π΅ true, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ SQL Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΡ, ΡΠ°Π²Π½Ρ Π»ΠΈ Π΄Π²Π° Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ).
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ NULL Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ NULL. Π§ΡΠΎΠ±Ρ Π²Π΅ΡΠ½ΡΡΡ true/false, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ:
x IS NULL Π²Π΅ΡΠ½Π΅Ρ true, Π΅ΡΠ»ΠΈ x ΡΡΠΎ NULL (false Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅) x IS NOT NULL Π²Π΅ΡΠ½Π΅Ρ true, Π΅ΡΠ»ΠΈ x ΡΡΠΎ Π½Π΅ NULL (false Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅) x IS NOT DISTINCT FROM y ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ =, Π½ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ NULL x IS DISTINCT FROM y ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ !=, Π½ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ NULL
ΠΠ°ΠΆΠ½o Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ WHERE Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ, Π³Π΄Π΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΡ Π·Π°ΠΏΡΠΎΡ ΠΠ Π²Π΅ΡΠ½Π΅Ρ ΡΡΡΠΎΠΊΠΈ, Π³Π΄Π΅ title ΡΠ°Π²Π΅Π½ NULL:
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ NULL != 'manager' Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ NULL, Π° Π½Π΅ true ΠΈΠ»ΠΈ false.
ΠΡΡΠ³Π°Ρ Π²Π°ΠΆΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ NULL β COALESCE. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π½Π΅-NULL Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ psql
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ psql Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ
ΠΠΎΠ³Π΄Π° Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π·Π°ΠΏΡΠΎΡ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π²ΡΠ²ΠΎΠ΄ ΡΠ°ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΡΠΌ. ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΠ΅ΠΉΠ΄ΠΆΠ΅Ρ. ΠΠ΅ΠΉΠ΄ΠΆΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ, ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Ρ Π΅Π³ΠΎ Π² ΠΎΠΊΠ½Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. less β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠ΅ΠΉΠ΄ΠΆΠ΅Ρ Π² Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ less ΠΊΠ°ΠΊ ΠΏΠ΅ΠΉΠ΄ΠΆΠ΅ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² Π²Π°Ρ ~/.bashrc ΠΈΠ»ΠΈ ~/.zshrc:
Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°
Π’Π°Π±Π»ΠΈΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Ρ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ \pset expanded ΠΈΠ»ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎ \x. Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΎΡ ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» ~/.psqlrc ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ \x. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ psql Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ NULL Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΡΠΌΠΈ
ΠΠΎΠ³Π΄Π° Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊ ΠΏΡΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΏΡΡΠ°Π½ΠΈΡΠ΅. Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ NULL-Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ psql:
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ ΡΡΡΠΎΠΊΡ, Π΄Π°ΠΆΠ΅ ΡΠΌΠΎΠ΄Π·ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ π» ΠΊΠ°ΠΊ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ NULL. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΉ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» .psqlrc Π² Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ~/.psqlrc ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² Π½Π΅Π³ΠΎ ΡΡΡΠΎΠΊΡ \pset null '[NULL]'.
ΠΠ²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
psql ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ. ΠΠ°ΡΠ½ΠΈΡΠ΅ Π²Π²ΠΎΠ΄ΠΈΡΡ SQL-ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ»ΠΈ ΠΈΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ, Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΡ Tab β psql Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ ΡΡΡΠΎΠΊΡ:
Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
Π psql Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ° \. ΠΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π±ΡΡΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΈΠ· Π½ΠΈΡ :
\? ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄. \d ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΡΠ°Π±Π»ΠΈΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ) Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΈΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°ΠΌΠΈ. \d+ Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ \d, Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. \d table_name ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ: ΡΠΏΠΈΡΠΎΠΊ ΡΡΠΎΠ»Π±ΡΠΎΠ² (Ρ ΠΈΡ ΡΠΈΠΏΠ°ΠΌΠΈ, Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΠΌΠΎΡΡΡΡ NULL ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠ»ΡΡΠΈ. \e ΠΡΠΊΡΡΠ²Π°Π΅Ρ Π²Π°Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΡ, ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ $EDITOR) Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ SQL-Π·Π°ΠΏΡΠΎΡΠ°. \h SQL_KEYWORD ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ SQL-ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, SELECT, INSERT) ΠΈ ΡΡΡΠ»ΠΊΡ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ΠΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ β Π»ΠΈΡΡ Π²Π΅ΡΡ ΡΡΠΊΠ° Π°ΠΉΡΠ±Π΅ΡΠ³Π°. Π psql Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ \?, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ.
ΠΠ°ΠΏΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π² CSV
Π PostgreSQL ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π² CSV-ΡΠ°ΠΉΠ»:
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΠ°ΠΉΠ»Π° Π±ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ ΡΠ°Π±Π»ΠΈΡΡ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΎΠΏΡΠΈΡ HEADER:
Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ
Π psql ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ (Π°Π»ΠΈΠ°ΡΡ) Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΈΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° AS ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ»Π±ΡΠ° Π² Π²ΡΠ²ΠΎΠ΄Π΅:
GROUP BY ΠΈ ORDER BY ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΡΠΎΠ»Π±ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΈ ΠΏΠΎ ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΠΎΠΌΡ Π½ΠΎΠΌΠ΅ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ SELECT. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡ ΠΆΠ΅ Π·Π°ΠΏΡΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅.
Π‘ΡΠ°ΡΡΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
ΠΠΎΡΠ΅ΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ
ΠΠ½Π΄Π΅ΠΊΡ β ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΡΠΊΠΎΡΡΡΡ ΠΏΠΎΠΈΡΠΊ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅. ΠΠ½Π° Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ Π±ΡΡΡΡΡΠΉ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΡΠΎΠΊΠ°ΠΌ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠΌ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΈΠ½Π΄Π΅ΠΊΡΠ° β B-Π΄Π΅ΡΠ΅Π²ΠΎ (B-tree), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ:
- ΠΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ (WHERE a = 3).
- ΠΠΎΠΈΡΠΊΠ° Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ (WHERE a > 5).
ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ:
- PostgreSQL ΡΠ°ΠΌΠ° ΡΠ΅ΡΠ°Π΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ. Π‘Π£ΠΠ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
- ΠΡΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π½ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ Π·Π°ΠΏΡΠΎΡΠ°, PostgreSQL ΠΏΡΠΎΡΡΠΎ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π° ΠΏΠΎΠ»Π΅ a Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ, Π΅ΡΠ»ΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ WHERE b = 3. Π ΡΠΎΠΌΡ ΠΆΠ΅, ΠΈΠ½Π΄Π΅ΠΊΡΡ Π½Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ ΡΠΈΠ»ΡΡΡΡΠ΅Ρ ΠΏΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΡΠΎΠΊ (Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΡΡΡΡΠ΅Π΅).
- ΠΠ½Π΄Π΅ΠΊΡ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΡΠΎΠΊ. ΠΡΠ»ΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΠΈΠ»ΠΈ ΡΠΎΡΠ΅Π½ ΡΡΡΠΎΠΊ, PostgreSQL ΡΠ°ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ B-Π΄Π΅ΡΠ΅Π²Π°) ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΡΡΠΎΠΊ ΠΏΠΎΠ΄ΡΡΠ΄.
- ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ»ΠΎΠ½Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ΅Π½: ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠ°ΠΏΡΠΎΡΡ, ΡΠΈΠ»ΡΡΡΡΡΡΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π²ΡΠΎΡΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ, ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ»ΠΎΠ½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π½ΠΎ Π΅Π³ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π½ΠΈΠΆΠ΅. ΠΠ»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ².
- Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΈΠΏΠ° B-tree, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΏΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡΡ LIKE 'prefix%'. ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΠΌ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ Ρ text_pattern_ops: CREATE INDEX CONCURRENTLY ON directories (path text_pattern_ops);
ΠΠΎΠ»Π³ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π½Π°Π²ΡΠ΅Π΄ΠΈΡΡ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° (ΠΈΠ»ΠΈ ΠΌΡΡΡΠ΅ΠΊΡ) ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ) Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΠ°ΡΠΈΡΡΡ. ΠΠ΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π²Π΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠ°ΠΆΠ΄Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π² PostgreSQL ΡΡΠ΅Π±ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (ΡΠ°Π±Π»ΠΈΡΡ, ΡΡΡΠΎΠΊΠΈ ΠΈ Ρ. Π΄.) Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠ²Π½Π΅ΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, ΠΎΡ ΠΌΠ΅Π½Π΅Π΅ Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΠΈΡ :
Π Π΅ΠΆΠΈΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΡΠΈΠΌΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ACCESS SHARE SELECT ROW SHARE SELECT ... FOR UPDATE ROW EXCLUSIVE UPDATE, DELETE, INSERT SHARE UPDATE EXCLUSIVE CREATE INDEX CONCURRENTLY SHARE CREATE INDEX (Π±Π΅Π· CONCURRENTLY) ACCESS EXCLUSIVE ALTER TABLE, DROP TABLE
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ (Π₯ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ)):
ΠΡΠΈΠΌΠ΅ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ:
ΠΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΡΠ»ΠΈ ΠΎΠ΄Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ALTER TABLE) ΡΡΠ΅Π±ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅. ΠΡΠΈΠΌΠ΅Ρ:
- ΠΠ»ΠΈΠ΅Π½Ρ 1 Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ SELECT (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΏΠ°Π½Π΅Π»Ρ Ρ ΠΎΡΡΠ΅ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎΠ»Π³ΠΎ ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ ).
- ΠΠ»ΠΈΠ΅Π½Ρ 2 Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ALTER TABLE, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ. ΠΡΠΎΡ Π·Π°ΠΏΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ SELECT ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° 1
- ΠΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² (SELECT, UPDATE ΠΈ Ρ. Π΄.) Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° Π·Π°Π²Π΅ΡΡΠ°ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ 1 ΠΈ 2.
ΠΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ:
ΠΡΠ»ΠΈ ALTER TABLE Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ°Π±Π»ΠΈΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, users), Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ°ΠΉΠΌΠ°ΡΡΠ°ΠΌ ΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ 503 Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ (ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠΉ). Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ BEGIN, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π»ΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ Π² Π΅Π΅ ΡΠ°ΠΌΠΊΠ°Ρ , Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ, ΠΏΠΎΠΊΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ COMMIT.
ΠΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²ΡΠ·Π²Π°Π² ROLLBACK. ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Π΄Π΅Π½Π΅Π³ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ΅ΡΠ°ΠΌΠΈ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π»ΠΈΠ±ΠΎ ΠΎΠ±Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ Π·Π°ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅) Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈΡΡ, Π»ΠΈΠ±ΠΎ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡ Π½ΠΈ ΠΎΠ΄Π½Π°.
ΠΠΎΠ³Π΄Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΊ Π΄Π°Π½Π½ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄ΠΎ Π΅Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ (COMMIT ΠΈΠ»ΠΈ ROLLBACK). ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΊΠ»ΠΈΠ΅Π½Ρ 1 ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ :
Π ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ 1 ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ backpacks, Π½ΠΎ Π½Π΅ Π·Π°Π²Π΅ΡΡΠΈΠ» ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° Ρ id = 2 ΠΎΡΡΠ°Π΅ΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ. ΠΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ 2 ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΡ ΡΡΡΠΎΠΊΡ:
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°Π²ΠΈΡΠ½Π΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°, ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ 1, ΠΌΠ΅ΡΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ DELETE.
π» ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°
ΠΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°Β»
ΠΡΡΠΎΡΠΎΠΆΠ½Π΅Π΅ Ρ JSONB
Π PostgreSQL ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ JSON-Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSONB, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΡΡΡΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ PostgreSQL ΡΡ ΠΎΠΆΠΈΠΌ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, MongoDB), Π½ΠΎ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠ΄Π½Π°ΠΊΠΎ Ρ JSONB Π΅ΡΡΡ ΡΠ²ΠΎΠΈ Π½ΡΠ°Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡΡΡ Π² ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
JSONB ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΎΠ±ΡΡΠ½ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ
PostgreSQL Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΏΠΎ JSONB-ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΊ JSONB Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π² 2000 ΡΠ°Π·.
Π‘Π°ΠΌΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π°
JSONB ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ Ρ Π²Π°Ρ Π½Π΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡ Π΅ΠΌΡ ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π²Π΅ΡΠ½Π΅Ρ Π·Π°ΠΏΡΠΎΡ. Π ΡΠ»ΡΡΠ°Π΅ Ρ JSONB ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΠΈ Π½Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈ camelCase ΠΈΠ»ΠΈ snake_case?
- Π₯ΡΠ°Π½ΡΡΡΡ Π»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ true/false, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΡΠΎΠΊΠΈ Π²ΡΠΎΠ΄Π΅ yes/maybe/no?
ΠΠ΅ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΠΏΠ°ΠΌΠΈ
ΠΠ°ΠΏΡΠΎΡΡ ΠΊ JSONB ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΌΠΈ ΠΈΠ·-Π·Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° backpacks Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΎΠΉ data ΡΠΈΠΏΠ° JSONB. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΡΡΠΊΠ·Π°ΠΊΠΈ Π±ΡΠ΅Π½Π΄Π° JanSport. ΠΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡ:
ΠΠΎ ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ:
ΠΡΠΈΡΠΈΠ½Π° Π² ΡΠΎΠΌ, ΡΡΠΎ PostgreSQL ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠ°Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (JanSport) Π±ΡΠ΄Π΅Ρ Π²Π°Π»ΠΈΠ΄Π½ΡΠΌ JSON-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ ΡΡΡΠΎΠΊΡ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ:
ΠΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ->> Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΠ°:
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΡΠΈ Π²Π°ΠΆΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- JSONB ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ°ΠΊ-ΡΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ.
- Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ NULL Π² SQL, null Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ JSONB β ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΈΡΠ»Ρ, ΡΡΡΠΎΠΊΠ΅ ΠΈΠ»ΠΈ Π±ΡΠ»Π΅Π²ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ null Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² JSONB Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 'null'::jsonb = 'null'::jsonb Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ TRUE, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π½ΠΎ ΡΠ°Π²Π½Ρ.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
PostgreSQL ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΎΠ±ΡΠΈΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π΅e ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΠΈ Π½ΡΠ°Π½ΡΠΎΠ², ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅: ΡΠΌΠ΅Π»ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ JSONB, Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ , Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΈΠ·Π±Π΅Π³Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π±Π°Π·Π΅ PostgreSQL Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌΠΈ.