ΠΠΎΡΠ»Π΅ Π΄Π²ΡΡ Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΉ Π»Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠ΅Π»ΠΈΠ· ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ Π‘Π£ΠΠ Firebird 5.0. Firebird ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΊΠΎΠ΄Π° Π‘Π£ΠΠ InterBase 6.0, ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ Π² 2000 Π³ΠΎΠ΄Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Borland. Firebird ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MPL ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΡ ANSI SQL, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ°ΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ ΡΡΠΈΠ³Π³Π΅ΡΡ, Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ. ΠΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ Π΄Π»Ρ Linux, Windows, macOS ΠΈ Android.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²Π°:
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. Π Π°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΡΠ±ΠΎΡΠΊΠ΅ ΠΌΡΡΠΎΡΠ° (Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ ΡΡΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ sweep), ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΠΉ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈΠ· Π½ΠΈΡ . gfix -sweep -parallel 4 dbname gbak -b -par 4 -user username -pass password dbname backupname
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΡΡΠΈΡΠ½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ. CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;
- Π Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ SELECT WITH LOCK, UPDATE ΠΈ DELETE ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ «SKIP LOCKED», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π·Π°ΠΏΠΈΡΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π²ΡΡΡΠ°Π²Π»Π΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΆΠ΄Π°ΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ΅ΠΉ).
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΠ Π΄ΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° (ODS — On-Disk-Structure) Π½Π° Π»Π΅ΡΡ (inline update) Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ· ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π»Π΅ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΠ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Firebird 4.0 (ODS 13.0) Π² ΡΠΎΡΠΌΠ°Ρ Firebird 5.0 (ODS 13.1).
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ SQL-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ (ΡΡΡΠ°ΡΠ΅Π²Π°ΡΡΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡΠΈΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ). Π Π°Π·ΠΌΠ΅Ρ ΠΊΡΡΠ° Π·Π°Π΄Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ MaxStatementCacheSize Π² firebird.conf.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ SQL ΠΈ PSQL, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΎ ΡΠΈΡΠ»Π΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π²ΡΡΠ²Π»ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ.
- Π Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ MERGE Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° «WHEN NOT MATCHED BY SOURCE», ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ Π·Π°ΠΏΠΈΡΡ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ΅Π»Π΅Π²ΠΎΠΌ Π½Π°Π±ΠΎΡΠ΅. MERGE INTO customers c USING new_customers nc ON (c.id = nc.id) WHEN MATCHED THEN UPDATE SET name = nc.name WHEN NOT MATCHED BY SOURCE THEN DELETE
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ RETURNING, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ DML-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ (ΡΠ°Π½Π΅Π΅ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠ»Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠ° «multiple rows in singleton select»).
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: UNICODE_CHAR Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ unicode-ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ, ΠΈ UNICODE_VAL Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°. Π ΡΡΠ½ΠΊΡΠΈΠΈ EXTRACT, FIRST_DAY ΠΈ LAST_DAY Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ QUARTER Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½ΠΎΠΌΠ΅ΡΠ° ΠΊΠ²Π°ΡΡΠ°Π»Π°.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ RDB$BLOB_UTIL Ρ ΠΏΠΎΠ΄Π±ΠΎΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ BLOB-Π°ΠΌΠΈ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ PSQL.
- Π£Π»ΡΡΡΠ΅Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΆΠ°ΡΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΡΡΡΠΈΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ . ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ Π΄Π»ΠΈΠ½Π½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ VARCHAR Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ UTF-8.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ ΠΊΡΡΡΠΎΡΠ°ΠΌΠΈ (scrollable) ΠΏΡΠΈ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΌ ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΠ.
- ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠ±ΠΎΠ².
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ»Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ SQL. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠΎΠΊΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·ΡΡΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ: select ‘ab’ /* comment */ ‘cd’ from RDB$DATABASE; select ‘ab’ ‘cd’ from RDB$DATABASE;
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru