Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan SQL dersinin bir bölümüdür. Eğitmen, Serdar adlı bir abinin hazırladığı müfredat çerçevesinde ders anlatmaktadır ve katılımcılarla etkileşimli bir şekilde ilerlemektedir.
- Video, SQL'de join işlemleri (inner join, left join, right join, full join ve cross join) hakkında kapsamlı bir anlatım sunmaktadır. Eğitmen, join türlerinin mantığını sayısal örnekler ve görsel gösterimlerle açıklamakta, ayrıca SQL'in fiziksel olarak kullandığı join yöntemlerini (loop, merge ve hash join) ve execution plan kavramını detaylı olarak ele almaktadır. Video, sorgu optimizasyonu ve performans analizi konularına da değinmektedir.
- Videoda ayrıca table value function'lar, subquery kullanımı, item type kodları ve attribute tanımları gibi konular da ele alınmaktadır. Eğitmen, SQL sorgularının verimli yazılmasına yönelik ipuçları vermektedir ve ilerleyen derslerde functionlar, triggerlar, store prosedürler ve kendi fonksiyonlar gibi konuların işleneceğini belirtmektedir.
- 00:03Ders Programı ve Join Kavramı
- Derslerde Serdar abilerle hazırlanan müfredat kullanılacak ve ilk ders join mantığını anlatacak.
- Daha sonra performans konuları, functionlar, triggerlar, store prosedürler ve kendi fonksiyonlar ele alınacak.
- Öğrencilere bir dosya gönderilmiş ve herkesin kendi veritabanında çalışabileceği belirtilmiş.
- 01:18Tablo Oluşturma ve Klasik Join
- İki tablo (tablo bir ve tablo iki) oluşturulmuş ve değer kolonlarına veriler eklendi.
- Klasik join veya eski yazım join, from'dan sonraki alana tablo isimlerinin virgülle ayrılarak yazılması ve ver kısmında ilgili kolonların eşleştirilmesiyle yapılır.
- Join yaparken eşleştirilen sütunların adlarının aynı olması zorunlu değil, sadece içerisinde aynı verilerin olması önemli.
- 03:53Klasik Join Örneği
- Klasik join'de tablo bir ve tablo iki değerleri eşleştirilmiş ve sonuçta ortak alanlar gösterilmiştir.
- Tablo bir'de 1, 2, 3, 4, 5 değerleri ve tablo iki'de 1, 2, 3, 4, 6 değerleri bulunurken, klasik join sadece ortak olan 1, 2, 3, 4 değerlerini döndürmüştür.
- Klasik join, kesişim kümesini alır ve 1999'dan sonra ANSI standartlarına göre yerini inner join almıştır.
- 10:46Outer Join Türleri
- Outer join'ler kendi arasında left, right ve full outer join olmak üzere üç tane join çeşidi içerir.
- Left join ve left outer join arasında işlevsel anlamda hiçbir fark yoktur, sadece yazım standartlarını desteklemek için ikisi de kabul görmektedir.
- Left join, bir tabloda olan ve diğer tabloda kesişen kayıtları getirir, kesişmeyen kayıtları ise boş olarak gönderir.
- 15:01Join Mantığı
- Tablo sıralaması join sonuçlarını etkiler, left join'de sol taraftaki tablonun kesişmeyen kayıtları boş olarak gösterilir.
- Join mantığında tabloları eşleştirmek için on kısmında yazılan eşitlemelerin sırası veya öncelik sırası hiçbir şey ifade etmez.
- Mantık olarak join'lerin yapısal yapısı bu kadardır, performans açısından değinilecek yerler kalmıştır.
- 16:46SQL Join İşlemlerinin Yazım Biçimi
- Left join ve right join arasındaki yazımsal fark, okunabilirliği artırmak için tabloların yerlerini değiştirerek yazılmasıdır.
- V3 raporlarında genellikle belirli bir yazım kalıbı kullanılır ve bu kalıba göre raporlar yazılır.
- Right join, left join'in tam tersi çalışır; esas tablo (tabloda bir) yerine diğer tablo (tabloda iki) göre sıralama yapar.
- 19:36Join İşlemlerinin Performans Etkisi
- SQL cümlelerinde esas tablo kafamızda belirlenir ve mantıksal olarak ona göre join işlemleri yapılır.
- Tabloların yerlerini ters yazmak query'nin cevap verme süresini ve performansını olumsuz etkiler.
- Özellikle raporlamada left ve right join'lerin performansı çok kritiktir ve süre farklılıkları yaşanabilir.
- 21:23Full Join İşlemi
- Full join, iki tablodan da tüm verileri getirir ve hiçbir ilişki koşulu aramaz.
- Full join ile iner arasındaki fark, iner'in sadece kesişen kayıtları getirmesidir, full join ise ilişkisi olmayan kayıtları da null olarak getirir.
- Full join'de eşitlik koşulu verilmelidir, aksi takdirde SQL hata verir ve işlem tamamlanmaz.
- 24:36Cross Join Kavramı
- Cross join, Türkçe'ye "karşılıklı" anlamına gelen bir SQL join türüdür ve matematiksel olarak kartezyen çarpımı ifade eder.
- Kartezyen çarpım, tablolar arasındaki değerleri eşitlik kontrolü yapmadan tek tek çarparak tüm kombinasyonları oluşturur.
- Cross join genellikle matematiksel işlemler için kullanılır ve raporlama amaçlı SQL sorgularında nadiren tercih edilir.
- 30:04Join Türleri Özeti
- Klasik join ve inner join arasında hiçbir fark yoktur, SQL Server tarafından inner join olarak algılanır.
- Outer join'ler left, right ve full outer join olarak üç farklı türden oluşur.
- Inner join, iki tabloda kesişen kayıtları getirirken, outer join'ler bir tabloda olan ve diğerinde olmayan kayıtları da dahil eder.
- 35:05Join İşlemlerinin Fiziksel Temelleri
- SQL'de join işlemlerinde üç farklı fiziksel yöntem kullanılır: loop, merge ve hash.
- SQL, join ifadesi yazıldığında en iyi yolu kendisi seçer, ancak kullanıcı da isteğe bağlı olarak fiziksel yolu seçebilir.
- Execution plan adı verilen bir araç, SQL'in hangi join yöntemini kullandığını ve kaynakları nasıl kullandığını gösterir.
- 38:55Veritabanında Type Code'ların Anlamı
- Veritabanında her type code'a karşılık gelen bir function bulunmakta ve bu function'lar type code'ların açıklamasını içeriyor.
- Item type kodları için "item type" function'ı kullanılabilir, bu function'a dil kodu (lang code) parametresi verilerek type kodlarının açıklamaları alınabilir.
- Örneğin, item type kodları 1 için "ürün", 2 için "malzeme", 3 için "masraf", 4 için "servis", 5 için "sabit kıymet" anlamını taşır.
- 42:12Diğer Type Kodlarının Anlamı
- Sistemdeki süreçler için de benzer fonksiyonlar bulunmakta, örneğin "process" function'ı ile süreç kodlarının açıklamaları alınabilir.
- BP, EP gibi kısaltmaların anlamları da bu fonksiyonlar aracılığıyla bulunabilir.
- Cinsiyet bilgileri için de "gender" function'ı kullanılabilir: 1 erkek, 2 kadın, 3 bilinmiyor.
- 44:00SQL Sorgularında Tablo Eşleştirme
- İki tablo arasında eşleştirme yaparken, takma adlar vererek kolon isimlerini belirtebiliriz.
- CD_ITEM tablosundaki item type code ve item code ile PR_ITEM_UTERMUTE tablosundaki karşılıkları eşleştirilebilir.
- Tabloların veri tiplerini kontrol etmek için Alt+F1 kısayolu kullanılabilir.
- 50:30Sorgu Performansı ve Execution Plan
- Sorgularda sadece gerekli kolonları belirtmek, sorgunun performansını artırır ve daha az zaman alır.
- Execution plan, sorgunun arka planda nasıl çalıştığını gösterir.
- Execution plan'a ulaşmak için Ctrl+L kısayolu veya query menüsünden erişilebilir.
- 51:37SQL Join İşlemleri ve Performans
- SQL'in fiziksel olarak kullandığı join türleri loop, merge ve hash'tir; SQL en uygun join tipini otomatik olarak seçer.
- Execution plan'ı incelediğimizde, left join işlemi sorgunun yüzde 15'ini tüketirken, indeks kullanımında ise daha az kaynak harcanır.
- Primary key'ler (cluster index) sorgu performansını önemli ölçüde artırır çünkü sıralı indeksler sayesinde veriler daha hızlı bulunabilir.
- 53:25Join İşlemlerinin Performansı
- Klasik join işlemlerinde, left join yerine "write chain" kullanıldığında sorgu daha fazla kaynak tüketir (yüzde 18).
- Veri miktarı arttıkça join işlemlerinin performansı önemli ölçüde değişir.
- SQL'de "isnal" fonksiyonu, belirli bir koşul gerçekleşmezse alternatif bir değer döndürmek için kullanılır.
- 55:10Subquery Kullanımı
- Subquery kullanarak özellik tanımını getirmek için "isnal" fonksiyonu kullanılabilir.
- "isnal" fonksiyonu, belirli bir koşul gerçekleşmezse belirtilen değeri döndürür.
- Klasik join işlemlerinde, tablolar arasında bağlantı kurmak için ortak anahtarlar (item type code) kullanılır.
- 59:11SQL Sorgusu ve Subquery Sorunu
- Item type kodunda "type" kelimesinin gereksiz olduğu belirtiliyor.
- Özellik tanımlarından attribute kodu alınmış ve subquery ile özellik tanımından attribute kodu çekiliyor.
- Birden fazla dil desteği (Türkçe, İngilizce gibi) olduğunda subquery birden fazla değer döneceğinden hata alınıyor.
- 1:01:00Subquery Çözümü
- Top kullanmak kesinlikle doğru değil çünkü SQL rastgele bir dil seçebilir.
- Türkçe tanım için subquery'de "tcode = 'tr'" filtresi uygulanmalı.
- Subquery sadece bir değer döndürür, bu nedenle attribute type kodlarını doğru şekilde bağlamak gerekiyor.
- 1:04:06Join İşlemi ve Subquery Mantığı
- Klasik bir join işlemi yapıldı, inner join olarak.
- Subquery ile bir değer eklendiğinde sadece o değerin döndürüldüğü belirtiliyor.
- Subquery mantığı, ana tablo ile alt tablo arasında bağlantı kurmaktan ibaret.
- 1:06:42Subquery Kullanımının Faydaları
- Subquery, barkod veya temel fiyat gibi tek bir değer getirmek için harikulade bir çözüm sunuyor.
- Subquery ile verilen destek, raporların daha hızlı çalışmasını sağlıyor.
- SQL, join işlemleri için alt tablolarda halihazırda yapılmış bağlantıları kullanarak sistem performansını artırıyor.