Π ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ ΡΠ°Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π±ΡΡΠ·ΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π±Π΅Π· ΠΏΡΠΎΠΌΡΠ½Π° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ°. ΠΠΎΠ΄ΠΎΠ±Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π±ΡΠ΄Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π° Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ Π‘Π£ΠΠ (ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Oracle ΠΈ Microsoft SQL Server). Π ΠΊΡΠ°Ρ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ°, ΡΠ΅ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡ
Π°, ΠΌΠ΅ΠΊΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, Π½Π΅ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ΅.
ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠ°ΠΊΡΠΎ ΠΈ ΠΏΡΠ΅Π΄ΠΈ, Π·Π° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΈ. ΠΠ° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π²Π½Π΅Π΄ΡΠΈΠΌ Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ Π²ΡΡΠ½Π΅ ΡΠΏΠΈΡΡΠΊ Ρ ΠΎΡΠ΄Π΅Π»ΠΈ Ρ Π±ΡΠΎΡ Π½Π° ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈΡΠ΅ Π² ΡΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ° ΠΈΠΌ Π·Π°ΠΏΠ»Π°ΡΠ°.
ΠΡΠ² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
CLASS Department βΠΡΠ΄Π΅Π»β;
name βΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅β = DATA STRING[100] (Department);
CLASS Employee βΠ‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊβ;
department βΠΡΠ΄Π΅Π»β = DATA Department (Employee);
salary βΠΠ°ΡΠΏΠ»Π°ΡΠ°β = DATA NUMERIC[10,2] (Employee);
countEmployees βΠΠΎΠ»-Π²ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ²β (Department d) =
GROUP SUM 1 IF department(Employee e) = d;
salarySum βΠ‘ΡΠΌΠΌΠ°ΡΠ½Π°Ρ Π·Π°ΡΠΏΠ»Π°ΡΠ°β (Department d) =
GROUP SUM salary(Employee e) IF department(e) = d;
SELECT name(Department d), countEmployees(d), salarySum(d);
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ Π·Π°ΡΠ²ΠΊΠ° Π²ΡΠ² Π²ΡΡΠΊΠ° Π‘Π£ΠΠ ΡΠ΅ Π±ΡΠ΄Π΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° Π½Π° O(Π±ΡΠΎΠΉ ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈ)Π·Π°ΡΠΎΡΠΎ ΡΠΎΠ²Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ° ΡΡΡ ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈΠΌ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΠΈ. Π©Π΅ ΠΈΠΌΠ° ΠΈ Π½ΡΠΊΠΎΠΈ ΠΌΠ°Π»ΠΊΠΈ (Π½ΠΈΠ΅ Π²ΡΡΠ²Π°ΠΌΠ΅, ΡΠ΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΎΡΠ΄Π΅Π»ΠΈ) Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΈΠ·Π±ΡΠ°Π½ΠΈΡ ΠΏΠ»Π°Π½ O (ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ Π±ΡΠΎΠΉ ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈ) ΠΈΠ»ΠΈ O (Π±ΡΠΎΠΉ ΠΎΡΠ΄Π΅Π»ΠΈ) Π·Π° Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ°ΠΊΠ° Π½Π°ΡΠ°ΡΡΠΊ.
Π―ΡΠ½ΠΎ Π΅, ΡΠ΅ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ Π‘Π£ΠΠ, Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎ Π½ΠΈΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½.
Π ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½Π°ΡΠ° Π‘Π£ΠΠ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΅Π΄Π½Π° ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΡΠ΄Π΅Π»Π° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ JOIN Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π½Π° ΠΎΡΠ΄Π΅Π»Π°, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ ΠΈΠΌΠ΅ΡΠΎ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π·Π° Π²ΡΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΌΠ°ΡΠΊΠ΅Ρ MATERIALIZED. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅ Π·Π° Π²ΡΡΠΊΠ° ΡΠ°ΠΊΠ°Π²Π° ΡΡΠ½ΠΊΡΠΈΡ. ΠΠΎΠ³Π°ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠΎΠ»Π΅ΡΠΎ ΡΡΡΠΎ ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΡΡΠ°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ. ΠΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅.
ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ, Π°ΠΊΠΎ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ MATERIALIZED Π·Π° ΡΡΠ½ΠΊΡΠΈΠΈ countEmployees ΠΈ Π·Π°ΠΏΠ»Π°ΡΠ°Sum, ΡΠΎΠ³Π°Π²Π° ΠΊΡΠΌ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΡΡΡ ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΠΎΡΠ΄Π΅Π»ΠΈΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π΄Π²Π΅ ΠΏΠΎΠ»Π΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π±ΡΠΎΡ Π½Π° ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΈ ΠΎΠ±ΡΠ°ΡΠ° ΠΈΠΌ Π·Π°ΠΏΠ»Π°ΡΠ°. ΠΠΈΠ½Π°Π³ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π² ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈΡΠ΅, ΡΠ΅Ρ Π½ΠΈΡΠ΅ Π·Π°ΠΏΠ»Π°ΡΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ ΠΊΡΠΌ ΠΎΡΠ΄Π΅Π», ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΠΎΠ»Π΅ΡΠ°. ΠΠΎΡΠ½Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΡΠ΅ ΠΈΠΌΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅Π·ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½Π° Π² O (Π±ΡΠΎΠΉ ΠΎΡΠ΄Π΅Π»ΠΈ).
ΠΠ°ΠΊΠ²ΠΈ ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ°? Π‘Π°ΠΌΠΎ Π΅Π΄Π½ΠΎ Π½Π΅ΡΠΎ: ΡΠ°ΠΊΠ°Π²Π° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΠΊΡΠ°Π΅Π½ Π±ΡΠΎΠΉ Π²Ρ ΠΎΠ΄Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° Π½Π΅ΠΉΠ½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ. Π ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ ΡΠ°Π±Π»ΠΈΡΠ°, ΠΊΠΎΡΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΡΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΡΠ°Π±Π»ΠΈΡΠ° Ρ Π±Π΅Π·ΠΊΡΠ°Π΅Π½ Π±ΡΠΎΠΉ ΡΠ΅Π΄ΠΎΠ²Π΅.
ΠΡΠΈΠΌΠ΅Ρ:
employeesCount βΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² Ρ Π·Π°ΡΠΏΠ»Π°ΡΠΎΠΉ > Nβ (Department d, NUMERIC[10,2] N) =
GROUP SUM salary(Employee e) IF department(e) = d AND salary(e) > N;
Π’Π°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° Π·Π° Π±Π΅Π·ΠΊΡΠ°Π΅Π½ Π±ΡΠΎΠΉ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° N (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΡΠΊΠ° ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ°). Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΠΠ’ΠΠ ΠΠΠΠΠΠΠ ΠΠΠ Π²ΡΡΡ Ρ Π½Π΅Π³ΠΎ. Π’Π°ΠΊΠ° ΡΠ΅ ΡΠΎΠ²Π° Π΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, Π° Π½Π΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎ (ΡΠΎΠ΅ΡΡ Π½Π΅ Π·Π°ΡΠΎΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ°Ρ ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ). ΠΠ½Π°ΡΠ΅ Π½ΡΠΌΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π³ΡΡΠΏΠΈΡΠ°Π½Π΅, ΡΠΎΡΡΠΈΡΠ°Π½Π΅, Π ΠΈ ΠΠΠ, PARTITION, ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΈ Ρ.Π½.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΠΏΡΠΎΠ±Π»Π΅ΠΌ 2.2 ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° ΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ MATERIALIZED ΠΈ Π½Π° Π΄Π²Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
bought 'ΠΡΠΏΠΈΠ»' (Customer c, Product p, INTEGER y) =
GROUP SUM sum(Detail d) IF
customer(order(d)) = c AND
product(d) = p AND
extractYear(date(order(d))) = y MATERIALIZED;
rating 'Π Π΅ΠΉΡΠΈΠ½Π³' (Customer c, Product p, INTEGER y) =
PARTITION SUM 1 ORDER DESC bought(c, p, y), p BY c, y MATERIALIZED;
SELECT contactName(Customer c), name(Product p) WHERE rating(c, p, 1997) < 3;
Π‘Π°ΠΌΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π΅Π΄Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° Ρ ΡΠΈΠΏΠΎΠ²ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ, ΠΡΠΎΠ΄ΡΠΊΡ ΠΈ ΠΠΠ’ΠΠΠͺΠ , ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ Π΄Π²Π΅ ΠΏΠΎΠ»Π΅ΡΠ° ΠΊΡΠΌ Π½Π΅Π³ΠΎ ΠΈ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ° Π² ΡΡΡ Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΡΡ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈ, Π° ΠΏΠΎ-ΡΠΊΠΎΡΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ΠΈ ΠΎΡ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ°.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΠ·ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π° ΡΠ΅ ΠΎΡΡΡΠ²Π΅ΡΠ΅ ΠΎΡ ΡΠ΅ΠΊΡΡΡΠΈΠΈΡΠ΅ (CTE) Π² Π·Π°ΡΠ²ΠΊΠΈΡΠ΅. ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ, ΠΏΠΎΠΌΠΈΡΠ»Π΅ΡΠ΅ Π·Π° Π³ΡΡΠΏΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ Π΄ΡΡΠ²ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π²ΡΡΠ·ΠΊΠ°ΡΠ° Π΄Π΅ΡΠ΅/ΡΠΎΠ΄ΠΈΡΠ΅Π» (Π²ΡΡΠΊΠ° Π³ΡΡΠΏΠ° ΠΈΠΌΠ° Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ ΡΠ²ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»):
parent = DATA Group (Group);
ΠΡΠ² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°, ΠΊΠ°ΠΊΡΠΎ ΡΠ»Π΅Π΄Π²Π°:
level (Group child, Group parent) = RECURSION 1l IF child IS Group AND parent == child
STEP 2l IF parent == parent($parent);
isParent (Group child, Group parent) = TRUE IF level(child, parent) MATERIALIZED;
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π·Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π΅Π ΠΎΠ΄ΠΈΡΠ΅Π» Π΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π°Π½ΠΎ ΠΠΠ’ΠΠ ΠΠΠΠΠΠΠ ΠΠ, ΡΠΎΠ³Π°Π²Π° Π·Π° Π½Π΅Π³ΠΎ ΡΠ΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΡΠ°Π±Π»ΠΈΡΠ° Ρ Π΄Π²Π° ΠΊΠ»ΡΡΠ° (Π³ΡΡΠΏΠΈ), Π² ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ»Π΅ΡΠΎ Π΅Π ΠΎΠ΄ΠΈΡΠ΅Π» ΡΠ΅ Π±ΡΠ΄Π΅ Π²ΡΡΠ½ΠΎ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΠΏΡΡΠ²ΠΈΡΡ ΠΊΠ»ΡΡ Π΅ Π΄Π΅ΡΠ΅ Π½Π° Π²ΡΠΎΡΠΈΡ. ΠΡΠΎΡΡ Π½Π° Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΡΠ°Π·ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ°Π²Π΅Π½ Π½Π° Π±ΡΠΎΡ Π½Π° Π³ΡΡΠΏΠΈΡΠ΅, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ ΠΏΠΎ ΡΡΠ΅Π΄Π½Π°ΡΠ° Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π° Π½Π° Π΄ΡΡΠ²ΠΎΡΠΎ. ΠΠΊΠΎ ΡΡΡΠ±Π²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° ΠΏΡΠ΅Π±ΡΠΎΠΈΡΠ΅ Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΠΎΠΌΡΠΈΡΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π³ΡΡΠΏΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ:
childrenCount (Group g) = GROUP SUM 1 IF isParent(Group child, g);
ΠΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° CTE Π² SQL Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠΎΡΡΠΎ GROUP BY.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΠ·ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π΄Π΅Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
CLASS Order 'ΠΠ°ΠΊΠ°Π·';
date 'ΠΠ°ΡΠ°' = DATA DATE (Order);
CLASS OrderDetail 'Π‘ΡΡΠΎΠΊΠ° Π·Π°ΠΊΠ°Π·Π°';
order 'ΠΠ°ΠΊΠ°Π·' = DATA Order (OrderDetail);
date 'ΠΠ°ΡΠ°' (OrderDetail d) = date(order(d)) MATERIALIZED INDEXED;
ΠΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π΄Π°ΡΠ° Π·Π° ΡΠ΅Π΄Π° Π·Π° ΠΏΠΎΡΡΡΠΊΠ°, ΠΏΠΎΠ»Π΅ΡΠΎ, Π·Π° ΠΊΠΎΠ΅ΡΠΎ ΠΈΠΌΠ° ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ΠΎ ΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Ρ ΡΠ΅Π΄ΠΎΠ²Π΅ Π·Π° ΠΏΠΎΡΡΡΠΊΠ°. ΠΠΎΠ³Π°ΡΠΎ Π΄Π°ΡΠ°ΡΠ° Π½Π° ΠΏΠΎΡΡΡΠΊΠ°ΡΠ° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠ°ΠΌΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΈΠ·ΡΠΈΡΠ»ΠΈ Π΄Π΅Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π°ΡΠ° Π΄Π°ΡΠ° Π² ΡΠ΅Π΄Π°.
ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°
ΠΠ° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΡΠ΅Π»ΠΈΡΡ ΡΠΎΠ·ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ? Π ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Π‘Π£ΠΠ, Π±Π΅Π· ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΠΈΠ»ΠΈ DBA ΠΌΠΎΠ³Π°Ρ ΡΠ°ΠΌΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ Π΄Π° ΠΊΠ°Π·Π²Π°Ρ Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠ°ΡΠΈΡ Π·Π°ΡΠ²ΠΊΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ (ΠΈ HINT ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΌΠΎ Π² ΠΊΠΎΠΌΠ΅ΡΡΠΈΠ°Π»Π½ΠΈ Π‘Π£ΠΠ). ΠΠΎΠ»ΠΊΠΎΡΠΎ ΠΈ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ, Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΡ ΠΏΡΡΠ²ΠΎΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π² ΡΡΠ°ΡΠΈΡΡΠ° Π² O (Π±ΡΠΎΠΉ ΠΎΡΠ΄Π΅Π»ΠΈ) Π±Π΅Π· ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΡΠΈΠ³Π΅ΡΠΈ. Π ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π°ΡΠ° ΡΡ Π΅ΠΌΠ° Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΠΌΠΈΡΠ»ΠΈΡΠ΅ Π·Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΊΠΎΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅. ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΡΠΎΠ²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°. ΠΡΠΊΠΎΠΈ Ρ ΠΎΡΠ° ΡΠ°Π·Π²ΠΈΠ²Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΠΎΡΡΠ°Π²Π΅Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ°. Π’Π΅ Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ ΠΈ ΡΡΡ Π½Π°ΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ, Π½ΠΈΡΠΎ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π½ΠΈΡΠΎ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π½ΠΈΡΠΎ ΠΊΠ°ΠΊΡΠ²ΡΠΎ ΠΈ Π΄Π° Π΅ Π΄ΡΡΠ³ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. Π’Π΅Π·ΠΈ Ρ ΠΎΡΠ° ΡΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π±ΠΈΠ·Π½Π΅Ρ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° Π² ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. ΠΠΎΠ³Π°ΡΠΎ Π±ΡΠ΄Π΅ ΠΎΡΠΊΡΠΈΡΠ° Π΄ΡΠ»Π³Π° Π·Π°ΡΠ²ΠΊΠ°, ΡΠΎΠ³Π°Π²Π° Π΄ΡΡΠ³ΠΈ Ρ ΠΎΡΠ° (ΠΏΠΎ-ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ - ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ DBA) ΡΠ΅ΡΠ°Π²Π°Ρ Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Ρ MATERIALIZED Π½Π° Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½Π° ΡΡΠ½ΠΊΡΠΈΡ. Π’ΠΎΠ²Π° ΠΌΠ°Π»ΠΊΠΎ Π·Π°Π±Π°Π²Ρ Π·Π°ΠΏΠΈΡΠ° (ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ»Π΅ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°). ΠΠΎ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠ°Π·ΠΈ Π·Π°ΡΠ²ΠΊΠ° ΡΠ΅ ΡΡΠΊΠΎΡΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ, Π½ΠΎ ΠΈ Π²ΡΠΈΡΠΊΠΈ Π΄ΡΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ ΠΊΠΎΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π° ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ° Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ Π»Π΅ΡΠ½ΠΎ. ΠΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°: Π±ΡΠΎΡΡ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (ΡΠΎΠ²Π° Π΅ ΠΊΠΎΠ»ΠΊΠΎ Π·Π°ΠΏΠΈΡΠ° ΡΠ΅ ΠΈΠΌΠ° Π² ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ°) ΠΈ ΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π΄ΡΡΠ³ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π°Π½Π°Π»ΠΎΠ·ΠΈ
Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ Π‘Π£ΠΠ ΠΈΠΌΠ°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ: ΠΠΠ’ΠΠ ΠΠΠΠΠΠΠ ΠΠ ΠΠΠΠΠΠ Ρ ΠΠͺΠ ΠΠ ΠΠΠΠΠΠ―ΠΠΠΠ (Oracle) ΠΈ ΠΠΠΠΠΠ‘ΠΠ ΠΠ ΠΠΠΠΠΠ (Microsoft SQL Server). Π PostgreSQL MATERIALIZED VIEW Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π° ΡΠ°ΠΌΠΎ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ²Π°Π½Π΅ (ΠΈ Π΄ΠΎΡΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠΎΠ³ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ), ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π΅ Π³ΠΎ Π²Π·Π΅ΠΌΠ°ΠΌΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄. ΠΠΎ ΡΠ΅ ΠΈΠΌΠ°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠΈΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Ρ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° ΠΈΠΌ.
ΠΡΡΠ²ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π²Π΅ΡΠ΅ ΡΡΠ΅ ΡΡΠ·Π΄Π°Π»ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ VIEW. Π ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π½ΠΎΠ²ΠΎΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°Π·ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠ»ΠΈ ΠΎΡΡΠ°Π²Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΊΠ°ΠΊΡΠΎ Π΅, Π½ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ½Π΅ Π½Π΅Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠΌΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π²Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΡΠ²ΠΊΠΈ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ, Π½ΠΎ Π³ΠΈ ΠΏΡΠ΅ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Ρ.
ΠΡΠΎΡΠΎ, ΡΠ΅ ΠΈΠΌΠ°Ρ ΠΎΠ³ΡΠΎΠΌΠ΅Π½ Π±ΡΠΎΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
ΠΡΠ°ΠΊΡΠ»
5.3.8.4 ΠΠ±ΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅
ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π°, ΠΊΠ°ΠΊΡΠΎ ΡΠ»Π΅Π΄Π²Π°:
- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΡ ΠΈΠ·Π³Π»Π΅Π΄ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ ΠΊΡΠΌ Π½Π΅ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ ΠΈΠ·ΡΠ°Π·ΠΈ ΠΊΠ°ΡΠΎ
SYSDATE
Π½Π°ΠΌΠ»ΡΠ²Π°ROWNUM
.- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΡ ΠΈΠ·Π³Π»Π΅Π΄ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ ΠΊΡΠΌ
RAW
orLONG
RAW
ΡΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ.- ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° a
SELECT
ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΡΠΏΠΈΡΡΠΊ.- ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (Π½Π°ΠΏΡ.
RANK
) ΠSELECT
ΠΊΠ»Π°ΡΠ·Π°.- ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΠΊΡΠΌ ΡΠ°Π±Π»ΠΈΡΠ°, Π½Π° ΠΊΠΎΡΡΠΎ an
XMLIndex
ΠΈΠ½Π΄Π΅ΠΊΡΡΡ Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½.- ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° a
MODEL
ΠΊΠ»Π°ΡΠ·Π°.- ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° a
HAVING
ΠΊΠ»Π°ΡΠ·Π° Ρ ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ°.- ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ
ANY
,ALL
ΠΈΠ»ΠΈNOT
EXISTS
.- ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° a
[START WITH β¦] CONNECT BY
ΠΊΠ»Π°ΡΠ·Π°.- ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±Π»ΠΈΡΠΈ Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅.
ON
COMMIT
ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠΌΠ°Ρ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ.- ΠΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°Ρ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π°Π³ΡΠ΅Π³Π°Ρ.
- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ Ρ a
GROUP
BY
ΠΊΠ»Π°ΡΠ·Π°ΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π±ΠΈΡΠ° ΠΎΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ°Π±Π»ΠΈΡΠ°.5.3.8.5 ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΡΠ°ΠΌΠΎ Ρ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΡΠ°ΠΌΠΎ Ρ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ Π±Π΅Π· Π°Π³ΡΠ΅Π³Π°ΡΠΈ ΠΈΠΌΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅:
- ΠΡΠΈΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΡ Β«
ΠΠ±ΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ ".- Π’Π΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠΌΠ°Ρ
GROUP
BY
ΠΊΠ»Π°ΡΠ·ΠΈ ΠΈΠ»ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈ.- Π Π΅Π΄ΠΎΠ²Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΌΠ°ΡΠΈ Π²
FROM
ΡΠΏΠΈΡΡΠΊΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π²SELECT
ΡΠΏΠΈΡΡΠΊ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°.- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Ρ ΡΠ΅Π΄ΠΎΠ²Π΅ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π±Π°Π·ΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ Π²
FROM
ΡΠΏΠΈΡΡΠΊ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°.- ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π±ΡΡΠ·ΠΎ ΠΎΠ±Π½ΠΎΠ²ΡΠ΅ΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±Π»ΠΈΡΠΈ Ρ ΠΏΡΠΎΡΡΠΈ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΠΊΠΎΠ»ΠΎΠ½Π° ΡΠΈΠΏ ΠΎΠ±Π΅ΠΊΡ Π²
SELECT
ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅.ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΈΠ·Π±ΡΠ°Π½ΠΈΡΡ ΠΎΡ Π²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΎ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, Π°ΠΊΠΎ:
- ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΡΠ½ΡΠ½ΠΎ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π΄ΡΡΠΆΠΈ ΠΊΠ°ΡΠΎ Π²ΡΡΡΠ΅ΡΠ½ΠΎ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. ΠΠΊΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΡΡΠ΄ΡΡΠΆΠ° ΡΠ°ΠΊΠΎΠ²Π° ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΎΠ±ΠΌΠΈΡΠ»Π΅ΡΠ΅ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ°, Π·Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° Π²ΡΡΡΠ΅ΡΠ½ΠΎ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅.
- -
SELECT
ΡΠΏΠΈΡΡΠΊΡΡ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄ ΡΡΠ΄ΡΡΠΆΠ° ΠΈΠ·ΡΠ°Π·ΠΈ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±Π»ΠΈΡΠΈ.5.3.8.6 ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ Ρ Π°Π³ΡΠ΅Π³Π°ΡΠΈ
ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ Ρ Π°Π³ΡΠ΅Π³Π°ΡΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠΌΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅:
- ΠΡΠΈΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΡ Β«
ΠΠ±ΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ ".ΠΡΡΠ·ΠΎΡΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈ Π·Π° Π΄Π²Π΅ΡΠ΅
ON
COMMIT
Π½Π°ΠΌΠ»ΡΠ²Π°ON
DEMAND
ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ, Π½ΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
- ΠΡΠΈΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ Π² ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ, Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΡΡΡΠ±Π²Π°:
- Π‘ΡΠ΄ΡΡΠΆΠ° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°, ΠΏΠΎΡΠΎΡΠ΅Π½Π° Π² ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄.
- ΠΠΎΡΠΎΡΠ΅ΡΠ΅ Ρ
ROWID
Π½Π°ΠΌΠ»ΡΠ²Π°INCLUDING
NEW
VALUES
.- ΠΠΎΡΠΎΡΠ΅ΡΠ΅
SEQUENCE
ΠΊΠ»Π°ΡΠ·Π°, Π°ΠΊΠΎ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π΄Π° ΠΈΠΌΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ Π²ΠΌΡΠΊΠ²Π°Π½ΠΈΡ/Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½ΠΈΡ, ΠΈΠ·ΡΡΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
- Π‘Π°ΠΌΠΎ
SUM
,COUNT
,AVG
,STDDEV
,VARIANCE
,MIN
Π½Π°ΠΌΠ»ΡΠ²Π°MAX
ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅.COUNT(*)
ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ.- ΠΠ³ΡΠ΅Π³ΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ ΡΠ°ΠΌΠΎ ΠΊΠ°ΡΠΎ Π½Π°ΠΉ-Π²ΡΠ½ΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΠΈΠ·ΡΠ°Π·Π°. Π’ΠΎΠ΅ΡΡ Π°Π³ΡΠ΅Π³Π°ΡΠΈ ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡ
AVG(AVG(x))
orAVG(x)
+AVG(x)
ΠΠ΅ ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈ.- ΠΠ° Π²ΡΠ΅ΠΊΠΈ Π°Π³ΡΠ΅Π³Π°Ρ ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡ
AVG(expr)
, ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅COUNT(expr)
ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΡΡΡΡΠ²Π°. Oracle ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° ΡΠΎΠ²Π°SUM(expr)
Π±ΡΠ΄Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ.- If
VARIANCE(expr)
orSTDDEV(expr
) Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ,COUNT(expr)
Π½Π°ΠΌΠ»ΡΠ²Π°SUM(expr)
ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ. Oracle ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° ΡΠΎΠ²Π°SUM(expr *expr)
Π±ΡΠ΄Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ.- -
SELECT
ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ° Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ»ΠΎΠΆΠ΅Π½ ΠΈΠ·ΡΠ°Π· Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±Π°Π·ΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π° Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²Π»ΠΎΠΆΠ΅Π½ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄.- -
SELECT
ΡΠΏΠΈΡΡΠΊΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° Π²ΡΠΈΡΠΊΠΈGROUP
BY
ΠΊΠΎΠ»ΠΎΠ½ΠΈ.- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΡ ΠΈΠ·Π³Π»Π΅Π΄ Π½Π΅ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° Π΅Π΄Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ.
- ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ a
CHAR
ΡΠΈΠΏ Π΄Π°Π½Π½ΠΈ Π²ΡΠ² ΡΠΈΠ»ΡΡΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π½Π° ΠΆΡΡΠ½Π°Π» Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄, Π½Π°Π±ΠΎΡΠΈΡΠ΅ ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ ΡΠ°ΠΉΡ ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ° Π΅Π΄Π½Π°ΠΊΠ²ΠΈ.- ΠΠΊΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΡ ΠΈΠ·Π³Π»Π΅Π΄ ΠΈΠΌΠ° Π΅Π΄Π½ΠΎ ΠΎΡ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅, ΡΠΎΠ³Π°Π²Π° Π±ΡΡΠ·ΠΎΡΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°ΠΌΠΎ ΠΏΡΠΈ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΎΠ½Π°Π»Π½ΠΈ DML Π²ΠΌΡΠΊΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½ΠΈΡ.
- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²ΡΠ·Π³Π»Π΅Π΄ΠΈ Ρ
MIN
orMAX
ΠΈΠ½Π΅ΡΡΠ½ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²ΡΠ·Π³Π»Π΅Π΄ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ
SUM(expr)
Π½ΠΎ Π½Π΅COUNT(expr)
- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²ΡΠ·Π³Π»Π΅Π΄ΠΈ Π±Π΅Π·
COUNT(*)
Π’Π°ΠΊΡΠ² ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ ΡΠ΅ Π½Π°ΡΠΈΡΠ° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ ΡΠ°ΠΌΠΎ Π·Π° Π²ΠΌΡΠΊΠ²Π°Π½Π΅.
- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ Ρ
MAX
orMIN
ΡΠ΅ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π° Π±ΡΡΠ·ΠΎ ΡΠ»Π΅Π΄ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈ DML ΠΈΠ·ΡΠ°Π·ΠΈ, Π°ΠΊΠΎ Π½ΡΠΌΠ° aWHERE
ΠΊΠ»Π°ΡΠ·Π°.
ΠΠ°ΠΊΡ./ΠΌΠΈΠ½. Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ ΡΠ»Π΅Π΄ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ ΡΠΌΠ΅ΡΠ΅Π½ DML Π½ΡΠΌΠ° ΡΡΡΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠΎ ΡΠ»ΡΡΠ°Ρ ΡΠ°ΠΌΠΎ Π·Π° Π²ΠΌΡΠΊΠ²Π°Π½Π΅. Π’ΠΎΠΉ ΠΈΠ·ΡΡΠΈΠ²Π° ΠΈ ΠΏΡΠ΅ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΠΌΠ°ΠΊΡ./ΠΌΠΈΠ½. ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π·Π° Π·Π°ΡΠ΅Π³Π½Π°ΡΠΈΡΠ΅ Π³ΡΡΠΏΠΈ. Π’ΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΅ Π½Π°ΡΡΠ½ΠΎ Ρ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ Π²ΡΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΡΡΡ Ρ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ°.- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ Ρ ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠΈ Π²
FROM
ΠΊΠ»Π°ΡΠ·Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π±ΡΡΠ·ΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ. ΠΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΠΎΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΡΠ΅ ΡΠ΅ ΡΠ»Π΅ΡΡ, Π²ΠΈΠΆΡΠ΅Oracle Database SQL Π΅Π·ΠΈΠΊΠΎΠ² ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ .- ΠΠΊΠΎ Π½ΡΠΌΠ° Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΈΠΈ ΠΈ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π²
WHERE
ΠΊΠ»Π°ΡΠ·Π°.- ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ Ρ Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π±ΡΡΠ·ΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Ρ ΡΠ»Π΅Π΄ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΎΠ½Π°Π»Π΅Π½ DML ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½ΠΈΡ, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ΅ ΡΠ°ΠΌΠΎ Π²ΡΠ½ΡΠ½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ° Π΅ Π±ΠΈΠ»Π° ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½Π°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²ΡΡΡ Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅. ΠΠΊΠΎ ΠΈΠΌΠ° Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π²ΡΠΈΡΠΊΠΈ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΠ΅Π·
AND
s ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎΡΠΎ (=
) ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ.- ΠΠ° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²ΡΠ·Π³Π»Π΅Π΄ΠΈ Ρ
CUBE
,ROLLUP
, Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΠΎΡ ΡΡΡ , ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
- -
SELECT
ΡΠΏΠΈΡΡΠΊΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅Π» Π·Π° Π³ΡΡΠΏΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ»ΠΈ aGROUPING_ID
ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Ρ Π½Π° Π²ΡΠΈΡΠΊΠΈGROUP
BY
ΠΈΠ·ΡΠ°Π·ΠΈ ΠΈΠ»ΠΈGROUPING
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ Π΅Π΄ΠΈΠ½ Π·Π° Π²ΡΠ΅ΠΊΠΈGROUP
BY
ΠΈΠ·ΡΠ°Π·ΡΠ²Π°Π½Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎGROUP
BY
ΠΊΠ»Π°ΡΠ·Π°ΡΠ° Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄ Π΅ "GROUP
BY
CUBE(a, b)
", ΡΠΎΠ³Π°Π²Π°SELECT
ΡΠΏΠΈΡΡΠΊΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° ΠΈΠ»ΠΈ "GROUPING_ID(a, b)
" ΠΈΠ»ΠΈ "GROUPING(a)
AND
GROUPING(b)
Β» Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄.GROUP
BY
Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π΄ΡΠ±Π»ΠΈΡΠ°Π½ΠΈ Π³ΡΡΠΏΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, "GROUP BY a, ROLLUP(a, b)
" Π½Π΅ ΡΠ΅ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π° Π±ΡΡΠ·ΠΎ, Π·Π°ΡΠΎΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π΄ΡΠ±Π»ΠΈΡΠ°Π½ΠΈ Π³ΡΡΠΏΠΈ "(a), (a, b), AND (a)
".5.3.8.7 ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ Ρ UNION ALL
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²ΡΠ·Π³Π»Π΅Π΄ΠΈ Ρ
UNION
ALL
Π·Π°Π΄Π°ΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π°REFRESH
FAST
ΠΎΠΏΡΠΈΡ, Π°ΠΊΠΎ ΡΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ:
- ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°
UNION
ALL
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π½Π° Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ.-
UNION
ALL
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²Π³ΡΠ°Π΄Π΅Π½ Π² ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ°, Ρ Π΅Π΄Π½ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: TheUNION
ALL
ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π² ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ° Π²FROM
ΠΊΠ»Π°ΡΠ·Π°, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π΅ ΠΎΡ ΡΠΎΡΠΌΠ°ΡΠ°SELECT * FROM
(ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ° ΡUNION
ALL
), ΠΊΠ°ΠΊΡΠΎ Π² ΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ:CREATE VIEW view_with_unionall AS (SELECT c.rowid crid, c.cust_id, 2 umarker FROM customers c WHERE c.cust_last_name = 'Smith' UNION ALL SELECT c.rowid crid, c.cust_id, 3 umarker FROM customers c WHERE c.cust_last_name = βΠΠΆΠΎΡΠ½Ρβ); Π‘ΠͺΠΠΠΠΠΠΠ ΠΠ ΠΠΠ’ΠΠ ΠΠΠΠΠΠΠ ΠΠ ΠΠΠΠΠΠ unionall_inside_view_mv ΠΠΠΠΠΠ―ΠΠΠΠ ΠΠͺΠ ΠΠ ΠΠ Π ΠΠ‘ΠΠΠΠ ΠΠΠ’Π ΠΠΠΠΠ ΠΠ’Π * ΠΠ’ view_with_unionall;ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π³Π»Π΅Π΄ΠΊΠ°ΡΠ°
view_with_unionall
ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Π½Π΅.- ΠΡΠ΅ΠΊΠΈ Π±Π»ΠΎΠΊ Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π²
UNION
ALL
Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Ρ ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ Ρ Π°Π³ΡΠ΅Π³Π°ΡΠΈ ΠΈΠ»ΠΈ Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½ΡΠ²Π°Ρ ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ Ρ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.ΠΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅, ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π·Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ ΡΠΈΠΏ Π±ΡΡΠ·ΠΎ ΠΎΠ±Π½ΠΎΠ²ΡΠ΅ΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π½Π° Oracle ΡΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ Π½Π° Π΅Π΄Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° Ρ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°ΠΌΠΎ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ROWID
ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ° Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π²SELECT
ΡΠΏΠΈΡΡΠΊ ΠΈ Π² Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π½Π° ΠΈΠ·Π³Π»Π΅Π΄Π°view_with_unionall
.- -
SELECT
ΡΠΏΠΈΡΡΠΊΡΡ Π½Π° Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π° aUNION
ALL
ΠΌΠ°ΡΠΊΠ΅Ρ ΠΈUNION
ALL
ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΠΎΡΠ΄Π΅Π»Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½Π° ΡΠΈΡΠ»ΠΎΠ²Π° ΠΈΠ»ΠΈ Π½ΠΈΠ·ΠΎΠ²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π²ΡΠ² Π²ΡΡΠΊΠ°UNION
ALL
ΠΊΠ»ΠΎΠ½. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ° Π½Π° ΠΌΠ°ΡΠΊΠ΅ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π½Π° ΡΡΡΠ°ΡΠ° ΠΏΠΎΡΠ΅Π΄Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ Π²SELECT
ΡΠΏΠΈΡΡΠΊ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π±Π»ΠΎΠΊ Π½Π° Π·Π°ΡΠ²ΠΊΠ°. ΠΠΈΠΆΡΠ΅ "UNION ALL ΠΠ°ΡΠΊΠ΅Ρ ΠΈ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ° Β» Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎUNION
ALL
ΠΌΠ°ΡΠΊΠ΅ΡΠΈ.- ΠΡΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ ΡΠ°ΠΌΠΎ Π·Π° Π²ΠΌΡΠΊΠ²Π°Π½Π΅ ΠΈ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π·Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ Ρ
UNION
ALL
. ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΎΠ±Π°ΡΠ΅, ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈ, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π±ΡΡΠ·ΠΎ ΠΎΠΏΡΠ΅ΡΠ½Π΅Π½ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎUNION
ALL
ΠΈΠ»ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΠΌΠ°ΡΠΈ.- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° 9.2.0 ΠΈΠ»ΠΈ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ°, Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π±ΡΡΠ·ΠΎ ΠΎΠ±Π½ΠΎΠ²ΡΠ΅ΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ Ρ
UNION
ALL
.
ΠΠ΅ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΎΠ±ΠΈΠ΄Ρ ΡΠ΅Π½ΠΎΠ²Π΅ΡΠ΅ Π½Π° Oracle, Π½ΠΎ ΡΡΠ΄Π΅ΠΉΠΊΠΈ ΠΏΠΎ ΡΠ΅Ρ Π½ΠΈΡ ΡΠΏΠΈΡΡΠΊ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π΅ Π² ΠΎΠ±ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π½ΡΠΊΠ°ΠΊΡΠ² ΠΌΠΎΠ΄Π΅Π», Π° ΠΎΡ Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΈΠ½Π΄ΠΈΠΉΡΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π΅ Π΄Π°Π΄Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° Π½Π°ΠΏΠΈΡΠ°Ρ Π° ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠ»ΠΎΠ½ ΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠ°ΠΊΠ²ΠΎΡΠΎ ΠΌΠΎΠΆΠ° ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΈΡΡΠΈΠ½ΡΠΊΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π΅ ΠΊΠ°ΡΠΎ Ρ ΠΎΠ΄Π΅Π½Π΅ ΠΏΡΠ΅Π· ΠΌΠΈΠ½Π½ΠΎ ΠΏΠΎΠ»Π΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΌΠΈΠ½Π° ΠΏΠΎ Π²ΡΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΊΠ°ΡΠΎ Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ Π΅Π΄Π½ΠΎ ΠΎΡ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ ΡΡΡΠΎ Π΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π²ΡΠΏΡΠΎΡ, Π½ΠΎ Π΅ ΠΈΠ·Π²ΡΠ½ ΠΎΠ±Ρ Π²Π°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ.
Microsoft SQL Server
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΎΠΏΡΠΈΠΈΡΠ΅ SET ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΡΠΈΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ:
- ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°
CREATE INDEX
ΡΡΡΠ±Π²Π° Π΄Π° Π΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊ Π½Π° ΠΈΠ·Π³Π»Π΅Π΄Π°.- ΠΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°,
IGNORE_DUP_KEY
ΠΎΠΏΡΠΈΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° Π½Π° OFF (Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅).- Π’Π°Π±Π»ΠΈΡΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Ρ ΠΈΠΌΠ΅Π½Π° ΠΎΡ Π΄Π²Π΅ ΡΠ°ΡΡΠΈ, ΡΡ Π΅ΠΌΠ°.ΠΈΠΌΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΈΠ·Π³Π»Π΅Π΄Π°.
- ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² ΠΈΠ·Π³Π»Π΅Π΄Π°, ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π°
WITH SCHEMABINDING
ΠΎΠΏΡΠΈΡ.- ΠΡΠΈΡΠΊΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² ΠΈΠ·Π³Π»Π΅Π΄Π°, ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Ρ ΠΈΠΌΠ΅Π½Π° ΠΎΡ Π΄Π²Π΅ ΡΠ°ΡΡΠΈ, ..
- Π‘Π²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈ Π½Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅
NO SQL
ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π·Π° Π²ΡΠ½ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅NO
.- Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° Common Language Runtime (CLR) ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π² ΡΠΏΠΈΡΡΠΊΠ° Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΠΈΠ·Π³Π»Π΅Π΄Π°, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°ΡΡ ΠΎΡ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΊΠ»ΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ. CLR ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π² ΠΊΠ»Π°ΡΠ·Π°ΡΠ° WHERE Π½Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΠ·Π°ΡΠ° ON Π½Π° JOIN ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π² ΠΈΠ·Π³Π»Π΅Π΄Π°.
- CLR ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π½Π° CLR ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΈΠ·Π³Π»Π΅Π΄Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°Ρ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ°.
ΠΠΌΠΎΡ
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°ΠΠΠ’ΠΠ ΠΠΠΠΠ‘Π’ΠΠ§ΠΠ = ΠΠ―Π ΠΠ
Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ° ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΊΠ°ΡΠΎ Π°ΡΡΠΈΠ±ΡΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° Microsoft .NET Framework.Π’ΠΠ§ΠΠ = ΠΠ‘Π’ΠΠΠ‘ΠΠ
Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ° ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΊΠ°ΡΠΎ Π°ΡΡΠΈΠ±ΡΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° .NET Framework.ΠΠΠ‘Π’ΠͺΠ ΠΠΠΠΠ = ΠΠΠ SQL
ΠΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠ΅ ΡΡΠ΅Π· Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ° DataAccess Π½Π° DataAccessKind.None ΠΈ Π°ΡΡΠΈΠ±ΡΡΠ° SystemDataAccess Π½Π° SystemDataAccessKind.None.ΠΠͺΠΠ¨ΠΠ ΠΠΠ‘Π’ΠͺΠ = ΠΠ
Π’ΠΎΠ²Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ ΠΠ Π·Π° CLR ΡΡΡΠΈΠ½Π½ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ.- ΠΠ·Π³Π»Π΅Π΄ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π°
WITH SCHEMABINDING
ΠΎΠΏΡΠΈΡ.- ΠΠ·Π³Π»Π΅Π΄ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΡΠ°ΠΌΠΎ ΠΊΡΠΌ Π±Π°Π·ΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π² ΡΡΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΊΠ°ΡΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π°. ΠΠ·Π³Π»Π΅Π΄ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ.
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ SELECT Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΈΠ·Π³Π»Π΅Π΄Π° Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Transact-SQL Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ:
COUNT
Π€ΡΠ½ΠΊΡΠΈΠΈ ROWSET (OPENDATASOURCE
,OPENQUERY
,OPENROWSET
, ΠOPENXML
)
OUTER
ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π° (LEFT
,RIGHT
ΠΈΠ»ΠΈFULL
)ΠΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° (Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° ΡΡΠ΅Π· ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° a
SELECT
ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π²FROM
ΠΊΠ»Π°ΡΠ·Π°)
Π‘Π°ΠΌΠΎΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π° ΡΠ΅
ΠΠ°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅SELECT *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
ΠΈΠ»ΠΈAVG
ΠΠ±Ρ ΡΠ°Π±Π»ΠΈΡΠ΅Π½ ΠΈΠ·ΡΠ°Π· (CTE)ΠΏΠΎΠΏΠ»Π°Π²ΡΠΊ1, ΡΠ΅ΠΊΡΡ, ntext, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, XML ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΡΠΎΠΊ ΠΊΠΎΠ»ΠΎΠ½ΠΈ
ΠΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ°
OVER
ΠΊΠ»Π°ΡΠ·Π°, ΠΊΠΎΡΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΊΠ»Π°ΡΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΡΠ±ΠΎΡΠ΅Π½ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΡΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΈ (
CONTAINS
,FREETEXT
)
SUM
ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΠΊΡΠΌ nullable ΠΈΠ·ΡΠ°Π·
ORDER BY
CLR Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π°Π³ΡΠ΅Π³Π°ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ
TOP
CUBE
,ROLLUP
ΠΈΠ»ΠΈGROUPING SETS
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ
MIN
,MAX
UNION
,EXCEPT
ΠΈΠ»ΠΈINTERSECT
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ
TABLESAMPLE
Π’Π°Π±Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ
OUTER APPLY
orCROSS APPLY
PIVOT
,UNPIVOT
Π Π°Π·ΡΠ΅Π΄Π΅Π½ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΠΊΠΎΠ»ΠΎΠ½ΠΈ
ΠΠ³ΡΠ°Π΄Π΅Π½ΠΈ (TVF) ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠ½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΡΠ°Π·ΠΈ (MSTVF)
OFFSET
CHECKSUM_AGG
1 ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ΠΈΡΡ ΠΈΠ·Π³Π»Π΅Π΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° ΠΏΠΎΠΏΠ»Π°Π²ΡΠΊ ΠΊΠΎΠ»ΠΎΠ½ΠΈ; ΠΎΠ±Π°ΡΠ΅ ΡΠ°ΠΊΠΈΠ²Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΊΠ»ΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ.
- If
GROUP BY
ΠΏΡΠΈΡΡΡΡΠ²Π°, Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° VIEW ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ°COUNT_BIG(*)
ΠΈ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ°HAVING
, ΡΠ΅Π·ΠΈGROUP BY
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ ΡΠ°ΠΌΠΎ ΠΊΡΠΌ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄. ΠΠ΄Π½Π° Π·Π°ΡΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ ΠΈΠ·Π³Π»Π΅Π΄ Π² ΡΠ²ΠΎΡ ΠΏΠ»Π°Π½ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ Π½Π΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΡΠ΅Π·ΠΈGROUP BY
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.- ΠΠΊΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° a
GROUP BY
ΠΊΠ»Π°ΡΠ·Π°, ΠΊΠ»ΡΡΡΡ Π½Π° ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈΡ ΠΊΠ»ΡΡΡΠ΅ΡΠ΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΡΠ°ΠΌΠΎ ΠΊΡΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π²GROUP BY
ΠΊΠ»Π°ΡΠ·Π°.
Π’ΡΠΊ Π΅ ΡΡΠ½ΠΎ, ΡΠ΅ ΠΈΠ½Π΄ΠΈΠ°Π½ΡΠΈΡΠ΅ Π½Π΅ ΡΠ° Π±ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ° ΡΠ΅ΡΠΈΠ»ΠΈ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΡΡ ΠΏΠΎ ΡΡ Π΅ΠΌΠ°ΡΠ° βΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΌΠ°Π»ΠΊΠΎ, Π½ΠΎ Π΄ΠΎΠ±ΡΠ΅β. Π’ΠΎΠ΅ΡΡ ΠΈΠΌΠ°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΌΠΈΠ½ΠΈ Π½Π° ΠΏΠΎΠ»Π΅ΡΠΎ, Π½ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠΌ Π΅ ΠΏΠΎ-ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ. ΠΠ°ΠΉ-ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°ΡΠΎΡΠΎ Π΅ ΡΠΎΠ²Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅:
ΠΠ·Π³Π»Π΅Π΄ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΡΠ°ΠΌΠΎ ΠΊΡΠΌ Π±Π°Π·ΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π² ΡΡΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΊΠ°ΡΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π°. ΠΠ·Π³Π»Π΅Π΄ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ.
Π Π½Π°ΡΠ°ΡΠ° ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π΅Π΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π½ΡΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΄ΡΡΠ³Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ. Π’ΠΎΠ²Π° ΡΡΠΊΡΠ°ΡΠ°Π²Π° Π²ΡΡΠΊΠ° ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡ Π² Π·Π°ΡΠΎΠ΄ΠΈΡ.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠΎΠ²Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ (ΠΈ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ Π² ΡΠ΅ΠΊΡΡΠ°) Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΡΠ»ΡΡΠ°ΠΈΡΠ΅ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°:
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ SELECT Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΈΠ·Π³Π»Π΅Π΄Π° Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Transact-SQL Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ:
COUNT
Π€ΡΠ½ΠΊΡΠΈΠΈ ROWSET (OPENDATASOURCE
,OPENQUERY
,OPENROWSET
, ΠOPENXML
)
OUTER
ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π° (LEFT
,RIGHT
ΠΈΠ»ΠΈFULL
)ΠΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° (Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° ΡΡΠ΅Π· ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° a
SELECT
ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π²FROM
ΠΊΠ»Π°ΡΠ·Π°)
Π‘Π°ΠΌΠΎΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π° ΡΠ΅
ΠΠ°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅SELECT *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
ΠΈΠ»ΠΈAVG
ΠΠ±Ρ ΡΠ°Π±Π»ΠΈΡΠ΅Π½ ΠΈΠ·ΡΠ°Π· (CTE)ΠΏΠΎΠΏΠ»Π°Π²ΡΠΊ1, ΡΠ΅ΠΊΡΡ, ntext, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, XML ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΡΠΎΠΊ ΠΊΠΎΠ»ΠΎΠ½ΠΈ
ΠΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ°
OVER
ΠΊΠ»Π°ΡΠ·Π°, ΠΊΠΎΡΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΊΠ»Π°ΡΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΡΠ±ΠΎΡΠ΅Π½ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠΡΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΈ (
CONTAINS
,FREETEXT
)
SUM
ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΠΊΡΠΌ nullable ΠΈΠ·ΡΠ°Π·
ORDER BY
CLR Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π°Π³ΡΠ΅Π³Π°ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ
TOP
CUBE
,ROLLUP
ΠΈΠ»ΠΈGROUPING SETS
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ
MIN
,MAX
UNION
,EXCEPT
ΠΈΠ»ΠΈINTERSECT
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ
TABLESAMPLE
Π’Π°Π±Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ
OUTER APPLY
orCROSS APPLY
PIVOT
,UNPIVOT
Π Π°Π·ΡΠ΅Π΄Π΅Π½ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΠΊΠΎΠ»ΠΎΠ½ΠΈ
ΠΠ³ΡΠ°Π΄Π΅Π½ΠΈ (TVF) ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠ½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΡΠ°Π·ΠΈ (MSTVF)
OFFSET
CHECKSUM_AGG
OUTER JOINS, UNION, ORDER BY ΠΈ Π΄ΡΡΠ³ΠΈ ΡΠ° Π·Π°Π±ΡΠ°Π½Π΅Π½ΠΈ. ΠΠΎΠΆΠ΅ Π±ΠΈ Π΅ Π±ΠΈΠ»ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. Π‘ΠΏΠΈΡΡΠΊΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ.
ΠΠ° Π΄Π° ΠΎΠ±ΠΎΠ±ΡΠΈΠΌ: ΠΎΠ³ΡΠΎΠΌΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²ΡΠ² Π²ΡΡΠΊΠ° (Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ ΠΊΠΎΠΌΠ΅ΡΡΠΈΠ°Π»Π½Π°) Π‘Π£ΠΠ ΡΡΠ΅ΡΡ Π½ΠΈΡΠΎ Π΅Π΄Π½ΠΎ (Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΅Π΄Π½ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎ, Π½Π΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎ) Π² ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° LGPL. ΠΡΠ΅ ΠΏΠ°ΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π² ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΡΡΠ΄Π½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π² ΠΎΠΏΠΈΡΠ°Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°.
ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ? PostgreSQL ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ βΠ²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°β. ΠΡΡΡΠ΅ ΠΈΠΌΠ° ΡΠ»ΠΎΠΆΠ΅Π½ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° Π·Π°ΡΠ²ΠΊΠΈ. Π’ΡΠΊ
Π Π°Π±ΠΎΡΠΈ Π»ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ? ΠΠΎΡΡΠ° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ²Π° Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄ΠΎΠΊΠ°Π·ΡΠ΅ΠΌΠΎ. ΠΠΎΠ³Π° ΡΠ°ΠΌΠΎ Π΄Π° ΠΊΠ°ΠΆΠ°, ΡΠ΅ Π°ΠΊΠΎ Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Ρ
ΠΈΠ»ΡΠ΄ΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ³Π°Π²Π° ΡΡΠ΅Π΄Π½ΠΎ ΡΠ΅ ΡΠ° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ Π½Π° Π΄ΠΎΠ±ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ. ΠΠ΄ΠΈΠ½ ΠΎΡΠ»ΠΈΡΠ΅Π½ SQL ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, Π½ΠΎ Ρ Ρ
ΠΈΠ»ΡΠ΄ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° ΠΌΠΎΡΠΈΠ²Π°ΡΠΈΡ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅Π³Π° ΠΌΠΎΠ³Π° Π΄Π° ΡΠΈΡΠΈΡΠ°ΠΌ ΠΊΠ°ΡΠΎ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΠ²ΠΎ Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π΅, ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°Π±ΠΎΡΡΡ Π²ΡΡΡ
Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°, ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π²ΡΡΡ
Ρ ΡΠ°Π·ΠΈ Π‘Π£ΠΠ
Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ ΠΈ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΈ, Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ ΡΡΡ ΡΠ΅ΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com