Giriş
SQL dili
SQL, Yapılandırılmış Sorgu Dili kısaltmasıdır. SQL, ilişkisel veritabanlarıyla iletişim kurmak için kullanılır. SQL deyimleri veritabanındaki verileri güncelleştirme veya veritabanından veri alma gibi görevleri gerçekleştirmek için kullanılır. Örneğin, SQL SELECT deyimi veritabanını sorgulamak ve bir dizi veri satırı döndürmek için kullanılır. SQL'i kullanan yaygın ilişkisel veritabanı yönetim sistemlerinden bazıları Microsoft SQL Server, MySQL, PostgreSQL, MariaDB ve Oracle'dır.
Amerikan Ulusal Standartlar Enstitüsü (ANSI) tarafından tanımlanan bir SQL dil standardı vardır. Her satıcı kendi varyasyonlarını ve uzantılarını ekler.
Bu modülde şunları öğreneceksiniz:
- SQL'in ne olduğunu ve nasıl kullanıldığını anlama
- Şemalardaki veritabanı nesnelerini tanımlama
- SQL deyimi türlerini tanımlama
- Veritabanındaki tabloları sorgulamak için SELECT deyimini kullanma
- Veri türleriyle çalışma
- DLL'leri işleme
Transact-SQL
Select, INSERT, UPDATE ve DELETE gibi temel SQL deyimleri, hangi ilişkisel veritabanı sistemiyle çalışıyor olursanız olun kullanılabilir. Bu SQL deyimleri ANSI SQL standardının bir parçası olsa da, birçok veritabanı yönetim sisteminin kendi uzantıları da vardır. Bu uzantılar SQL standardı kapsamına girmeyen işlevleri sağlar ve güvenlik yönetimi, programlanabilirlik gibi alanları içerir. SQL Server, Azure SQL Veritabanı, Microsoft Fabric ve diğerleri gibi Microsoft veritabanı sistemleri Transact-SQL veya T-SQL adlı bir SQL diyalektini kullanır. T-SQL, veritabanında depolanan uygulama kodu olan saklı yordamları ve işlevleri yazmaya ve kullanıcı hesaplarını yönetmeye yönelik dil uzantılarını içerir.
SQL bildirim temelli bir dildir
Programlama dilleri yordamsal veya bildirim temelli olarak sınıflandırılabilir. Yordam dilleri, bilgisayarın bir görevi gerçekleştirmek için izlediği bir yönerge dizisi tanımlamanızı sağlar. Bildirim temelli diller, istediğiniz çıkışı açıklamanıza ve çıktıyı oluşturmak için gereken adımların ayrıntılarını yürütme altyapısına bırakmanıza olanak tanır.
SQL bazı yordam söz dizimlerini destekler, ancak SQL ile veri sorgulama genellikle bildirim temelli semantiği izler. İstediğiniz sonuçları açıklamak için SQL kullanırsınız ve veritabanı altyapısının sorgu işlemcisi bunu almak için bir sorgu planı geliştirir. Sorgu işlemcisi, iyi bir sorgu planı oluşturmak için veritabanındaki veriler ve tablolarda tanımlanan dizinler hakkındaki istatistikleri kullanır.
İlişkisel veriler
SQL, ilişkisel veritabanlarındaki verileri sorgulamak için en sık (her zaman olmasa da) kullanılır. İlişkisel veritabanı, verilerin her biri belirli bir varlık türünü (müşteri, ürün veya satış siparişi gibi) temsil eden birden çok tabloda (teknik olarak ilişkiler olarak adlandırılır) düzenlendiği veritabanıdır. Bu varlıkların öznitelikleri (örneğin, müşterinin adı, ürünün fiyatı veya satış siparişi tarihi) tablonun sütunları veya öznitelikleri olarak tanımlanır ve tablodaki her satır varlık türünün bir örneğini (örneğin, belirli bir müşteri, ürün veya satış siparişi) temsil eder.
Veritabanındaki tablolar, temsil edilen belirli varlığı benzersiz olarak tanımlayan anahtar sütunlar kullanılarak birbiriyle ilişkilidir. Her tablo için bir birincil anahtar tanımlanır ve bu anahtara başvuru, ilişkili herhangi bir tabloda yabancı anahtar olarak tanımlanır. Bir örne bakarak bunu anlamak daha kolaydır:
Diyagramda dört tablo içeren bir ilişkisel veritabanı gösterilmektedir:
- Müşteri
- SalesOrderHeader
- SalesOrderDetail
- Ürün
Her müşteri benzersiz bir CustomerID alanıyla tanımlanır; bu alan Müşteri tablosunun birincil anahtarıdır. SalesOrderHeader tablosunun her siparişi tanımlamak için OrderID adlı bir birincil anahtarı vardır ve ayrıca Müşteri tablosundaki birincil anahtara başvuran bir CustomerID yabancı anahtarı içerir ve böylece her siparişle ilişkili müşteriyi tanımlar. Tek tek öğelerle ilgili veriler, SalesOrderHeader tablosundaki OrderIDdeğerini LineItemNo değeriyle birleştiren bileşik birincil anahtara sahip SalesOrderDetail tablosunda depolanır. Bu değerlerin birleşimi bir satır öğesini benzersiz olarak tanımlar. OrderID alanı, satır öğesinin hangi siparişe ait olduğunu belirtmek için yabancı anahtar olarak da kullanılır. ÜrünKimliği alanı, hangi ürünün sipariş verildiğini belirtmek için ProductID tablosunun ProductID birincil anahtarının yabancı anahtarı olarak kullanılır.
Ayar tabanlı işleme
Küme teorisi, ilişkisel veri yönetimi modelinin matematiksel temellerinden biridir ve ilişkisel veritabanlarıyla çalışmanın temelidir. Kümeleri tam olarak anlamadan T-SQL'de sorgu yazabilirsiniz ancak en iyi performans için gerekli olabilecek daha karmaşık deyim türlerinden bazılarını yazmakta zorlanabilirsiniz.
Set teorisinin matematiğine dalmadan, bir kümeyi "bir bütün olarak kabul edilen kesin, ayrı nesneler koleksiyonu" olarak düşünebilirsiniz. SQL Server veritabanlarına uygulanan terimlerle, bir kümeyi aynı türden sıfır veya daha fazla üye içeren ayrı nesnelerden oluşan bir koleksiyon olarak düşünebilirsiniz. Örneğin, Customer tablosu bir kümeyi temsil eder: özellikle tüm müşterilerin kümesi. SELECT deyiminin sonuçlarının da bir küme oluşturduğunu göreceksiniz.
T-SQL sorgu deyimleri hakkında daha fazla bilgi edindikçe, her zaman tek tek üyeler yerine kümenin tamamını düşünmek önemlidir. Bu düşünce yapısı, her seferinde bir satır düşünmek yerine set tabanlı kod yazmanızı daha iyi sağlayacaktır. Kümelerle çalışmak için tek seferde bir yerine "hepsi bir kerede" gerçekleşen işlemler açısından düşünmek gerekir.
Küme teorisi hakkında dikkat edilmesi gereken önemli bir özellik, bir küme üyelerinin herhangi bir sıralamasıyla ilgili belirtim olmamasıdır. Bu sipariş eksikliği ilişkisel veritabanı tabloları için geçerlidir. İlk satır, ikinci satır veya son satır kavramı yoktur. Öğelere herhangi bir sırada erişilebilir (ve alınabilir). Sonuçları belirli bir sırada döndürmeniz gerekiyorsa, SELECT sorgunuzda ORDER BY yan tümcesini kullanarak bunu açıkça belirtmeniz gerekir.