डेटाबेस

Oracle SQL – Öncelik Sırasının Önemi

SQL'de Öncelik Sırası

Ön koşul sırasının önemi, koşulların gruplandırılmasıyla uğraşırken en belirgindir. Bu en iyi bunun gibi seçili ifadelerde gösterilmektedir:

EmpECT empno, payrate, dept_code

emp_work'den

WHERE dept_code = & # 39; SATIŞ & # 39;

VE payrat = 18

VEYA payrat = 20;

Kullanıcı, 18 ya da 20 ödeme yapan SALES bölümündeki tüm çalışanlar hakkında bilgi sorgulamaya çalışıyor. Ancak, bu sorgudan elde edilen gerçek sonuçlar, SALES bölümündeki tüm çalışanların, bir ücret içeren 18 ve HİÇBİR çalışanın 20'si.

Bunun nedeni, Oracle’ın & # 39; VE & 39; ilk önceliği yüksek olması nedeniyle.

Oracle bu sorguya baktığında şunu görür:

WHERE dept_code = & # 39; SALES & # 39;

AND payrate = 18

birlikte ve bu koşulları önce değerlendirir.

Oracle, çalışanın SALES bölümünde olduğu ve ücretinin
olduğu 18 çalışanı arar.

THEN, VEYA işletmecisine bakar, çünkü ilk iki koşul AND işleci tarafından gruplandırıldığından beri , tüm Oracle bıraktı:

VEYA payrate = 20;

değerlendirmek üzere, bu nedenle Oracle 20 maaş oranıyla tüm çalışanları kontrol eder.

NOT: Saati 20 dolar olan çalışanların tümü SATIŞ departmanında değildir.

Kullanıcının görmek istediği şey, SALES departmanındaki çalışanlar ve 18 ya da 20 ödemeli çalışanlar olduğundan, Oracle’ın AND'e bakmadan önce VEYA operatörüne bakmasını istiyoruz.

İsterseniz VEYA'yı VE'nin üstüne koyabilirsiniz, ancak bu yardımcı olmaz. Oracle, öncelikle VE operatörüne bakar, çünkü emsal sırasına göre daha yüksektir. Yapmamız gereken, bir şekilde YA'yı yükseltmek ve hatta bilgisayarın bile anlayabileceği şekilde. Bunu başarmamızın yolu, OR koşullarını parantez () ile çevrelemektir.

Parantez, öncelik çizelgesi sırasına göre AND AND veya OR'den daha yüksektir. Önce parantez içindeki her şey değerlendirilecektir. Parantezleri bir arada gruplamak için bir arada değerlendirmek istediğinizde (bu örnekteki VEYA koşulları gibi) birlikte değerlendirmek istediğinizde Gruplandırma olarak adlandırılır.

Örneğin, önceki örneğimizin OR koşullarının etrafına parantez eklersek:

EmpECT empno, payrate, dept_code

emp_work

NEREDE; NERED dept_code = & # 39;

AND (payrat = 18

VEYA payrat = 20);

Payrat koşulları, etraflarındaki parantez nedeniyle ilk olarak gruplandırılır ve değerlendirilir. Sonra Oracle, AND ifadesine bakar.

Son olarak ne elde ettiğimiz, 18 VEYA 20 tutarında bir maaşına sahip olan tüm çalışanların bir listesini talep etmeyi seçen ve daha sonra da hangisinin SALES departmanında olduğunu kontrol eden ve bize sonuçları verecek olanı seçen bir seçim. aradık.

Özellikle basit seçimlerde, gruplamaya sıklıkla ihtiyaç duyulmaz.

Ancak, birden çok koşullu bir sorgudan beklenenden daha fazla veya farklı bilgi aldığınızı tespit ederseniz, gruplamanın başlangıçta aradığınız sonuçları vermeye yardımcı olacağına dair iyi bir tahmin .

Operatör Önceliği

Öncelik, aynı ifadedeki farklı operatörleri değerlendirirken Oracle'ın kullandığı sırayı tanımlar. Her operatör önceden tanımlanmış bir önceliğe sahiptir. Oracle, operatörleri daha düşük önceliğe sahip olmadan önce operatörleri değerlendirir. Eşit önceliği olan operatörler soldan sağa değerlendirilir.

* Kısmi * SQL Öncelik Sırasındaki İşleçler Tablosu

& – Parametre Öneki Olarak Kullanılan

() – Normal İşleç Önceliğini Geçersiz Kılma

NOT – İfadenin Sonuçlarını Tersine Çevirme

NOT – Her iki koşul da doğruysa doğru ifade etme

VEYA – Her iki koşul da doğruysa doğru ifade etme