ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ ΠΏΠΎΠΈΡΠΊΠ° / Π₯Π°Π±Ρ
ΠΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°ΠΌ ΡΡΠ°ΡΡΠΈΒ Craig Freedman
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ SQL Server ΠΏΡΠΈΡΡΡΠΏΠΈΡ ΠΊ ΠΏΠΎΠΈΡΠΊΡ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈ ΠΊΠ»ΡΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌΠΈ Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Π·Π°ΠΏΡΠΎΡΠ°.
ΠΠ½Π΄Π΅ΠΊΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ
Π‘ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ Π²ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. SQL Server ΠΌΠΎΠΆΠ΅Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ°ΠΌΡΡ ΠΏΡΠΎΡΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΠΈ Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ²Π° (Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ, ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΌ, ΠΈ Ρ.Π΄.). ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΡ ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ «LIKE» Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π±ΡΠ΄ΡΡ Π² ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎ ΠΏΠΎΠ»Ρ «a». ΠΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°Ρ :
a = 3.14 a > 100 a between 0 and 99 a like 'abc%' a in (2, 3, 5, 7)
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ:
ABS(a) = 1 a + 1 = 9 a like '%abc'
ΠΠ½Π΄Π΅ΠΊΡΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ
Π‘ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ Π΄Π΅Π»ΠΎ ΠΎΠ±ΡΡΠΎΠΈΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅.
ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ
ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π²Π°ΠΆΠ΅Π½ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΊΠ»ΡΡΠ΅ΠΉ. ΠΡΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΊΠ»ΡΡΠ΅ΠΉ Π·Π°Π²ΠΈΡΠΈΡ Π½Π°Π±ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ SQL Server ΡΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ½ΡΡΡ Π²Π°ΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΡΡ ΠΊΠ½ΠΈΠ³Ρ. ΠΠ»Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎΡ ΠΎΠ΄ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ: «ΡΠ°ΠΌΠΈΠ»ΠΈΡ» ΠΈ «ΠΈΠΌΡ». Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΠΎ ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ, ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π½Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠ°ΠΌΠΈΠ»ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π½Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ, ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π»ΡΠ΄Π΅ΠΉ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ Π½Π°ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π½Π°ΠΌ Π±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄ΠΎΡΠ»Π° Π΄ΡΡΠ³Π°Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½Π°Ρ ΠΊΠ½ΠΈΠ³Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π°Π±ΠΎΠ½Π΅Π½ΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΠΎΠΈΡ Π΄Π΅Π»ΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎ Π΄Π²ΡΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ, Ρ.Π΅. ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° ΠΏΠΎ Π²ΡΠΎΡΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ, Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°, ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°ΠΌΡΠΌ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎ Π΄Π²ΡΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ «a» ΠΈ «b». ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ Π»ΡΠ±ΠΎΠΌΡ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°ΠΌΠΈ:
a = 3.14 and b = 'pi' a = 'xyzzy' and b <= 0
ΠΠ»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ ΡΡΠΎΠ»Π±ΡΠ° «a», Π½ΠΎ Π½Π΅ Π΄Π»Ρ ΡΡΠΎΠ»Π±ΡΠ° «b». Π ΡΡΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ:
a > 100 and b > 100 a like 'abc%' and b = 2
Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π½ΠΈΠΆΠ΅ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΠΈΡΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π΄Π°ΠΆΠ΅ ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΡ «a». Π ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±Π΅Ρ «b» ΡΠΊΠ°Π·Π°Π½ ΠΏΠ΅ΡΠ²ΡΠΌ), ΠΈΠ»ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡ Ρ ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠΌ.
b = 0 a + 1 = 9 and b between 1 and 9 a like '%abc' and b in (1, 3, 5)
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠΊΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡ Π΅ΠΌΡ:
create table person (id int, last_name varchar(30), first_name varchar(30)) create unique clustered index person_id on person (id) create index person_name on person (last_name, first_name)
ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠ° Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΈΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΠΏΠ»Π°Π½Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΎΠ±ΠΎΠΈΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ° person_name. ΠΡΠΎΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡ ΠΈΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ, Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ first_name. Π’ΡΠ΅ΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠΈΡΠΊ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΎΡΠΌΠΎΡΡ Ρ ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠΌ.
select id from person where last_name = 'Doe' and first_name = 'John' Β |--Index Seek(OBJECT:([person].[person_name]), SEEK:([person].[last_name]='Doe' AND [person].[first_name]='John')) select id from person where last_name > 'Doe' and first_name = 'John' Β |--Index Seek(OBJECT:([person].[person_name]), SEEK:([person].[last_name] > 'Doe'),Β WHERE:([person].[first_name]='John')) select id from person where last_name like '%oe' and first_name = 'John' Β |--Index Scan(OBJECT:([person].[person_name]),Β WHERE:([person].[first_name]='John' AND [person].[last_name] like '%oe'))
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ ΠΡ ΠΏΡΠΎΠ±ΡΠ΅ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΈ ΠΏΠ»Π°Π½Ρ Π΄Π»Ρ ΡΡΠΈΡ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΡΡΡΠΈΡΠ΅, ΡΡΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² (ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Ρ), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° Π·Π°ΠΏΡΠΎΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Ρ ΠΎΡΠ΅Π» ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ.
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎ ΠΊΠ»ΡΡΠ°Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°
ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΊΠ»ΡΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠ²Π»ΡΡΡΡΡ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Ρ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½Π΅ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ, Π² ΠΊΠ»ΡΡ Π½Π΅ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π½Π΅ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΊΡΡ ΡΡ Π΅ΠΌΡ:
create table T_heap (a int, b int, c int, d int, e int, f int) create index T_heap_a on T_heap (a) create index T_heap_bc on T_heap (b, c) create index T_heap_d on T_heap (d) include (e) create unique index T_heap_f on T_heap (f) create table T_clu (a int, b int, c int, d int, e int, f int) create unique clustered index T_clu_a on T_clu (a) create index T_clu_b on T_clu (b) create index T_clu_ac on T_clu (a, c) create index T_clu_d on T_clu (d) include (e) create unique index T_clu_f on T_clu (f)
Π‘ΡΠΎΠ»Π±ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΠΏΠΎΠΊΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²:
ΠΠ½Π΄Π΅ΠΊΡ | Π‘ΡΠΎΠ»Π±ΡΡ ΠΊΠ»ΡΡΠ° | ΠΠΎΠΊΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ |
T_heap_a | a | a |
T_heap_bc | b, c | b, c |
T_heap_d | d | d, e |
T_heap_f | f | f |
T_clu_a | a | a, b, c, d, e |
T_clu_b | b, a | a, b |
T_clu_ac | a, c | a, c |
T_clu_d | d, a | a, d, e |
T_clu_f | f | a, f |
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½Π΅ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ°Π±Π»ΠΈΡΡ T_clu Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° T_clu_f.
ΠΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΠΈ Π² SQL Server 2005. Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π½Π΅ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ»ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² ΡΠ²ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ², Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΈΡ ΠΏΠΎΠΊΡΡΠ²Π°Π΅ΠΌΡΠΌΠΈ ΡΡΠΎΠ»Π±ΡΠ°ΠΌΠΈ. Π’ΠΎ Π΅ΡΡΡ ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΊΠ°ΡΡ ΠΏΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ, Π½ΠΎ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°Ρ Π»ΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°; ΠΎΠ½ Π½Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°Ρ Π½Π΅ Π»ΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊ. ΠΠ΅Ρ Π½ΡΠΆΠ΄Ρ ΠΈΡΠΊΠ°ΡΡ ΠΏΠΎ ΠΊΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΊΠ»ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ. Π SQL Server 2000, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΊΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π½ΠΎ ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°, Π° Π½Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠΈΡΠΊΠ°.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ SQL: AND ΠΈ OR.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ SQL: AND ΠΈ OR. — it-black.ru ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ
Π SQL ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°ΠΌΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ TRUE ΠΈΠ»ΠΈ FALSE. ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ AND β ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΊΠΎΠ½ΡΡΠ½ΠΊΡΠΈΠΈ), ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ OR β ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π΄ΠΈΠ·ΡΡΠ½ΠΊΡΠΈΠΈ).Π’Π°Π±Π»ΠΈΡΠ° ΠΈΡΡΠΈΠ½Π½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ²:
| first_expression | last_expression | AND | OR |
| TRUE | TRUE | TRUE | TRUE |
| TRUE | FALSE | FALSE | TRUE |
| FALSE | TRUE | FALSE | TRUE |
| FALSE | FALSE | FALSE | FALSE |
ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° AND Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΎΠ±Π° ΡΡΠ»ΠΎΠ²ΠΈΡ. ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° OR Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅.
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ AND ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
boolean_expression AND boolean_expression
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ OR ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
boolean_expression OR boolean_expression
ΠΡΠΈΠΌΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° SQL AND & OR.
ΠΠΌΠ΅Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Planets:
| ID | PlanetName | Radius | SunSeason | OpeningYear | HavingRings | Opener |
| 1 | Mars | 3396 | 687 | 1659 | No | Christiaan Huygens |
| 2 | Saturn | 60268 | 10759.22 | β | Yes | β |
| 3 | Neptune | 24764 | 60190 | 1846 | Yes | John Couch Adams |
| 4 | Mercury | 2439 | 115.88 | 1631 | No | Nicolaus Copernicus |
| 5 | Venus | 6051 | 243 | 1610 | No | Galileo Galilei |
ΠΡΠΈΠΌΠ΅Ρ 1. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ AND ΠΈ OR Π²ΡΠ²Π΅ΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ»Π°Π½Π΅Ρ, Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π΄ΠΈΡΡ ΠΏΠ»Π°Π½Π΅ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ 10000 ΠΈ ΠΎΡΠΊΡΡΡΡΡ (OpeningYear) ΠΏΠΎΡΠ»Π΅ 1620:
SELECT * FROM Planets WHERE Radius 1620;
ΠΡΠΈΠΌΠ΅Ρ 2.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ AND ΠΈ OR Π²ΡΠ²Π΅ΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ»Π°Π½Π΅Ρ, Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ
Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π±ΡΠΊΠ²Ρ Β«NΒ» ΠΈΠ»ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π½Π° Π±ΡΠΊΠ²Ρ Β«sΒ» ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΊΠΎΠ»Π΅Ρ:
SELECT * FROM Planets WHERE (PlanetName LIKE 'N%' OR PlanetName LIKE '%s') AND HavingRings = 'No';
Π‘Π°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Planets ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. Π ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ.
- ΠΠΈΠΊΡΠΎΡ Π§Π΅ΡΠ΅ΠΌΠ½ΡΡ
- 29 ΠΈΡΠ½Ρ, 2018
- One Comment
ΠΡΡΠΏΠΏΠ° Π² VK
ΠΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΡ?
Π‘ΠΎΠΎΠ±ΡΠΈΡΠ΅ Π½Π°ΠΌ ΠΎΠ± ΡΡΠΎΠΌ, Π²ΡΠ΄Π΅Π»ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Ctrl+Enter, Π±ΡΠ΄Π΅ΠΌ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΠ·Π½Π°ΡΠ΅Π»ΡΠ½Ρ!
Π‘Π²Π΅ΠΆΠΈΠ΅ ΡΡΠ°ΡΡΠΈ
ΠΠ±Π»Π°ΠΊΠΎ ΠΌΠ΅ΡΠΎΠΊ
Instagram Vk Youtube Telegram OdnoklassnikiΠΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°ΡΡ
Π ΡΠ±ΡΠΈΠΊΠΈ
ΠΠ²ΡΠΎΡΡ
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ Π² SQL
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ Π² SQL 3 ΠΌΠ°Ρ 2022 Π³.
by Robert Gravelle
ΠΠ° ΡΡΠΎΠΉ Π½Π΅Π΄Π΅Π»Π΅ ΠΌΡ Π½Π΅Π½Π°Π΄ΠΎΠ»Π³ΠΎ Π½Π°ΠΆΠΌΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠ°ΡΠ·Π°Β» ΠΈΠ· ΡΠ΅ΡΠΈΠΈ Β«ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ²Β», ΡΡΠΎΠ±Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°Ρ Π² SQL. ΠΡΠΈΡΠΈΠ½Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ Π±ΡΠ΄ΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ°ΡΡΠΈ 3 ΡΠ΅ΡΠΈΠΈ Β«ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ²Β».
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΠ‘Π’ΠΠΠ, ΠΠΠΠ¬ ΠΈΠ»ΠΈ ΠΠΠΠΠΠΠ‘Π’ΠΠ. ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ WHERE ΠΈ HAVING, ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ FROM, Π° ΡΠ°ΠΊΠΆΠ΅ Π² Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠ°, Π³Π΄Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΏΠΎΠ² ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ², Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅:
- Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
- ΠΠΠ
- ΠΠΠΠΠ£
- Π
- Π‘Π£Π©ΠΠ‘Π’ΠΠ£ΠΠ’
- IS NULL (/INTEGER/DECIMAL/FLOAT…)
Π ΠΎΡΡΠ°Π²ΡΠ΅ΠΉΡΡ ΡΠ°ΡΡΠΈ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ².
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, ΡΠ°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ WHERE employee_salary > 100000 , ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΠ‘Π’ΠΠΠ, ΠΠΠΠ¬ ΠΈΠ»ΠΈ ΠΠΠΠΠΠΠ‘Π’ΠΠ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ:
- = ΡΠ°Π²Π½ΠΎ
- > ΠΠΎΠ»ΡΡΠ΅
- < ΠΠ΅Π½ΡΡΠ΅
- >= ΠΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ
- <= ΠΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ
- <> ΠΠ΅ ΡΠ°Π²Π½ΠΎ
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π²ΠΈΠ΄:
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_1 ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_2
Π ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅2 ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΠΎΠΌ. ΠΡΠ»ΠΈ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ FALSE.
Π SQL ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ Π½ΠΎΠΌΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ LIKE, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ° Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ. Like ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π»ΡΠ±ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΌ ΠΈΠ»ΠΈ Π΄Π°ΡΠΎΠ²ΡΠΌ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ BETWEEN Π·Π°Π΄Π°Π΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½ΠΈΠΆΠ½ΡΡ ΠΈ Π²Π΅ΡΡ
Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ΅ Π΄ΠΎΡ
ΠΎΠ΄ ΠΠΠΠΠ£ 5000 Π 20000 Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΡΠΉ 5000 ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΡΠΉ 20000. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ, ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
ΠΈ Π΄Π°ΡΠ°ΠΌΠΈ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ IN ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠ°. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ TRUE, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° ΡΠ°Π²Π½ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠΌ IN:
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ EXISTS ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ TRUE, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ FALSE, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ»Ρ ΡΡΡΠΎΠΊ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ IS NULL, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΡΡΡΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ =. ΠΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΡΠΎΠΊ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ.
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ IS NULL ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠΎΡΠΌΡ:
Π―ΠΠΠ―ΠΠ’Π‘Π― [ΠΠ]ΠΠ£ΠΠ¬ΠΠ«Π
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ x IS NULL ΡΠ°Π²Π½ΠΎ TRUE, Π΅ΡΠ»ΠΈ x ΡΠ°Π²Π½ΠΎ NULL.
IS UNKNOWN ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠΌ IS NULL, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ BOOLEAN.
ΠΠΎΡ Π·Π°ΠΏΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ IS NOT NULL Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ², ΡΡΡ ΡΠ°ΠΌΠΈΠ»ΠΈΡ Π½Π΅ ΡΠ°Π²Π½Π° NULL:
Π ΡΡΠΎΠΌ Π±Π»ΠΎΠ³Π΅ ΠΌΡ ΠΏΡΠ΅ΡΠ²Π°Π»ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π±Π»ΠΎΠ³, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ ΡΡΠΎΡ Π²Π°ΠΆΠ½ΡΠΉ ΡΡΠΎΠΊ ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°Ρ
SQL.
ΠΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ
ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ WHERE ΠΈ HAVING, ΡΡΠ»ΠΎΠ²ΠΈΡΡ
ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ FROM, ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ β ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ TRUE, FALSE ΠΈΠ»ΠΈ UNKNOWN. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π½Π΅Π΄Π΅Π»ΠΈ ΠΌΡ ΡΠ½ΠΎΠ²Π° ΡΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ Π² ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠΈ ΡΠ΅ΡΠΈΠΈ Β«ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ²Β».
Π€ΠΈΠ»ΡΡΡ-ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΡΠΊ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Oracle SQL
ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ
Oracle ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ , Π³Π΄Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ²):
- ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π΄ΠΎΡΡΡΠΏΠ° (Β«Π΄ΠΎΡΡΡΠΏΒ»)
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ Π΄ΠΎΡΡΡΠΏΠ° Π²ΡΡΠ°ΠΆΠ°ΡΡ Π½Π°ΡΠ°Π»ΠΎ ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ·Π»Π°.
- ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° (Β«ΡΠΈΠ»ΡΡΡΒ» Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ)
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π΅ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ·Π»Π°. ΠΠ½ΠΈ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ Π½Π΅ ΡΡΠΆΠ°ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
- ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΡΠΈΠ»ΡΡΡΠ° Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ°Π±Π»ΠΈΡΡ (Β«ΡΠΈΠ»ΡΡΡΒ» Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ)
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ Π΄Π»Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ², Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ½Π°ΡΠ°Π»Π° Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° ΡΠΎΠ·Π΄Π°ΡΡ Π»ΠΎΠΆΠ½ΠΎΠ΅ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ; Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±ΡΡΡΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ»Π°Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π£ΡΠΈΠ»ΠΈΡΠ° DBMS_XPLAN (ΡΠΌ. Β« ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Β»), ΠΏΠΎΠΊΠ°ΠΆΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°Ρ
Β» ΠΏΠΎΠ΄ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΌ ΠΏΠ»Π°Π½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:
--------------- ---------------------------------------
| ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ | ΠΠΏΠ΅ΡΠ°ΡΠΈΡ | ΠΠΌΡ | Π ΡΠ΄Ρ | Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ |
-------------------------------------------------- ----
| 0 | ΠΠ«ΠΠΠ ΠΠ’Π ΠΠΠ―ΠΠΠΠΠΠ | | 1 | 1445 |
| 1 | Π‘ΠΠ Π’ΠΠ ΠΠΠΠ’Π¬ ΠΠΠ ΠΠΠΠ’ | | 1 | |
| * 2 | ΠΠΠΠΠΠ‘ ΠΠΠΠΠΠΠΠ Π‘ΠΠΠ | SCALE_SLOW | 4485 | 1445 |
-------------------------------------------------- ----
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ΅ (ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ):
2 - Π΄ΠΎΡΡΡΠΏ ("Π ΠΠΠΠΠ" =: A Π "ID2" =: B )
ΡΠΈΠ»ΡΡΡ("ID2"=:B)
ΠΡΠΌΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΡΠΎΠ»Π±ΡΡ Β«IdΒ» ΠΏΠ»Π°Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π’Π°ΠΌ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π·Π²Π΅Π·Π΄ΠΎΡΠΊΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ
Π― Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°Ρ Π½Π° ΠΆΠΈΠ·Π½Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ΠΌ SQL, Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ ΠΈ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ SQL, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ Β«ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ SQLΒ». Π£Π·Π½Π°ΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π° https://winand.at/.
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π·ΡΡΡΠΉ ΠΈΠ· Π³Π»Π°Π²Ρ Β«ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡΒ», ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ INDEX RANGE SCAN Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Oracle Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ ΡΠΈΠ»ΡΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ID2=:B Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΠ»Π°Π½Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ°ΠΆΠ½ΠΎ
ΠΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΡΠΈΠ»ΡΡΡΠ°, ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΡΠΈΠ»ΡΡΡΠ° β Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π»ΠΈ ΠΎΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π΄ΠΎΡΡΡΠΏΠ°.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ INDEX RANGE SCAN ΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ "Π ΠΠΠΠΠ"=:A ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΈΠ»ΡΡΡ "ID2"=:B ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅.

[person_name]), SEEK:([person].[last_name] > 'Doe'),Β WHERE:([person].[first_name]='John'))
select id from person where last_name like '%oe' and first_name = 'John'
Β |--Index Scan(OBJECT:([person].[person_name]),Β WHERE:([person].[first_name]='John' AND [person].[last_name] like '%oe'))