Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Firebird Π Π£ΠšΠžΠ’ΠžΠ”Π‘Π’Π’Πž Π ΠΠ—Π ΠΠ‘ΠžΠ’Π§Π˜ΠšΠ БАЗ ДАННЫΠ₯Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 102

Автор Π₯Π΅Π»Π΅Π½ Π‘ΠΎΡ€Ρ€ΠΈ

SELECT

ID,

TITLE as PUBLICATION,

'BOOK ' AS PUBLICATION_TYPE,

CAST (AUTHOR_LAST_NAME || ' ' || AUTHOR_FIRST_NAMES AS VARCHAR (50) )


AS AUTHOR_EDITOR,

EDITION AS EDITION_OR_ISSUE,

PUBLICATION_DATE DATE,

PUBLISHER_ID,

CAST(ISBN AS VARCHAR(14)) AS ISBN,

LIST_PRICE

FROM CURRENT_TITLES

WHERE ...

UNION SELECT

ID,

TITLE,

'PERIODICAL',

EDITOR_LAST_NAME || ' , ' || EDITOR_FIRST_NAMES AS AUTHOR_EDITOR,

CAST (AUTHOR_LAST_NAME || ', ' || AUTHOR_FIRST_NAMES AS VARCHAR(50)),

ISSUE_NUMBER,

PUBLICATION_DATE,

PUBLISHER_ID, 'Not applicable',

LIST_PRICE

FROM PERIODICALS

WHERE ...

ORDER BY 2;


Условия поиска ΠΈ упорядочивания

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ρ‡Ρ‚ΠΎ условия поиска Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ объСдиняСмой спСцификации SELECT. Они ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ выраТСниями поиска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ, управляСмому Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ SELECT. НС сущСствуСт способа ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ условия поиска Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΏΠΎΠ΄Π½Π°Π±ΠΎΡ€ΠΎΠ².

Допустимо Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ упорядочСния, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ послС всСх ΠΏΠΎΠ΄Π½Π°Π±ΠΎΡ€ΠΎΠ². Бинтаксис ORDER BY Π½ΠΎΠΌΠ΅Ρ€ (Ρ‚. Π΅. упорядочСниС ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ столбца) трСбуСтся для упорядочСния ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΡ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ².

Π Π΅Π΅Π½Ρ‚Π΅Ρ€Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅ запросы UNION

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ€Π΅Π΅Π½Ρ‚Π΅Ρ€Π°Π±Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅ для создания ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π΅Π³ΠΎ запроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ нСсколько ΠΏΠΎΠ΄Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Алиасы Ρ‚Π°Π±Π»ΠΈΡ† Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π² прСдлоТСниях FROM, Π½ΠΎ ссылки Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ спСцифицированы. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ нашСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ CURRENT_TITLES, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΊΠ½ΠΈΠ³ Π² зависимости ΠΎΡ‚ Ρ†Π΅Π½Ρ‹. Π Π΅Π΅Π½Ρ‚Π΅Ρ€Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ запрос Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


SELECT

ID,

TITLE,

CAST ('UNDER $20' AS VARCHAR(IO)) AS RANGE,

CAST (AUTHOR_LAST_NAME || ', ' || AUTHOR_FIRST_NAMES AS VARCHAR (50) )

AS AUTHOR,

EDITION,

LIST_PRICE

FROM CURRENT_TITLES CT1

WHERE LIST_PRICE < 20.00

UNION SELECT

ID,

TITLE,

CAST ('UNDER $40' AS VARCHAR(IO),

CAST (AUTHOR_LAST_NAME || ', ' || AUTHOR_FIRST_NAMES AS VARCHAR(50) ) ,

EDITION,

LIST_PRICE

FROM CURRENT_IITLES CT2

WHERE LIST_PRICE >= 20.00 AND LIST_PRICE < 40.00

UNION SELECT

ID,

TITLE,

CAST ('$40 PLUS' AS VARCHAR(IO) ) ,

CAST (AUTHOR_LAST_NAME || ', ' || AUTHOR_FIRST_NAMES AS VARCHAR(50) ) ,

EDITION,

LIST_PRICE

FROM CURRENT_TITLES CT3

WHERE LIST PRICE >= 40.00;


UNION ALL

Если Π² процСссС создания объСдинСнного Π½Π°Π±ΠΎΡ€Π° Π±Ρ‹Π»ΠΈ сформированы Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки, Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… строк. Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ UNION ALL вмСсто UNION.

Π’Π΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΏΠ»Π°Π½Ρ‹ запросов ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ рассматриваСтся подсистСма ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Firebird ΠΈ Ρ‚Π΅ стратСгии, примСняСмыС ΠΈΠΌ для создания ΠΏΠ»Π°Π½ΠΎΠ² запроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ сСрвСром для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² SELECT ΠΈ подзапросов Π²ΠΎ врСмя выполнСния. ΠœΡ‹ Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ рассмотрим синтаксис ΠΏΠ»Π°Π½Π° запроса, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способы ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π²Π°ΡˆΠΈΡ… собствСнных ΠΏΠ»Π°Π½ΠΎΠ² сСрвСру.

ΠŸΠ»Π°Π½Ρ‹ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ запросов Firebird

Для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° SELECT ΠΈΠ»ΠΈ условия поиска сСрвСр Firebird ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² Π½Π°Π±ΠΎΡ€ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ запросом. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ подготавливаСтся для выполнСния, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ вычисляСт ΠΏΠ»Π°Π½ поиска.


План

План запроса создаСт Π½Π΅ΠΊΠΈΠΉ Π²ΠΈΠ΄ Π΄ΠΎΡ€ΠΎΠΆΠ½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹, которая сообщаСт сСрвСру Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π΄ΠΎΡ€ΠΎΠ³ΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ Π΄ΠΎΡ€ΠΎΠ³Ρƒ для Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ процСсса поиска, сортировки ΠΈ поиска соотвСтствия Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ. Π§Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ эффСктивный ΠΏΠ»Π°Π½ сконструируСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€, Ρ‚Π΅ΠΌ быстрСС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π°Ρ‡Π½Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

План создаСтся Π² соотвСтствии с Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ доступных индСксов, с Ρ‚Π΅ΠΌ способом, ΠΊΠ°ΠΊΠΈΠΌ индСксы ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ ΡΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π° Ρ‚Π°ΠΊΠΆΠ΅ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ поиска (ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ доступа).

ΠŸΡ€ΠΈ вычислСнии ΠΏΠ»Π°Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ доступный индСкс, выбирая ΠΈΠ»ΠΈ отвСргая индСксы Π² соотвСтствии с ΠΈΡ… ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΡŽ. Помимо сущСствования индСкса ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ распрСдСлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² индСксС. Если ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ использованиС индСкса Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ большС ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ, Ρ‡Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр строки Π·Π° строкой Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ индСкс, Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ формирования ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ»ΠΈ создания ΠΏΠΎΡ‚ΠΎΠΊΠ° СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.


ВыраТСния ΠΏΠ»Π°Π½Π°

Для элСмСнтов ΠΏΠ»Π°Π½Π° Π² SQL Firebird примСняСт Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ синтаксис, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сСрвСру. ПониманиС сгСнСрированных ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ»Π°Π½ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ для прСдвидСния, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, Ρ‚Π°ΠΊ ΠΈ Π² качСствС основы для написания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΠ»Π°Π½ΠΎΠ².


Бинтаксис Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ»Π°Π½Π°

Π¨Π°Π±Π»ΠΎΠ½ синтаксиса для Ρ„Ρ€Π°Π·Ρ‹ PLAN:

<спСцификация-запроса> PLAN <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-ΠΏΠ»Π°Π½Π°>

Π­Ρ‚ΠΎΡ‚ синтаксис позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ соСдинСниС Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. ΠœΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ скобки для задания Π»ΡŽΠ±Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ соСдинСний. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ свои Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ.


Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹

Π’ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ здСсь Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈ запятыС ΡΠ²Π»ΡΡŽΡ‚ΡΡ элСмСнтами синтаксиса. Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ΠΈ символ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚Ρ‹ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ синтаксиса- ΠΊΠ°ΠΊ ΠΈ Π² Ρ€Π°Π½Π΅Π΅ описанном синтаксисС ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, соотвСтствСнно, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Ρ€Π°Π·Ρ‹ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹.


plan-expression := [join-type] (plan-item-list)

join-type := [JOIN] | [SORT] [MERGE]

plan-item-list := plan-item | plan-item, plan-item-list

plan-item := table-identifier access-type | plan_expression

table-identifier := { table-identifier | alias-name } [table-identifier]

access-type := { NATURAL | INDEX (index-list) | ORDER index-name }

index-list := index-name | index-name, index-list


Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹

Π’ΠΈΠΏ соСдинСния (join-type) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ JOIN ΠΈΠ»ΠΈ MERGE.

* Π’ΠΈΠΏ соСдинСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ JOIN (Ρ‚. Π΅. соСдинСниС Π΄Π²ΡƒΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² с использованиСм индСкса ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° для поиска ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² Π»Π΅Π²ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅).

* MERGE выбираСтся, Ссли Π½Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… индСксов. Π’ этом случаС Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ порядкС, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ. Π’ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΠ»Π°Π½Π°Ρ… ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° соСдинСния, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ доступных индСксов.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (table-identifier) Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ алиасом. Если ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ использована Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°, для Π½Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ алиас для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ использования. Алиас Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ послС ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ Π΅Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΈ. Для спСцификации Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π² просмотрС синтаксис прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ мноТСство ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ². ΠŸΠ»Π°Π½Ρ‹ для просмотров ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 24.

Π’ΠΈΠΏ доступа (access-type) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…:

* NATURAL - доступ ΠΊ строкам осущСствляСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ особого порядка. Π­Ρ‚ΠΎ Ρ‚ΠΈΠΏ доступа ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΏΠ»Π°Π½ для докумСнтирования;

* INDEX - позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ индСксов для вычислСния ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условий соСдинСния Π² запросС;

* ORDER- ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запроса Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ отсортирован (упорядочСн) ΠΏΠΎ самому Π»Π΅Π²ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ с использованиСм индСкса.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΏΠ»Π°Π½Π° (plan-item) Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΠ»Π°Π½ доступа, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ Π΅Π΅ алиас.


ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€

Если Π²Ρ‹ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ΠΏΠ»Π°Π½Π°ΠΌΠΈ запросов, Π²Ρ‹, вСроятно, Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½Ρ‹, ΠΊΠ°ΠΊ вСсь этот синтаксис ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΠ»Π°Π½. Π§ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ синтаксис станСт Π±ΠΎΠ»Π΅Π΅ осмыслСнным, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ посмотрим Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»Π°Π½Ρ‹, сгСнСрированныС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ "ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»" для Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: соСдинСния ΠΈ условия поиска, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅, ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π² основС спСцификации запроса, ΠΈ доступныС индСксы.


Π€Π°ΠΊΡ‚ΠΎΡ€Ρ‹ Π² ΠΎΡ†Π΅Π½ΠΊΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ (вычислСний)

ЦСль ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° - ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ ΠΏΠ»Π°Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² соотвСтствии с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, скорСС всСго, Π½Π°Ρ‡Π½Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ быстрым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ВычислСниС ΠΏΠ»Π°Π½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ довольно Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ использовании Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ†Π΅Π½ΠΊΡƒ. РассматриваСмыС Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

* Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ индСкса ΠΈ ΡΠ΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ этого индСкса. Π€Π°ΠΊΡ‚ΠΎΡ€ сСлСктивности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΎΡ†Π΅Π½ΠΊΠ°Ρ…, выбираСтся ΠΈΠ· систСмных Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°ΠΆΠ΅ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² процСссС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго вычислСния сСлСктивности;

* количСство строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²;

* сущСствуСт Π»ΠΈ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€Π°, ΠΈ Ссли Π΄Π°, сущСствуСт Π»ΠΈ доступный ΠΈΠ»ΠΈ подходящий индСкс;

* Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ выполнСния сортировок, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… (для слияния), Ρ‚Π°ΠΊ ΠΈ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ (для упорядочСния ΠΈ группирования).


ΠŸΠΎΡ‚ΠΎΠΊΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° "ΠΏΠΎΡ‚ΠΎΠΊ", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ обсуТдСнии ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, являСтся просто ΠΎΠ±Ρ‰ΠΈΠΌ способом наимСнования мноТСства строк. Набор ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС строки ΠΈ столбцы Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ подмноТСство Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ спСцификациями столбцов ΠΈ условиями поиска. Π’ процСссС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ сортированный Π½Π°Π±ΠΎΡ€ ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ подзапроса для сравнСния IN(). Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Π»Π΅Π΅ Ρ€Π°Π·Π΄. "Π Π΅ΠΊΠΈ".