Клауза ORDER BY Съвети и трикове на Oracle (продължение 1) - SQL програмиране

ТАБЛИЦА

Тази клауза е необходима при заявка за йерархична вложена таблица.

ДЯЛ

Заявката е ограничена до посочения раздел на таблицата. По същество редовете се извличат само от посочения раздел, а не от цялата таблица.

ПОДЧАСТ

Заявката е ограничена до посочения подраздел на таблицата. Тъй като редовете се извличат само от посочения подраздел, а не от цялата таблица, натоварването на I/O тръбите се намалява.

ПРИМЕР [БЛОК] [процент_за_проба] [SEED (начална_стойност)

Тази клауза указва, че записите ще бъдат избрани от произволен набор от редове в набора от резултати, посочен като процент от редове или блокове, а не от цялата таблица. Клаузата BLOCK принуждава Oracle да взема проби блок по блок, а не по ред. Параметърът sample_percentage, който показва колко от редовете или блоковете ще бъдат включени в извадката, може да варира от 0.000001 до 99. Клаузата SEED по избор се използва, за да осигури ограничена възпроизводимост на резултатите. Ако посочите начална _value, Oracle ще се опита да върне един и същ модел при различни изпълнения на заявката. Първоначалната стойност може да варира от 0 до 4 294 967 295. Ако клаузата SEED е пропусната, наборът от резултати ще бъде различен за всяка заявка. Вземането на проби може да се използва само в заявки към една таблица.

ПРИСЪЕДИНЯВАНЕ

Наборите от резултати от една или повече таблици се комбинират в една заявка. Описано подробно по-долу.

ЧАСТ ПО ИЗРАЗ [, ...]

Определен е специален тип заявка, наречена partitioned_external_joint, при която стандартният синтаксис на външното присъединяване се разширява чрез прилагане на ляво и дясно външно съединение към разделяне на един или повече низове, посочени от израз. Тази заявка е особено полезна при заявки за данни, които са разпръснати в определено измерение, защото връща редове, които иначе не биха били в набора от резултати. За примери вижте подраздела Ogac1e на раздела JOIN Clause. Клаузата PARTITION IN Y може да се използва от двете страни на външно съединение, което е подобно на клаузата UNION, приложено към външните съединения на всеки дял в разделен набор от резултати с таблица от другата страна на съединението. (Ако тази клауза е пропусната, Oracle третира целия набор от резултати като един раздел.) PARTITION BY не може да се използва с FULL OUTER JOIN.

КЪДЕ ... [[СТАРТИРАНЕ със стойност] СВЪРЗВАНЕ ПО [ПРЕДИШНО] условие]

Клаузата филтрира записите, които попадат в набора от резултати. Платформата Oracle ви позволява да използвате йерархична информация в таблици, които могат да бъдат филтрирани с помощта на клаузата START WITH. Клаузата START WITH определя редовете, които ще служат като родители в набора от резултати. Клаузата CONNECT BY дефинира условието на връзката между родителските редове и техните низходящи редове. Ключовата дума PRIOR се използва за задаване на родителски редове вместо дъщерни редове. В йерархични заявки псевдоколоната LEVEL се използва за задаване на коренна точка (1), първични дъщерни точки (2), вторични дъщерни точки (3) и т.н. Налични също в йерархични заявки са псевдоколони като CONNECT BYISCYCLE и CONNECT BYJSLEAF. Йерархичните заявки се изключват взаимно с клаузите ORDER BY и GROUP BY. Не използвайте тези клаузи в заявки, които съдържат клаузи START WITH или CONNECT BY. Можете да сортирате записите на връстници от една и съща родителска таблица, като използвате клаузата ORDER SIBLINGS BY.

ПОРЪЧКА [ПОРЪЧКИ] В Y сортиране_израз

Резултатният набор от заявки се сортира в реда, посочен от израза за сортиране. Този израз може да бъде имена на колони, псевдоними на колони или цели числа, указващи поредното положение на колоните. ORDER SIBLINGS BY се използва при заявки за йерархични таблици с клаузата CONNECT BY. Клаузата ORDER SIBLINGS BY принуждава Oracle да запази сортирането, посочено от клаузата CONNECT BY, и да го приложи само към равнопоставени редове (т.е. редове, които са на същото ниво на йерархията). Клаузите NULLS FIRST и NULLS LAST показват, че записите, съдържащи празни стойности, трябва да бъдат поставени съответно в началото или в края.

ЗА НАГОРЕ ДА [НА [диаграма.] ...

Редовете в набора от резултати са заключени, така че другите потребители не могат да ги заключват или променят, докато не завършите транзакцията си. Клаузата FOR UPDATE не може да се използва в подзаявки, в заявки, които използват клаузи DISTINCT или GROUP BY, или в заявки, които използват оператори на набори от данни или обобщени функции. Низходящите редове в йерархична таблица не се блокират при заявка на родителски редове. Ключовата дума OF се използва за заключване само на посочената таблица или изглед. В противен случай Oracle заключва всички таблици и изгледи, посочени в клаузата FROM. Когато използвате клаузата OF, колоните всъщност нямат значение, но трябва да използвате реални имена на колони, а не псевдоними. Клаузите NOWAIT и WAIT карат Oracle или да се върне незабавно при вас (ако заключването вече е на мястото си), или да изчака съответно цяло число секунди преди да се върне. Ако не са посочени нито WAIT, нито NOWAIT, Oracle изчаква, докато се появят редове.