π Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π² SQL: Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ ΠΈ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΠΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
SQL, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π² PostgreSQL, Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄ΡΡ ΠΎΡΠ²Π΅ΡΠ΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ:
- ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ;
- ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ Ρ
ΡΠ°Π½ΠΈΠΌΡΠΌΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌΠΈ;
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Ρ
ΡΠ°Π½ΠΈΠΌΡΡ
ΠΏΡΠΎΡΠ΅Π΄ΡΡ;
- ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Ρ
ΡΠ°Π½ΠΈΠΌΡΡ
ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π² SQL, ΠΊΠ°ΠΊ ΠΈ Π² Π»ΡΠ±ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΡ. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², Ρ ΡΠ°Π½ΡΡΠΈΡ ΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π°. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΡ , ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·. Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ, ΡΠΎ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌ.
ΠΠ΅ΠΆΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠΌΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌΠΈ Π² PostgreSQL Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ. ΠΠ½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅.
Π€ΡΠ½ΠΊΡΠΈΠΈ | Π₯ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ |
Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | Π₯ΡΠ°Π½ΠΈΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ |
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DML (insert, update, delete) Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π ΡΡΠ½ΠΊΡΠΈΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ SELECT-Π·Π°ΠΏΡΠΎΡΡ | ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DML-Π·Π°ΠΏΡΠΎΡΠΎΠ² (insert, update, delete) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅. |
Π€ΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² | Π₯ΡΠ°Π½ΠΈΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΈ Π²Ρ ΠΎΠ΄Π½ΡΠ΅, ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ |
ΠΡΠ·ΠΎΠ² Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ | ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΆΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ |
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π½ΡΡΡΠΈ SELECT Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ |
ΠΡΠ·ΠΎΠ² Ρ
ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈΠ· SELECT Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ |
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² PostgreSQL. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ:
create [or replace] function ΠΈΠΌΡ_ΡΡΠ½ΠΊΡΠΈΠΈ
β ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ;returns return_type
β ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ;- ΡΠ·ΡΠΊ plpgsql β ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ PostgreSQL;
- Π²Π½ΡΡΡΠΈ Π·Π½Π°ΠΊΠ°
$
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ; declare
β ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅;- Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°
[begin β end]
β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ; begin
β ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π½Π°ΡΠ°Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ²;end
β ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΡΠ°ΠΌΠΎΠΉ Π΄ΠΎΡΠΎΠ³ΠΎΠΉ ΠΏΠΎΠΊΡΠΏΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ:
Declare itemCost integer
β ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ;SELECT max(cost) INTO itemCost
β ΠΊΠ°ΠΊ ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ itemCost;RETURN itemCost
β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ
ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅, ΠΏΠΎΡΡΠΈ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ β Π² Π½Π΅ΠΉ Π½Π΅Ρ return
. ΠΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ β transfer()
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
β sourceAccountId
, destinationAccountId
, ΡΡΠΌΠΌΠ°. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΡΡΠΈΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΡΡΠΌΠΌΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ account
ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΅Π΅ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ account
.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π²ΡΠ΅ ΡΡΠΎ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ PostgreSQL (Π²Π΅ΡΡΠΈΡ 13.2) Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ PostgreSQL Ρ ΠΏΠΎΠΌΠΎΡΡΡ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ PostgreSQL Π² Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» docker-compose.yaml
, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΡ users
ΠΈ purchases
ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΈΡ
. ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ users
Π΅ΡΡΡ ΡΡΠΈ ΡΡΠΎΠ»Π±ΡΠ° β id
, name
ΠΈ profession
; ΡΠ°Π±Π»ΠΈΡΠ° profession
ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ
ΡΡΠΎΠ»Π±ΡΠΎΠ² β id
, name
, cost
ΠΈ user_id
.
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π΅Π³ΠΎ ΡΠ°ΠΌΡΠ΅ Π΄ΠΎΡΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠΊΡΠΏΠΊΠΈ. ΠΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅ΡΠ½ΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π²ΡΡΠ΅.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°ΠΌ Π·Π°ΠΏΡΠΎΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π§ΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ β Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π§ΡΠΎΠ±Ρ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
Π·Π°ΠΏΡΠΎΡΠ°Ρ
select
. Π‘ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π·Π°ΠΏΡΠΎΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠΎΡΠ΅ ΠΈ ΡΠΎΡΠ½Π΅Π΅, ΡΡΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡΡ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌΠΈ ΠΈ ΠΏΡΠΎΡΡΡΠΌΠΈ.
ΠΠ°ΠΊ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, Ρ
ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Select-Π·Π°ΠΏΡΠΎΡΡ, Π° Ρ
ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Insert
, Update
, Delete
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π₯ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΡΠ»ΡΡΠ°ΡΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ insert
, update
ΠΈΠ»ΠΈ delete
.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ β ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π΅Π½ΡΠ³ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΡΡΡ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ. Π§ΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Ρ
ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ β transfer()
, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΡ accounts
ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π΅.
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄.
ΠΠ»Ρ Π²ΡΠ·ΠΎΠ²Π° Ρ
ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ β call procedure_name()
.
Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠ»ΠΎΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π΄Π΅Π½Π΅Π³ β 500 Π΅Π΄ΠΈΠ½ΠΈΡ Ρ account.id = 3
Π½Π° account.id = 4
ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ:
- ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡ ΡΠ°Π·Π½ΠΈΡΡ;
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ;
- ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
;
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
- π Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ SQL Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ . Π§Π°ΡΡΡ 1: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΠ°Π±Π»ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ
- π ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ SQL-ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π·Π°ΠΏΡΠΎΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ
- ποΈ ΠΡΡΡΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π Π‘Π£ΠΠ: ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ ΡΡΠΎΠ²Π½ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ