Aracılığıyla paylaş


Tanımlayıcılar (Entity SQL)

Tanımlayıcılar Entity SQL'de sorgu ifadesi diğer adlarını, değişken başvurularını, nesnelerin özelliklerini, işlevleri vb. temsil etmek için kullanılır. Entity SQL iki tür tanımlayıcı sağlar: basit tanımlayıcılar ve tırnak içine alınmış tanımlayıcılar.

Basit Tanımlayıcılar

Entity SQL'deki basit tanımlayıcı, alfasayısal ve alt çizgi karakterlerinden oluşan bir dizidir. Tanımlayıcının ilk karakteri alfabetik bir karakter (a-z veya A-Z) olmalıdır.

Teklif Edilen Tanımlayıcılar

Tırnak içine alınmış tanımlayıcı, köşeli ayraç ([]) içine alınmış herhangi bir karakter dizisidir. Tırnak içine alınmış tanımlayıcılar, tanımlayıcılarda geçerli olmayan karakterler içeren tanımlayıcılar belirtmenize olanak sağlar. Köşeli ayraçlar arasındaki tüm karakterler, tüm boşluklar dahil olmak üzere tanımlayıcının bir parçası olur.

Tırnak içinde belirtilen tanımlayıcı aşağıdaki karakterleri içeremez:

  • Newline.

  • Satır başı.

  • Sekmeler.

  • Geri tuşu.

  • Ek köşeli ayraçlar (yani tanımlayıcıyı gösteren köşeli ayraçların içindeki köşeli ayraçlar).

Tırnak işareti tanımlayıcısı Unicode karakterler içerebilir.

Tırnak içine alınmış tanımlayıcılar, aşağıdaki örnekte gösterildiği gibi tanımlayıcılarda geçerli olmayan özellik adı karakterleri oluşturmanıza olanak tanır:

SELECT c.ContactName AS [Contact Name] FROM customers AS c

Ayrıca, Entity SQL'in ayrılmış anahtar sözcüğü olan bir tanımlayıcı belirtmek için tırnak içine alınmış tanımlayıcıları da kullanabilirsiniz. Örneğin, türün Email "Kimden" adlı bir özelliği varsa, aşağıdaki gibi köşeli ayraçlar kullanarak from ayrılmış anahtar sözcüğünden bunu ayırt edebilirsiniz:

SELECT e.[From] FROM emails AS e

Nokta (.) işlecinin sağ tarafında tırnak içinde bir tanımlayıcı kullanabilirsiniz.

SELECT t FROM ts as t WHERE t.[property] == 2

Tanımlayıcıda köşeli ayraç kullanmak için fazladan bir köşeli ayraç ekleyin. Aşağıdaki "abc]" örneğinde tanımlayıcı verilmiştir:

SELECT t from ts as t WHERE t.[abc]]] == 2

Alıntılı tanımlayıcı karşılaştırma semantiği için bkz. Giriş Karakter Kümesi.

Diğer Ad Kuralları

Gerektiğinde Entity SQL sorgularında, aşağıdaki Entity SQL yapıları da dahil olmak üzere diğer adların belirtilmesi önerilir:

  • Satır oluşturucunun alanları.

  • Sorgu ifadesinin FROM yan tümcesindeki öğeler.

  • Sorgu ifadesinin SELECT yan tümcesindeki öğeler.

  • Sorgu ifadesinin GROUP BY yan tümcesindeki öğeler.

Geçerli Diğer Adlar

Entity SQL'deki geçerli diğer adlar herhangi bir basit tanımlayıcı veya tırnak içine alınmış tanımlayıcıdır.

Diğer Ad Oluşturma

Entity SQL sorgu ifadesinde diğer ad belirtilmezse, Entity SQL aşağıdaki basit kurallara göre bir diğer ad oluşturmaya çalışır:

  • Sorgu ifadesi (diğer adı belirtilmemişse) basit veya tırnak içine alınmış bir tanımlayıcıysa, diğer ad olarak bu tanımlayıcı kullanılır. Örneğin ROW(a, [b]), ROW(a AS a, [b] AS [b]) olur.

  • Sorgu ifadesi daha karmaşık bir ifadeyse ancak bu sorgu ifadesinin son bileşeni basit bir tanımlayıcıysa, bu tanımlayıcı diğer ad olarak kullanılır. Örneğin ROW(a.a1, b.[b1]), ROW(a.a1 AS a1, b.[b1] AS [b1]) olur.

Diğer ad adını daha sonra kullanmak istiyorsanız örtük diğer ad kullanmamanızı öneririz. Her zaman diğer adlar (örtük veya açık) çakışıyor veya aynı kapsamda yineleniyorsa, bir derleme hatası olacaktır. Aynı ada sahip açık veya örtük bir diğer ad olsa bile örtük diğer ad derlemeyi geçirir.

Örtük diğer adlar, kullanıcı girişlerine göre otomatik olarak oluşturulur. Örneğin, aşağıdaki kod satırı her iki sütun için de diğer ad olarak NAME oluşturur ve bu nedenle çakışacaktır.

SELECT product.NAME, person.NAME

Açık diğer adları kullanan aşağıdaki kod satırı da başarısız olur. Ancak, kodu okuyarak hata daha belirgin olacaktır.

SELECT 1 AS X, 2 AS X …

Kapsam Belirleme Kuralları

Varlık SQL'i, belirli değişkenlerin sorgu dilinde ne zaman görünür olduğunu belirleyen kapsam belirleme kurallarını tanımlar. Bazı ifadeler veya deyimler yeni adlar ekler. Kapsam belirleme kuralları, bu adların nerede kullanılabileceğini ve başka bir adla aynı ada sahip yeni bir bildirimin öncülünü ne zaman veya nerede gizleyebileceğini belirler.

Adlar bir Entity SQL sorgusunda tanımlandığında, bunların bir kapsam içinde tanımlandığı söylenir. Kapsam, sorgunun tüm bölgesini kapsar. Belirli bir kapsamdaki tüm ifadeler veya ad başvuruları, bu kapsamda tanımlanan adları görebilir. Kapsam başlamadan önce ve sona erdikten sonra kapsam içinde tanımlanan adlara başvurulamaz.

Kapsamlar iç içe yerleştirilmiş olabilir. Entity SQL'in bölümleri tüm bölgeleri kapsayan yeni kapsamlar ekler ve bu bölgeler kapsamları da tanıtır diğer Entity SQL ifadelerini içerebilir. Kapsamlar iç içe yerleştirildiğinde, başvuruyu içeren en iç kapsamda tanımlanan adlara başvurular yapılabilir. Dış kapsamlarda tanımlanan tüm adlara başvurular da yapılabilir. Aynı kapsam içinde tanımlanan iki kapsam eşdüzey kapsamlar olarak kabul edilir. Eşdüzey kapsamlar içinde tanımlanan adlara başvuru yapılamaz.

İç kapsamda bildirilen bir ad dış kapsamda bildirilen bir adla eşleşiyorsa, iç kapsamdaki veya bu kapsam içinde bildirilen kapsamlar içindeki başvurular yalnızca yeni bildirilen ada başvurur. Dış kapsamdaki ad gizlidir.

Aynı kapsamda bile adlara tanımlanmadan önce başvurulamaz.

Genel adlar yürütme ortamının bir parçası olarak bulunabilir. Bu, kalıcı koleksiyonların veya ortam değişkenlerinin adlarını içerebilir. Bir adın genel olması için en dış kapsamda bildirilmesi gerekir.

Parametreler bir kapsamda değil. Parametrelere başvurular özel söz dizimi içerdiğinden, parametre adları hiçbir zaman sorgudaki diğer adlarla harmanlamaz.

Sorgu İfadeleri

Entity SQL sorgu ifadesi yeni bir kapsam tanıtır. FROM yan tümcesinde tanımlanan adlar, soldan sağa görünüm sırasına göre kapsamda tanıtılır. Birleştirme listesinde ifadeler, listenin önceki bölümlerinde tanımlanan adlara başvurabilir. FROM yan tümcesinde tanımlanan öğelerin ortak özellikleri (alanlar vb.) kapsam dışına eklenmez. Bunlara her zaman diğer ad-nitelenmiş ad tarafından başvurulmalıdır. Genellikle, SELECT ifadesinin tüm bölümleri kapsam dışında kabul edilir.

GROUP BY yan tümcesi yeni bir eşdüzey kapsam da getirir. Her grubun, gruptaki öğelerin koleksiyonuna başvuran bir grup adı olabilir. Her gruplandırma ifadesi de grup kapsamına yeni bir ad ekler. Ayrıca, iç içe küme (veya adlandırılmış grup) da kapsama eklenir. Gruplandırma ifadelerinin kendileri kapsam dışındadır. Bununla birlikte, GROUP BY yan tümcesi kullanıldığında select-list (projeksiyon), HAVING yan tümcesi ve ORDER BY yan tümcesi, kapsamdan değil grup kapsamında olarak kabul edilir. Toplamalar, aşağıdaki madde işaretli listede açıklandığı gibi özel işlem alır.

Kapsamlar hakkında ek notlar aşağıdadır:

  • Select-list, kapsama sırayla yeni adlar ekleyebilir. Sağdaki projeksiyon ifadeleri, sola yansıtılan adlara başvuruda bulunabilir.

  • ORDER BY yan tümcesi, seçme listesinde belirtilen adlara (diğer adlar) başvurabilir.

  • SELECT ifadesindeki yan tümcelerin değerlendirilme sırası, adların kapsama giriş sırasını belirler. ÖNCE FROM yan tümcesi, ardından WHERE yan tümcesi, GROUP BY yan tümcesi, HAVING yan tümcesi, SELECT yan tümcesi ve son olarak ORDER BY yan tümcesi değerlendirilir.

Toplama İşleme

Entity SQL iki toplama türünü destekler: koleksiyon tabanlı toplamalar ve grup tabanlı toplamalar. Koleksiyon tabanlı toplamalar Entity SQL'de tercih edilen yapıdır ve grup tabanlı toplamalar SQL uyumluluğu için desteklenir.

Bir toplamayı çözümlerken, Entity SQL ilk olarak bunu koleksiyon tabanlı bir toplama olarak ele almaya çalışır. Bu başarısız olursa, Entity SQL toplama girişini iç içe toplama başvurusuna dönüştürür ve aşağıdaki örnekte gösterildiği gibi bu yeni ifadeyi çözümlemeye çalışır.

AVG(t.c) becomes AVG(group..(t.c))

Ayrıca bakınız