Ms sql sunucusu sorguları. MS SQL Server veritabanında sorgu (Sorgu) oluşturma örneği

Son güncelleme: 07/05/2017

Önceki konu başlığımızda SQL Management Studio'da tek tablolu basit bir veritabanı oluşturuldu. Şimdi ilk SQL sorgumuzu tanımlayıp çalıştıralım. Bunu yapmak için SQL Management Studio'yu açın, Object Explorer'da (sunucu adı) üst düzey öğeye sağ tıklayın ve beliren içerik menüsünden Yeni Sorgu'yu seçin:

Bundan sonra programın orta kısmında SQL komutlarını girmek için bir pencere açılacaktır.

Bir önceki konuda oluşturduğumuz tablo üzerinde bir sorgu çalıştıralım, özellikle buradan tüm verileri alacağız. Veritabanımızın adı üniversite, tablo ise dbo.Students, dolayısıyla tablodan veri almak için aşağıdaki sorguyu giriyoruz:

* üniversite.dbo.Students'TAN SEÇİN

SELECT ifadesi verileri seçmenizi sağlar. FROM verinin alınacağı kaynağı belirtir. Aslında bu sorguyla “universite.dbo.Students tablosundan tümünü seç” diyoruz. Tablonun adının, veritabanını ve şemayı belirten tam yolunu kullandığını belirtmekte fayda var.

İsteği girdikten sonra araç çubuğundaki Execute butonuna tıklayabilir veya F5 tuşuna basabilirsiniz.

Sorgunun yürütülmesinin bir sonucu olarak, programın alt kısmında sorgunun sonuçlarını, yani Öğrenciler tablosundaki tüm verileri görüntüleyen küçük bir tablo görünecektir.

Aynı veritabanı üzerinde birden fazla sorgu yapmamız gerekiyorsa, veritabanını commit etmek için USE komutunu kullanabiliriz. Bu durumda tabloları sorgularken veritabanı adı ve şeması olmadan adlarını belirtmeniz yeterlidir:

Üniversiteyi KULLANIN ÖĞRENCİLERDEN SEÇİN *

Bu durumda sorguyu sunucu için bir bütün olarak yürütüyoruz; sunucudaki herhangi bir veritabanına erişebiliyoruz. Ancak sorguları yalnızca belirli bir veritabanında da gerçekleştirebiliriz. Bunu yapmak için istediğiniz veritabanına sağ tıklayın ve içerik menüsünden Yeni Sorgu'yu seçin:

Bu durumda yukarıda kullanılan Students tablosunu sorgulamak isteseydik bu değerler zaten belli olacağından sorguda veritabanı adını ve şemasını belirtmemize gerek kalmazdı.

SQL Server Management Studio, her tür sorguyu oluşturmak için eksiksiz bir araç sağlar. Onun yardımıyla sorguları oluşturabilir, kaydedebilir, yükleyebilir ve düzenleyebilirsiniz. Ayrıca herhangi bir sunucuya bağlanmadan sorgular üzerinde çalışabilirsiniz. Bu araç aynı zamanda farklı projeler için sorgu geliştirme olanağı da sağlar.

Hem Sorgu Düzenleyicisi'ni hem de Çözüm Gezgini'ni kullanarak sorgularla çalışabilirsiniz. Bu makale bu araçların her ikisini de kapsamaktadır. SQL Server Management Studio'nun bu iki bileşenine ek olarak, yerleşik hata ayıklayıcıyı kullanarak SQL kodunda hata ayıklamaya bakacağız.

Sorgu düzenleyici

Sorgu Düzenleyici panelini açmak için Sorgu Düzenleyici, SQL Server Management Studio araç çubuğunda Yeni Sorgu düğmesini tıklayın. Bu panel, yalnızca Veritabanı Motoru sorgularını değil, tüm olası sorguları oluşturmaya yönelik düğmeleri görüntüleyecek şekilde genişletilebilir. Varsayılan olarak yeni bir Veritabanı Motoru sorgusu oluşturulur, ancak araç çubuğundaki ilgili düğmeye tıklayarak MDX, XMLA ve diğer sorguları da oluşturabilirsiniz.

Sorgu Düzenleyici panelinin altındaki durum çubuğu, düzenleyicinin sunucuyla bağlantısının durumunu gösterir. Sunucuya otomatik olarak bağlanmazsanız, Sorgu Düzenleyicisi'ni başlattığınızda, bağlanılacak sunucuyu ve kimlik doğrulama modunu seçmenize olanak tanıyan bir Sunucuya Bağlan iletişim kutusu görüntülenir.

Sorguları çevrimdışı düzenlemek, bir sunucuya bağlanıldığında olduğundan daha fazla esneklik sağlar. Sorguları düzenlemek için sunucuya bağlanmanıza gerek yoktur ve sorgu düzenleyici penceresinin bir sunucuyla bağlantısı kesilebilir (Sorgu --> Bağlantı --> Bağlantıyı Kes menü komutunu kullanarak) ve başka bir düzenleyici penceresi açmadan diğerine bağlanabilir. Çevrimdışı düzenleme modunu seçmek için, belirli bir sorgu türü için düzenleyiciyi başlattığınızda açılan sunucu bağlantısı iletişim kutusunda İptal düğmesine tıklamanız yeterlidir.

Aşağıdaki görevleri gerçekleştirmek için Sorgu Düzenleyicisini kullanabilirsiniz:

    Transact-SQL ifadelerinin oluşturulması ve yürütülmesi;

    oluşturulan Transact-SQL dil ifadelerini bir dosyaya kaydetme;

    ortak sorgular için yürütme planlarının oluşturulması ve analiz edilmesi;

    Seçilen sorgunun yürütme planını grafiksel olarak gösteren.

Sorgu Düzenleyici, yerleşik bir metin düzenleyici ve farklı eylemlere yönelik bir dizi düğme içeren bir araç çubuğu içerir. Ana sorgu düzenleyici penceresi yatay olarak sorgu paneline (üstte) ve sonuçlar paneline (altta) bölünmüştür. Yürütülecek Transact-SQL ifadeleri (yani sorgular) üst bölmeye girilir ve sistemin bu sorguları işlemesinin sonuçları alt bölmede görüntülenir. Aşağıdaki şekilde sorgu düzenleyicisine bir sorgu girme örneği ve bu sorguyu yürütmenin sonuçları gösterilmektedir:

İlk USE request ifadesi, SampleDb veritabanının geçerli veritabanı olarak kullanılacağını belirtir. İkinci ifade olan SELECT, Çalışan tablosundaki tüm satırları alır. Bu sorguyu çalıştırmak ve sonuçları görüntülemek için Sorgu Düzenleyicisi araç çubuğunda Yürüt düğmesini tıklayın veya F5 tuşuna basın.

Birkaç Sorgu Düzenleyici penceresi açabilirsiniz; Veritabanı Motorunun bir veya daha fazla örneğine birden fazla bağlantı kurun. SQL Server Management Studio araç çubuğundaki Yeni Sorgu düğmesine tıklanarak yeni bir bağlantı oluşturulur.

Sorgu Düzenleyici penceresinin altındaki durum çubuğu, sorgu ifadelerinin yürütülmesiyle ilgili aşağıdaki bilgileri görüntüler:

    mevcut işlemin durumu (örneğin, "İstek başarıyla tamamlandı");

    veritabanı sunucusu adı;

    geçerli kullanıcı adı ve sunucu işlem kimliği;

    geçerli veritabanı adı;

    son isteğin yerine getirilmesi için harcanan süre;

    bulunan satır sayısı

SQL Server Management Studio'nun temel avantajlarından biri, Sorgu Düzenleyicisi için de geçerli olan kullanım kolaylığıdır. Sorgu Düzenleyicisi, Transact-SQL ifadelerinin kodlanmasını kolaylaştırmak için birçok özellik sağlar. Özellikle Transact-SQL ifadelerinin okunabilirliğini geliştirmek için sözdizimi vurgulamayı kullanır. Tüm ayrılmış kelimeler mavi renkte, değişkenler siyah renkte, dizeler kırmızı renkte ve yorumlar yeşil renkte gösterilir.

Ayrıca sorgu düzenleyicisi, bağlama duyarlı yardım adı verilen bir özellik ile donatılmıştır. Dinamik Yardım, aracılığıyla belirli bir talimat hakkında bilgi alabilirsiniz. Bir talimatın sözdizimini bilmiyorsanız, onu düzenleyicide seçin ve ardından F1 tuşuna basın. Ayrıca Books Online'dan yardım almak için çeşitli Transact-SQL ifadelerinin parametrelerini de vurgulayabilirsiniz.

SQL Management Studio, bir tür otomatik tamamlama aracı olan SQL Intellisense'i destekler. Başka bir deyişle, bu modül kısmen girilen Transact-SQL deyimi öğelerinin büyük olasılıkla tamamlanmasını önerir.

Nesne gezgini sorguları düzenlemenize de yardımcı olabilir. Örneğin, Çalışan tablosu için CREATE TABLE ifadesinin nasıl oluşturulacağını öğrenmek istiyorsanız, Object Explorer'da tabloya sağ tıklayın ve içerik menüsünden Komut Dosyası Tablosu As --> CREATE to --> New Query Editor Window'u seçin. tablolar --> CREATE Kullanımı --> Yeni Sorgu Düzenleyici Penceresi) görüntülenir. Bu şekilde oluşturulan CREATE TABLE ifadesinin bulunduğu Sorgu Düzenleyici penceresi aşağıdaki şekilde gösterilmiştir. Bu özellik aynı zamanda saklı prosedürler ve işlevler gibi diğer nesneler için de geçerlidir.

Nesne Tarayıcı, belirli bir sorgunun yürütme planını grafiksel olarak görüntülemek için çok kullanışlıdır. Sorgu yürütme planı, belirli bir sorguyu yürütmek için çeşitli olası seçenekler arasından sorgu iyileştirici tarafından seçilen yürütme seçeneğidir. Düzenleyicinin üst paneline gerekli sorguyu girin, Sorgu --> Tahmini Yürütme Planını Görüntüle menüsünden bir dizi komut seçin; bu sorgunun yürütme planı, editör penceresinin alt panelinde gösterilecektir.

Çözüm Gezgini

SQL Server Management Studio'da sorgu düzenleme, çözüm yöntemini temel alır. Yeni Sorgu düğmesini kullanarak boş bir sorgu oluşturursanız bu, boş bir çözümü temel alacaktır. Bunu, boş bir sorgu açtıktan hemen sonra Görünüm --> Çözüm Gezgini menüsünden bir dizi komut çalıştırarak görebilirsiniz.

Karar hiçbir projeyle, bir projeyle veya birkaç projeyle ilgili olmayabilir. Hiçbir projeyle ilgisi olmayan boş bir çözüm. Bir projeyi bir çözümle ilişkilendirmek için boş çözümü, Çözüm Gezgini'ni ve Sorgu Düzenleyicisi'ni kapatın ve Dosya --> Yeni --> Proje'yi çalıştırarak yeni bir proje oluşturun. Açılan Yeni Proje penceresinde orta bölmedeki SQL Server Komut Dosyaları seçeneğini seçin. Proje, dosyaları belirli bir konumdaki düzenlemenin bir yoludur. Projeye bir ad atayabilir ve konumu için diskte bir konum seçebilirsiniz. Yeni bir proje oluşturduğunuzda otomatik olarak yeni bir çözüm başlatılır. Solution Explorer'ı kullanarak mevcut bir çözüme proje ekleyebilirsiniz.

Solution Explorer, oluşturulan her proje için Bağlantılar, Sorgular ve Çeşitli klasörlerini görüntüler. Belirli bir proje için yeni bir Sorgu Düzenleyici penceresi açmak için Sorgular klasörüne sağ tıklayın ve içerik menüsünden Yeni Sorgu'yu seçin.

SQL Server'da hata ayıklama

SQL Server, SQL Server 2008'den başlayarak yerleşik bir kod hata ayıklayıcısına sahiptir. Bir hata ayıklama oturumu başlatmak için, SQL Server Management Studio ana menüsünden Hata Ayıkla --> Hata Ayıklamayı Başlat'ı seçin. Bir dizi komut kullanan bir örnek kullanarak hata ayıklayıcının nasıl çalıştığına bakacağız. Toplu iş, içerdiği tüm ifadeleri yürütmek için Veritabanı Motoruna gönderilen SQL ifadelerinin ve prosedür uzantılarının mantıksal bir dizisidir.

Aşağıdaki şekil p1 projesinde çalışan çalışanların sayısını sayan bir paketi göstermektedir. Bu sayı 4 veya daha fazla ise ilgili mesaj görüntülenir. Aksi takdirde çalışanların adı ve soyadı görüntülenir.

Belirli bir talimatta bir paketin yürütülmesini durdurmak için şekilde gösterildiği gibi kesme noktaları ayarlayabilirsiniz. Bunu yapmak için durmak istediğiniz satırın soluna tıklayın. Hata ayıklama başladığında yürütme, sarı okla işaretlenmiş olan kodun ilk satırında durur. Yürütme ve hata ayıklamaya devam etmek için Hata Ayıklama --> Devam menü komutunu seçin. Toplu talimatlar ilk kesme noktasına kadar yürütülmeye devam edecek ve sarı ok bu noktada duracaktır.

Hata ayıklama işlemiyle ilgili bilgiler Sorgu Düzenleyici penceresinin altındaki iki panelde görüntülenir. Farklı hata ayıklama bilgisi türlerine ilişkin bilgiler bu panellerde birkaç sekmede gruplandırılmıştır. Sol bölmede Otomobil sekmesi, Yereller sekmesi ve en fazla beş İzleme sekmesi bulunur. Sağ bölmede Çağrı Yığını, Konular, Kesme Noktaları, Komut Penceresi, Acil Pencere ve Çıkış sekmeleri bulunur. Yereller sekmesi değişken değerleri görüntüler, Çağrı Yığını sekmesi çağrı yığını değerlerini görüntüler ve Kesme Noktaları sekmesi kesme noktası bilgilerini görüntüler.

Hata ayıklama işlemini sonlandırmak için, Hata Ayıklama --> Hata Ayıklamayı Durdur ana menüsünden bir dizi komutu yürütün veya hata ayıklayıcı araç çubuğundaki mavi düğmeye tıklayın.

SQL Server 2012, SQL Server Management Studio'daki yerleşik hata ayıklayıcıya birkaç yeni özellik ekler. Artık içinde aşağıdaki işlemlerden birkaçını gerçekleştirebilirsiniz:

    Bir kesme noktası koşulu belirtin. Kesme noktası koşulu değerlendirilen değeri belirli bir noktada kod yürütmenin durup durmayacağını belirleyen bir SQL ifadesidir. Bir kesme noktası koşulu belirtmek için kırmızı kesme noktası simgesine sağ tıklayın ve içerik menüsünden Koşul'u seçin. Gerekli Boole ifadesini girmenize olanak tanıyan Kesme Noktası Koşulu iletişim kutusu açılır. Ayrıca ifadenin doğru olması durumunda yürütmeyi durdurmanız gerekiyorsa Is True anahtarını ayarlamanız gerekir. İfade değiştiğinde yürütmenin durdurulması gerekiyorsa Değiştirildiğinde anahtarını ayarlamanız gerekir.

    Kesme noktasındaki isabet sayısını belirtin. İsabet sayısı, yürütme sırasında kesme noktasına kaç kez vurulduğuna bağlı olarak belirli bir noktada yürütmenin durdurulması koşuludur. Belirtilen sayıda geçişe ve belirli bir kesme noktası için belirtilen başka herhangi bir koşula ulaşıldığında, hata ayıklayıcı belirtilen eylemi gerçekleştirir. İsabet sayısına bağlı olarak yürütmeyi durdurma koşulu aşağıdakilerden biri olabilir:

    1. koşulsuz (varsayılan eylem) (Her zaman kır);

      isabet sayısı belirtilen değere eşitse (Sayısı belirli bir değere eşit olduğunda mola verin);

      isabet sayısı belirli bir değerin katıysa (İsabet sayısı belirli bir değerin katına eşit olduğunda kesinti yapın);

      Sayısı belirli bir değere eşit veya daha büyük olduğunda ara verin.

    Hata ayıklama sırasında isabet sayısını ayarlamak için Kesme Noktaları sekmesinde gerekli kesme noktası simgesine sağ tıklayın, içerik menüsünden İsabet Sayısı'nı seçin ve ardından önceki listeden açılan Kesme Noktası İsabet Sayısı iletişim kutusundaki koşullardan birini seçin. Değer gerektiren seçenekler için bunu koşullar açılır listesinin sağındaki metin kutusuna girin. Belirtilen koşulları kaydetmek için Tamam'ı tıklayın.

    Bir kesme noktası filtresi belirtin. Kesme noktası filtresi, kesme noktası işlemini yalnızca belirtilen bilgisayarlara, işlemlere veya iş parçacıklarına sınırlar. Bir kesme noktası filtresi ayarlamak için istediğiniz kesme noktasına sağ tıklayın ve içerik menüsünden Filtrele'yi seçin. Ardından açılan Kesme Noktası Filtreleri iletişim kutusunda, bu kesme noktasının yürütülmesini kısıtlamak istediğiniz kaynakları belirtin. Belirtilen koşulları kaydetmek için Tamam'ı tıklayın.

    Bir kesme noktasında bir eylem belirtin. Vuruş Durumu koşulu, toplu yürütme belirli bir kesme noktasına ulaştığında gerçekleştirilecek eylemi belirtir. Varsayılan olarak, hem isabet sayma koşulu hem de durdurma koşulu karşılandığında yürütme iptal edilir. Alternatif olarak önceden belirlenmiş bir mesaj görüntülenebilir.

    Bir kesme noktasına ulaşıldığında ne yapılacağını belirlemek için kesme noktasının kırmızı simgesine sağ tıklayın ve içerik menüsünden Vurulduğunda'yı seçin. Açılan Kesme Noktası Vurulduğunda iletişim kutusunda, gerçekleştirmek istediğiniz eylemi seçin. Belirtilen koşulları kaydetmek için Tamam'ı tıklayın.

    Hızlı İzleme penceresini kullanın. Bir Transact-SQL ifadesinin değerini QuickWatch penceresinde görüntüleyebilir ve ardından ifadeyi Watch penceresine kaydedebilirsiniz. Hızlı İzleme penceresini açmak için Hata Ayıklama menüsünden Hızlı İzleme'yi seçin. Bu penceredeki ifade İfade açılır listesinden seçilebilir veya bu alana girilebilir.

    Hızlı Bilgi araç ipucunu kullanın. Farenizi bir kod kimliğinin üzerine getirdiğinizde Hızlı Bilgi aracı, bildirimini bir açılır pencerede görüntüler.

Tablo ifadeleri bir tablonun varlığının beklendiği durumlarda kullanılan alt sorgular olarak adlandırılır. İki tür tablo ifadesi vardır:

    türetilmiş tablolar;

    genelleştirilmiş tablo ifadeleri.

Tablo ifadelerinin bu iki biçimi aşağıdaki alt bölümlerde tartışılmaktadır.

Türetilmiş tablolar

Türetilmiş tablo bir sorgunun FROM yan tümcesinde yer alan bir tablo ifadesidir. Türetilmiş tablolar, SQL çeviricisinin takma ad bilinmeden önce başka bir ifadeyi işlemesi nedeniyle sütun takma adlarının kullanılmasının mümkün olmadığı durumlarda kullanılabilir. Aşağıdaki örnek, takma ad bilinmeden önce başka bir cümlenin işlendiği bir durumda sütun takma adını kullanma girişimini gösterir:

SampleDb'yi KULLANIN; AY(EnterDate)'i enter_month olarak SEÇİN Works_on'dan GROUP BY enter_month;

Bu sorguyu çalıştırmayı denemek aşağıdaki hata mesajını üretecektir:

Msg 207, Seviye 16, Durum 1, Satır 5 Geçersiz sütun adı "enter_month". (Mesaj 207: Seviye 16, Durum 1, Satır 5 Geçersiz sütun adı enter_month)

Hatanın nedeni, SELECT ifadesinin karşılık gelen listesi işlenmeden önce GROUP BY deyiminin işlenmesi ve grup işlenirken enter_month sütununun takma adının bilinmemesidir.

Bu sorun, önceki sorguyu içeren türetilmiş bir tablo kullanılarak çözülebilir (GROUP BY yan tümcesi olmadan), çünkü FROM yan tümcesi GROUP BY yan tümcesinden önce yürütülür:

SampleDb'yi KULLANIN; SELECT enter_month FROM (SELECT MONTH(EnterDate) as enter_month FROM Works_on) AS m GROUP BY enter_month;

Bu isteği yürütmenin sonucu şöyle olacaktır:

Genellikle bir tablo ifadesi, SELECT deyiminde tablo adının görünebileceği herhangi bir yere yerleştirilebilir. (Bir tablo ifadesinin sonucu her zaman bir tablo veya özel durumlarda bir ifadedir.) Aşağıdaki örnek, bir SELECT ifadesinin seçim listesinde bir tablo ifadesinin kullanımını gösterir:

Bu sorgunun sonucu:

Genel tablo ifadeleri

Ortak Tablo İfadesi (OTB) Transact-SQL dili tarafından desteklenen adlandırılmış bir tablo ifadesidir. Ortak tablo ifadeleri aşağıdaki iki sorgu türünde kullanılır:

    yinelemeli olmayan;

    yinelemeli.

Bu iki tür istek aşağıdaki bölümlerde ele alınmaktadır.

OTB ve özyinelemeli olmayan sorgular

OTB'nin yinelemeli olmayan biçimi, türetilmiş tablo ve görünümlere alternatif olarak kullanılabilir. Tipik olarak OTB şu şekilde belirlenir: İLE cümlecikler ve With yan tümcesinde kullanılan isme başvuran ek bir sorgu. Transact-SQL'de, With anahtar sözcüğünün anlamı belirsizdir. Belirsizliği önlemek için, With deyiminden önceki ifade noktalı virgülle sonlandırılmalıdır.

AdventureWorks2012'Yİ KULLANIN; Sales.SalesOrderHeader'dan SalesOrderID'yi SEÇİN WHERE TotalDue > (Sales.SalesOrderHeader'dan AVG(TotalDue) WHERE YEAR(OrderDate) = "2005") VE Navlun > (Sales.SalesOrderHeader'dan AVG(TotalDue) WHERE YEAR(OrderDate) = "2005'İ SEÇİN ")/2.5;

Bu örnekteki sorgu, toplam vergileri (TotalDue) tüm vergilerin ortalamasından büyük olan ve navlun ücretleri (Freight) ortalama vergilerin %40'ından fazla olan siparişleri seçer. Bu sorgunun ana özelliği uzunluğudur çünkü alt sorgunun iki kez yazılması gerekir. Sorgu oluşturma miktarını azaltmanın olası bir yolu, alt sorgu içeren bir görünüm oluşturmaktır. Ancak bu çözüm biraz karmaşık çünkü bir görünüm oluşturmayı ve sorgunun yürütülmesi bittikten sonra onu silmeyi gerektiriyor. Daha iyi bir yaklaşım bir OTB oluşturmak olacaktır. Aşağıdaki örnek, yukarıdaki sorgu tanımını kısaltan, yinelemeli olmayan OTB'nin kullanımını göstermektedir:

AdventureWorks2012'Yİ KULLANIN; Price_calc(year_2005) İLE AS ( Sales.SalesOrderHeader'dan AVG(TotalDue) SEÇİN WHERE YEAR(OrderDate) = "2005") Sales.SalesOrderHeader'dan SalesOrderID'yi SEÇİN WHERE TotalDue > (price_calc'tan yıl_2005 SEÇİN) VE Navlun > (price_calc'ten yıl_2005'İ SEÇİN ) /2,5;

Özyinelemeli olmayan sorgularda With deyiminin sözdizimi aşağıdaki gibidir:

cte_name parametresi, ortaya çıkan tabloyu tanımlayan OTB adını temsil eder ve sütun_list parametresi, tablo ifadesinin sütunlarının listesini temsil eder. (Yukarıdaki örnekte, OTB'ye fiyat_hesap adı verilmiştir ve yıl_2005 adında bir sütunu vardır.) inner_query parametresi, karşılık gelen tablo ifadesinin sonuç kümesini belirten bir SELECT ifadesini temsil eder. Tanımlanan tablo ifadesi daha sonra dış_sorguda kullanılabilir. (Yukarıdaki örnekteki dış sorgu, çift iç içe sorguyu basitleştirmek için OTB Price_calc ve onun Year_2005 sütununu kullanır.)

OTB ve özyinelemeli sorgular

Bu bölüm artan karmaşıklığa sahip materyali sunmaktadır. Bu nedenle ilk kez okurken atlayıp daha sonra geri dönmeniz önerilir. OTB'ler özyinelemeleri uygulamak için kullanılabilir çünkü OTB'ler kendilerine referanslar içerebilir. Özyinelemeli bir sorgu için temel OTB sözdizimi şuna benzer:

Cte_name ve Column_list parametreleri, yinelemeli olmayan sorgular için OTB'dekiyle aynı anlama sahiptir. Bir With yan tümcesinin gövdesi operatör tarafından birleştirilen iki sorgudan oluşur. BİRLİK TÜMÜ. İlk sorgu yalnızca bir kez çağrılır ve özyinelemenin sonucunu biriktirmeye başlar. UNION ALL operatörünün ilk işleneni bir OTB'ye referans vermiyor. Bu sorguya referans sorgusu veya kaynağı denir.

İkinci sorgu OTB'ye bir referans içerir ve onun özyinelemeli kısmını temsil eder. Bu nedenle buna özyinelemeli üye denir. Özyinelemeli kısma yapılan ilk çağrıda OTB referansı, referans sorgusunun sonucunu temsil eder. Özyinelemeli üye ilk sorgu çağrısının sonucunu kullanır. Bundan sonra sistem özyinelemeli kısmı tekrar çağırır. Özyinelemeli bir üyeye yapılan çağrı, ona yapılan önceki bir çağrı boş bir sonuç kümesi döndürdüğünde durur.

UNION ALL operatörü, mevcut birikmiş satırların yanı sıra geçerli çağrı tarafından özyinelemeli üyeye eklenen ek satırları birleştirir. (UNION ALL operatörünün varlığı, yinelenen satırların sonuçtan kaldırılmayacağı anlamına gelir.)

Son olarak, external_query parametresi, OTB'nin her iki üyenin birleşimine yapılan tüm çağrıları almak için kullandığı dış sorguyu belirtir.

OTB'nin özyinelemeli biçimini göstermek için aşağıdaki örnekte gösterilen kodla tanımlanan ve doldurulan Airplane tablosunu kullanıyoruz:

SampleDb'yi KULLANIN; CREATE TABLE Uçak(İçeren Montaj VARCHAR(10), İçerilen Montaj VARCHAR(10), Miktarİçerilen INT, Birim Maliyet DECIMAL(6,2)); Uçak DEĞERLERİNE EKLEYİN ("Uçak", "Gövde", 1, 10); Uçak DEĞERLERİNE EKLEYİN ("Uçak", "Kanatlar", 1, 11); Uçak DEĞERLERİNE EKLEYİN ("Uçak", "Kuyruk", 1, 12); Uçak DEĞERLERİNE EKLEYİN ("Gövde", "Salon", 1, 13); Uçak DEĞERLERİNE EKLEYİN ("Gövde", "Kokpit", 1, 14); Uçak DEĞERLERİNE GİRİN ("Gövde", "Burun",1, 15); Uçak DEĞERLERİNE INSERT ("Kabin", NULL, 1,13); Uçak DEĞERLERİNE INSERT ("Kokpit", NULL, 1, 14); Uçak DEĞERLERİNE EKLEYİN ("Burun", NULL, 1, 15); Uçak Değerlerine Ekle ("Kanatlar", NULL,2, 11); Uçak DEĞERLERİNE EKLEYİN ("Kuyruk", NULL, 1, 12);

Uçak tablosunun dört sütunu vardır. ContainingAssembly sütunu montajı tanımlar ve ContainedAssembly sütunu karşılık gelen montajı oluşturan parçaları (tek tek) tanımlar. Aşağıdaki şekilde olası bir uçak tipinin ve bileşen parçalarının grafiksel gösterimi gösterilmektedir:

Uçak tablosu aşağıdaki 11 satırdan oluşur:

Aşağıdaki örnek, her yapının toplam maliyetini hesaplayan bir sorgu tanımlamak için YOUR yan tümcesini kullanır:

SampleDb'yi KULLANIN; İLE list_of_parts(assembly1, miktar, maliyet) AS (SELECT ContainingAssembly, QuantityContained, UnitCost FROM Airplane WHERE ContainedAssembly IS NULL UNION ALL SELECT a.ContainingAssembly, a.QuantityContained, CAST(l.quantity * l.cost AS DECIMAL(6,2) ) Parça_listesinden l, Uçak a NEREDE l.montaj1 = a.İçerilenAssembly) Parça_listesinden montaj1 "Parça", miktar "Miktar", maliyet "Fiyat" SEÇİN;

İLE yan tümcesi, üç sütundan oluşan list_of_parts adlı bir OTB listesini tanımlar: montaj1, miktar ve maliyet. Örnekteki ilk SELECT ifadesi, özyineleme işleminin ilk adımının sonuçlarını depolamak için yalnızca bir kez çağrılır. Örneğin son satırındaki SELECT ifadesi aşağıdaki sonucu görüntüler.

Her birimiz düzenli olarak çeşitli veritabanlarıyla karşılaşır ve bunları kullanırız. Bir e-posta adresi seçtiğimizde bir veritabanıyla çalışıyoruz. Veritabanları arama hizmetleri, bankalar vb. tarafından müşteri verilerini depolamak için kullanılır.

Ancak veritabanlarının sürekli kullanımına rağmen, birçok yazılım sistemi geliştiricisi için bile aynı terimlerin farklı yorumlanması nedeniyle hala birçok kör nokta bulunmaktadır. SQL dilini ele almadan önce temel veritabanı terimlerinin kısa bir tanımını vereceğiz. Bu yüzden.

Veri tabanı - sıralı veri yapılarını ve bunların ilişkilerini depolamak için bir dosya veya dosya koleksiyonu. Çoğu zaman bir yönetim sistemine veritabanı denir - bu yalnızca belirli bir formatta bir bilgi deposudur ve çeşitli DBMS'lerle çalışabilir.

Masa - Belgelerin saklandığı, belirli bir özelliğe göre gruplandırılmış, örneğin geçen aya ait siparişlerin listesi gibi bir klasör hayal edelim. Bu, bilgisayardaki bir tablodur. Ayrı bir tablonun kendine özgü bir adı vardır.

Veri tipi - ayrı bir sütun veya satırda saklanmasına izin verilen bilgi türü. Bunlar sayılar veya belirli bir formattaki metin olabilir.

Sütun ve Satır- Hepimiz aynı zamanda satırları ve sütunları olan elektronik tablolarla çalışmışızdır. Herhangi bir ilişkisel veritabanı tablolarla benzer şekilde çalışır. Satırlar bazen kayıt olarak da adlandırılır.

Birincil anahtar- Bir tablonun her satırı, onu benzersiz şekilde tanımlayan bir veya daha fazla sütuna sahip olabilir. Birincil anahtar olmadan istenilen satırların güncellenmesi, değiştirilmesi ve silinmesi çok zordur.

SQL nedir?

SQL(İngilizce - yapılandırılmış sorgulama dili) yalnızca veritabanlarıyla çalışmak için geliştirilmiştir ve şu anda tüm popüler DBMS'ler için standarttır. Dilin sözdizimi az sayıda operatörden oluşur ve öğrenilmesi kolaydır. Ancak görünen basitliğine rağmen, her boyuttaki veritabanıyla karmaşık işlemler için sql sorgularının oluşturulmasına olanak tanır.

1992'den bu yana ANSI SQL adında genel kabul görmüş bir standart var. Operatörlerin temel sözdizimini ve işlevlerini tanımlar ve ORACLE gibi tüm DBMS pazar liderleri tarafından desteklenir. Dilin tüm yeteneklerini tek bir kısa makalede ele almak imkansızdır, bu nedenle yalnızca temel SQL sorgularını kısaca ele alacağız. Örnekler dilin basitliğini ve yeteneklerini açıkça göstermektedir:

  • veritabanları ve tablolar oluşturmak;
  • veri örneklemesi;
  • kayıt ekleme;
  • bilgilerin değiştirilmesi ve silinmesi.

SQL Veri Türleri

Bir veritabanı tablosundaki tüm sütunlar aynı veri türünü depolar. SQL'deki veri türleri diğer programlama dillerindekiyle aynıdır.

Tablolar ve veritabanları oluşturuyoruz

SQL'de yeni veritabanları, tablolar ve diğer sorgular oluşturmanın iki yolu vardır:

  • DBMS konsolu aracılığıyla
  • Veritabanı sunucusuna dahil olan etkileşimli yönetim araçlarını kullanma.

Operatör tarafından yeni bir veritabanı oluşturulur VERİTABANI YARAT<наименование базы данных>; . Gördüğünüz gibi sözdizimi basit ve özlüdür.

Aşağıdaki parametrelerle CREATE TABLE deyimini kullanarak veritabanı içinde tablolar oluştururuz:

  • Tablo ismi
  • sütun adları ve veri türleri

Örnek olarak aşağıdaki sütunları içeren bir Emtia tablosu oluşturalım:

Bir tablo oluşturun:

MASA OLUŞTUR

(commodity_id CHAR(15) NULL DEĞİL,

satıcı_id CHAR(15) BOŞ DEĞİL,

emtia_adı CHAR(254) NULL,

emtia_price DECIMAL(8,2) NULL,

emtia_desc VARCHAR(1000) NULL);

Tablo beş sütundan oluşmaktadır. Adın ardından veri türü gelir ve sütunlar virgülle ayrılır. Sütun değeri boş değerleri kabul edebilir (NULL) veya doldurulması gerekir (NULL DEĞİL) ve bu, tablo oluşturulduğunda belirlenir.

Bir tablodan veri almak

Veri getirme operatörü en sık kullanılan SQL sorgusudur. Bilgi elde etmek için böyle bir tablodan neyi seçmek istediğimizi belirtmeliyiz. Öncelikle basit bir örnek:

Emtiadan emtia_adı SEÇİN

SELECT deyiminden sonra bilgi alınacak sütunun adını belirtiriz, FROM ise tabloyu tanımlar.

Sorgunun sonucu, veritabanına girilme sırasına göre Commodity_name değerlerine sahip tablonun tüm satırları olacaktır; herhangi bir sıralama yapmadan. Sonucu sıralamak için ek bir ORDER BY cümleciği kullanılır.

Birkaç alanı sorgulamak için aşağıdaki örnekte olduğu gibi bunları virgüllerle ayırarak listeleyin:

Emtiadan emtia_id, emtia_adı, emtia_fiyatını SEÇİN

Bir satırın tüm sütunlarının değerini sorgu sonucu olarak almak mümkündür. Bunu yapmak için “*” işaretini kullanın:

* Emtiadan SEÇİN

  • Ayrıca SELECT şunları destekler:
  • Verileri sıralama (ORDER BY operatörü)
  • Koşullara göre seçim (NEREDE)
  • Gruplandırma terimi (GROUP BY)

Satır ekle

Bir tabloya satır eklemek için INSERT operatörüyle SQL sorguları kullanılır. Ekleme üç şekilde yapılabilir:

  • yeni bir satır ekleyin;
  • bir dizenin parçası;
  • sorgu sonuçları.

Tam satır eklemek için yeni satırın tablo adını ve sütunlarının (alanlarının) değerlerini belirtmeniz gerekir. İşte bir örnek:

INSERT INTO Emtia DEĞERLERİ("106 ", "50", "Coca-Cola", "1.68", "Alcogol Yok ,)

Örnek, tabloya yeni bir ürün ekler. Değerler her sütun için VALUES'tan sonra listelenir. Sütuna karşılık gelen bir değer yoksa NULL belirtilmelidir. Sütunlar, tablo oluşturulduğunda belirtilen sıraya göre değerlerle doldurulur.

Bir satırın yalnızca bir kısmını eklerseniz, örnekte olduğu gibi sütunların adlarını açıkça belirtmeniz gerekir:

INSERT INTO Emtia (emtia_kimliği, satıcı_kimliği, emtia_adı)

DEĞERLER("106 ", '50", "Coca-Cola",)

Sadece ürünün, tedarikçinin ve isminin tanımlayıcılarını girdik, geri kalan alanları boş bıraktık.

Sorgu Sonuçlarını Ekleme

INSERT öncelikle satır eklemek için kullanılır, ancak SELECT ifadesinin sonuçlarını eklemek için de kullanılabilir.

Verileri değiştirme

Bir veritabanı tablosunun alanlarındaki bilgileri değiştirmek için UPDATE ifadesini kullanmanız gerekir. Operatör iki şekilde kullanılabilir:

  • Tablodaki tüm satırlar güncellenir.
  • Sadece belirli bir hat için.

GÜNCELLEME üç ana unsurdan oluşur:

  • değişiklik yapılması gereken tablo;
  • alan adları ve yeni değerleri;
  • Değiştirilecek satırların seçilmesine ilişkin koşullar.

Bir örneğe bakalım. Diyelim ki ID=106 olan bir ürünün fiyatı değişti, dolayısıyla bu satırın güncellenmesi gerekiyor. Aşağıdaki operatörü yazıyoruz:

GÜNCELLEME Emtia SET emtia_price = "3.2" WHERE emtia_id = "106"

Tablonun adını, bizim durumumuzda güncellemenin yapılacağı Commodity'i, ardından SET - sütununun yeni değerini belirttik ve WHERE'de gerekli ID değerini belirterek istenen kaydı bulduk.

Birden çok sütunu değiştirmek için SET ifadesinin ardından virgülle ayrılmış birden çok sütun-değer çifti gelir. Bir ürünün adı ve fiyatının güncellendiği bir örneğe bakalım:

GÜNCELLEME Emtia SET emtia_adı='Fanta', emtia_fiyat = "3.2" WHERE emtia_id = "106"

Bir sütundaki bilgiyi kaldırmak için, eğer tablo yapısı buna izin veriyorsa, ona NULL değerini atayabilirsiniz. NULL'un metin veya sayı biçiminde sıfır değil, tam olarak "hayır" değeri olduğu unutulmamalıdır. Ürün açıklamasını kaldıralım:

GÜNCELLEME Emtia SET emtia_desc = NULL WHERE emtia_id = "106"

Satırları kaldırma

Bir tablodaki satırları silmek için kullanılan SQL sorguları, DELETE ifadesi kullanılarak yürütülür. İki kullanım durumu vardır:

  • Tablodaki belirli satırlar silinir;
  • Tablodaki tüm satırlar silinir.

Bir tablodan bir satırın silinmesine örnek:

Emtiadan SİL WHERE emtia_id = "106"

DELETE FROM'dan sonra satırların silineceği tablonun adını belirtiyoruz. WHERE yan tümcesi, satırların silinmek üzere seçileceği koşulu içerir. Örnekte ID=106 olan ürün grubunu siliyoruz. NEREDE belirtmek çok önemlidir çünkü bu ifadenin atlanması tablodaki tüm satırların silinmesine neden olacaktır. Bu aynı zamanda alanların değerinin değiştirilmesi için de geçerlidir.

DELETE deyimi sütun adlarını veya meta karakterleri belirtmez. Satırları tamamen siler ancak tek bir sütunu silemez.

Microsoft Access'te SQL kullanma

Tipik olarak etkileşimli olarak tablolar, veritabanları oluşturmak, bir veritabanındaki verileri yönetmek, değiştirmek, analiz etmek ve herhangi bir karmaşıklıkta SQL ifadeleri oluşturup anında yürütebileceğiniz kullanışlı bir etkileşimli sorgu tasarımcısı (Sorgu Tasarımcısı) aracılığıyla SQL Access sorgularını uygulamak için kullanılır.

Access DBMS'nin herhangi bir ODBC veri kaynağına SQL sorguları oluşturucu olarak kullanılabileceği sunucu erişim modu da desteklenir. Bu özellik, Access uygulamalarının herhangi bir formatla etkileşime girmesine olanak tanır.

SQL uzantıları

SQL sorguları prosedürel programlama dillerinin döngüler, dallanma vb. gibi tüm özelliklerine sahip olmadığından, DBMS üreticileri gelişmiş yeteneklere sahip kendi SQL sürümlerini geliştiriyorlar. Her şeyden önce bu, saklı prosedürler ve prosedür dillerinin standart operatörleri için destektir.

Dilin en yaygın lehçeleri:

  • Oracle Veritabanı - PL/SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Sunucusu - Transact-SQL
  • PostgreSQL - PL/pgSQL.

İnternette SQL

MySQL DBMS, ücretsiz GNU Genel Kamu Lisansı altında dağıtılmaktadır. Özel modüller geliştirme yeteneğine sahip ticari bir lisans vardır. Bir bileşen olarak XAMPP, WAMP ve LAMP gibi İnternet sunucularının en popüler derlemelerine dahil edilir ve İnternette uygulama geliştirmek için en popüler DBMS'dir.

Sun Microsystems tarafından geliştirilmiştir ve şu anda Oracle Corporation tarafından desteklenmektedir. Boyutu 64 terabyte'a kadar olan veritabanları, SQL:2003 söz dizimi standardı, veritabanlarının replikasyonu ve bulut hizmetleri desteklenmektedir.

SQL- Yapılandırılmış sorgu dili.
Bu incelemede en yaygın SQL sorgu türlerine bakacağız.
SQL standardı tanımlandı ANSI(Amerikan Ulusal Standartlar Enstitüsü).
SQL, özellikle ilişkisel veritabanlarını hedefleyen bir dildir.

SQL bölümleme:


DDL
(Veri Tanımlama Dili) - ANSI'deki Şema Tanımlama Dili olarak adlandırılan dil, veritabanında nesneler (tablolar, dizinler, görünümler vb.) oluşturan komutlardan oluşur.
DML(Veri işleme dili), herhangi bir zamanda tablolarda hangi değerlerin temsil edildiğini belirleyen bir komutlar kümesidir.
DCD(Veri Yönetimi Dili) bir kullanıcının belirli eylemleri gerçekleştirmesine izin verilip verilmeyeceğini belirleyen olanaklardan oluşur. ANSI DDL'nin bir parçasıdırlar. Bu isimleri unutmayın. Bunlar farklı diller değil, işlevlerine göre gruplandırılmış SQL komutlarının bölümleridir.

Veri tipleri:

SQL Server - Veri Türleri

Tanım

büyük (dahili 8)

büyük (dahili 8)

ikili(N)

ikili(n) veya görüntü

karakter
(eşanlamlı sözcük karakter)

ulusal karakter veya metin

karakter değişen(eşanlamlı sözcük char değişen varchar)

ulusal karakter değişiyor veya metin

Tarihsaat

tarihsaat

ondalık

diğer adıyla sayısal

çift ​​​​hassasiyet

çift ​​​​hassasiyet

tamsayı (dahili 4) (eşanlamlı sözcük: int)

tamsayı (dahili 4)

Ulusal karakter(eşanlamlı sözcük: Ulusal karakter, nchar)

Ulusal karakter

Sayısal(eş anlamlı: ondalık, aralık)

ulusal karakter değişiyor(eş anlamlı: ulusal karakter değişiyor, Nvarchar)

Ulusal karakter değişiyor

Küçük tarihsaat

tarihsaat

küçük (dahili 2)

küçük (dahili 2)

Küçük para

sql_variant

Artık desteklenmiyor

Nmetin
SQL Server 2005'ten başlayarak kullanılması önerilmez.

Zaman damgası

Desteklenmiyor

minik (dahili 1)

minik (dahili 1)

Benzersiz tanımlayıcı

benzersiz tanımlayıcı

değişken ikili(N)

değişken ikili(n) veya görüntü

küçük tarihsaat

tarihsaat

küçük (dahili 2)

küçük (dahili 2)

küçük para

sql_variant

Desteklenmiyor

zaman damgası

Desteklenmiyor

minik (dahili 1)

minik (dahili 1)

benzersiz tanımlayıcı

benzersiz tanımlayıcı

değişken ikili(N)

değişken ikili(n) veya görüntü

SQL Server 2000'deki Veri Türü Tablosu

İSTEK NEDİR?

Rica etmek veritabanı programınıza verdiğiniz bir komuttur. Sorgular DML dilinin bir parçasıdır. Tüm SQL sorguları tek bir komuttan oluşur. Bu komutun yapısı aldatıcı derecede basittir çünkü onu oldukça karmaşık değerlendirmeler ve veri manipülasyonları gerçekleştirmek için genişletmeniz gerekir.

SEÇ komutu:

SEÇME“Seç” en sık kullanılan komuttur; tablodan veri seçmek için kullanılır.
SELECT kullanarak sorgu türü:

Kullanıcı_tabanından kimlik, kullanıcı_adı, şehir, doğum_günü SEÇİN;

Böyle bir sorgu, user_base tablosundan, SELECT komutundan sonra virgüllerle ayrılmış olarak belirtilen sütunların tüm değerlerini gösterecektir. Ayrıca tüm sütunları tek karakterle görüntüleyebilirsiniz, örneğin * Kullanıcı_tabanından SEÇİN *; - böyle bir sorgu tablodaki tüm verileri gösterecektir.

Komut yapısını SEÇİN:

SELECT (Sorguda görüntülenmesi gereken, virgülle ayrılmış sütun adları) FROM (veritabanındaki tablo adı)
- Bu en basit istek türüdür. Verilerin uygun şekilde alınması için ek komutlar mevcuttur (aşağıdaki “İşlevler”e bakın)

DML komutları:

Üç DML (Veri İşleme Dili) komutu kullanılarak değerler alanlara yerleştirilebilir ve alanlardan kaldırılabilir:
SOKMAK(Sokmak)
GÜNCELLEME(Güncelleme, değişiklik),
SİLMEK(Silmek)

INSERT komutu:

INSERT INTO user_base (kullanıcı_adı, şehir, doğum_günü) VALUES ('İskender', 'Rostov', '06/20/1991');

INSERT komutu INTO (in to) önekiyle birlikte gelir, ardından parantez içinde veri eklememiz gereken sütunların adları bulunur, ardından VALUES komutu (değerler) gelir ve parantez içinde değerler sırayla gelir (bu Sütunlardaki değerlerin sırasına dikkat etmeniz gerekmektedir, değerler belirttiğiniz sütunlarla aynı sırada olmalıdır).

GÜNCELLEME komutu:

GÜNCELLEME user_base SET user_name = 'Alexey';

UPDATE komutu bir tablodaki değerleri günceller. Önce UPDATE komutunun kendisi gelir, ardından SET komutundan (set) sonra tablo adı gelir, ardından sütun adı ve tırnak içindeki değeri gelir (değer dize biçimindeyse tırnak işaretleri, sayısal bir değerse ve sütun vchar veri türüne veya başka herhangi bir dize türüne bağlı değildir; tırnak işaretlerinin hiçbir anlamı yoktur.)

SİL komutu:

user_base'DEN SİLİN WHERE user_name = 'Vasily';

DELETE komutu satırın tamamını siler ve WHERE kriterini kullanarak satırı tanımlar. Bu durumda bu sorgu, user_name sütun değerinin Vasily olduğu tüm satırları siler. WHERE kriteri ve diğerlerinden biraz sonra bahsedeceğiz.

Kriterler, işlevler, koşullar vb. SQL'de bize ne yardımcı olur:

WHERE yan tümcesi, SELECT komutunun ve diğer DML komutlarının bir yan tümcesidir ve tablodaki herhangi bir satır için koşulu doğru veya yanlış olabilen tahminleri ayarlamanıza olanak tanır. Komut, tablodan yalnızca bu ifadenin doğru olduğu satırları alır.
Örnek:
user_base'den kimlik, şehir, doğum_günü SEÇİN WHERE kullanıcı_adı = 'Alexey';- böyle bir sorgu yalnızca WHERE koşuluyla eşleşen satırları, yani kullanıcı_adı sütununun Alexey değerine sahip olduğu tüm satırları görüntüler.

ORDER BY - seçilen satırları sıralama koşulu. ASC ve DESC olmak üzere 2 kriteri vardır. ASC (A'dan Z'ye veya 0'dan 9'a sıralama)

DESC (ASC'nin tersi).
Örnek:
user_base'DEN kullanıcı_adı ASC'YE GÖRE ID, şehir, doğum_gününü SEÇİN; - böyle bir sorgu, kullanıcı_adı sütununa göre A'dan Z'ye (A-Z; 0-9) sıralanan değerleri gösterecektir.

Bu koşul WHERE deyimiyle birlikte de kullanılabilir.
Örnek:
user_base'den kimlik, şehir, doğum_gününü SEÇİN WHERE kullanıcı_adı = 'Alexey' ORDER BY id ASC;

DISTINCT, SELECT yan tümcenizden çift değerleri ortadan kaldırmanın bir yolunu sağlayan bir argümandır. Onlar. bir sütunda yinelenen değerler varsa, diyelim kullanıcı_adı, o zaman DISTINCT size yalnızca bir değer gösterecektir, örneğin, veritabanınızda Alexey adında 2 kişi varsa, o zaman DISTINCT işlevini kullanan bir sorgu size yalnızca 1 değer gösterecektir. ilk karşılaşılan...
Örnek:
Kullanıcı_tabanından DISTINCT kullanıcı_adı SEÇİN;- böyle bir sorgu bize user_name sütunundaki tüm kayıtların değerlerini gösterecektir, ancak bunlar tekrarlanmayacak, yani. sonsuz sayıda yinelenen değeriniz varsa, bunlar gösterilmeyecektir...

VE - iki Boolean'ı (A VE B biçiminde) argüman olarak alır ve her ikisinin de doğru olup olmadığını gerçeğe göre değerlendirir.
Örnek:
SEÇİN * FROM user_base WHERE şehir = 'Rostov' VE kullanıcı_adı = 'İskender';- şehrin adının tek satırda göründüğü tablodaki tüm değerleri gösterecektir (bu durumda Rostov ve kullanıcı adı Alexander.

VEYA - bağımsız değişken olarak iki Boolean (A VEYA B biçiminde) alır ve bunlardan birinin doğru olup olmadığını değerlendirir.

SEÇİN * FROM user_base WHERE şehir = 'Rostov' VEYA kullanıcı_adı = 'İskender';- Rostov şehrinin adının veya Alexander kullanıcı adının satırda göründüğü tablodaki tüm değerleri gösterecektir.

NOT - bağımsız değişken olarak tek bir Boolean (NOT A biçiminde) alır ve değerini false'tan true'ya veya true'dan false'a değiştirir.
SEÇİN * FROM user_base WHERE şehir = 'Rostov' VEYA DEĞİL kullanıcı_adı = 'İskender';- Rostov şehrinin adının tek satırda göründüğü veya kullanıcı adının tam olarak Alexander olmadığı tablodaki tüm değerleri gösterecektir.

IN - belirli bir değerin dahil edilebileceği veya edilemeyeceği bir değerler kümesini tanımlar.
SELECT * FROM user_base NEREDE şehir IN ('Vladivostok', 'Rostov');- böyle bir sorgu, şehir sütununda belirtilen şehirlerin adlarını içeren tablodaki tüm değerleri gösterecektir.

Arasında IN operatörüne benzer. IN'in yaptığı gibi, bir kümedeki sayılarla tanımlamanın aksine BETWEEN, yüklemin doğru olması için değerlerinin azalması gereken bir aralığı tanımlar.
* user_base'DEN 1 VE 10 ARASINDA NEREDE id SEÇİN;- kimlik sütununda 1 ile 10 arasında olacak tablodaki tüm değerleri görüntüler

COUNT - Sorgunun seçtiği alanların satır numaralarını veya NULL olmayan değerlerini üretir.
user_base'DEN COUNT (*) SEÇİN;- bu tablodaki satır sayısını gösterecektir.
user_base'den COUNT (DISTINCT kullanıcı_adı) SEÇİN;- kullanıcı adlarının bulunduğu satır sayısını gösterecektir (tekrarlanmaz)

SUM - belirli bir alan için seçilen tüm değerlerin aritmetik toplamını üretir.
user_base'DEN TOPLAM (id) SEÇİN;- kimlik sütununun tüm satırlarının değerlerinin toplamını gösterecektir.

AVG - bu alanın seçilen tüm değerlerinin ortalamasını alır.
user_base'DEN AVG (id) SEÇİN;- kimlik sütununda seçilen tüm değerlerin ortalamasını gösterecektir

MAX - bu alan için seçilen tüm değerlerin en büyüğünü üretir.

MIN - Bu alan için seçilen tüm değerlerin en küçüğünü üretir.

Tablolar oluşturmak:

CREATE TABLE user_base (id tamsayı, kullanıcı_adı metni, şehir metni, doğum_günü tarihsaat);- böyle bir komutun çalıştırılması, örneklerini verdiğim tablonun oluşmasına yol açacaktır... Burada her şey basit, CREATE TABLE komutunu yazıyoruz, ardından oluşturmak istediğimiz tablonun adını yazıyoruz, ardından parantez içinde, virgüllerle ayrılmış olarak sütunların adları ve veri türleri. Bu, SQL'de tablo oluşturmanın standart yoludur. Şimdi SQL Server 2005'te tablo oluşturmanın bir örneğini vereceğim:

ANSI_NULLS'U AÇIK AYARLAYIN
GİTMEK
QUOTED_IDENTIFIER'I AÇIK AYARLA
GİTMEK
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N."") VE (N"U") yazın)
BAŞLAMAK
TABLO OLUŞTURUN.(

GEÇERSİZ DEĞİL,
GEÇERSİZ DEĞİL,
GEÇERSİZ DEĞİL,
BİRİNCİL ANAHTAR KÜMELENMİŞ
A.S.C.


SON
GİTMEK
ANSI_NULLS'U AÇIK AYARLAYIN
GİTMEK
QUOTED_IDENTIFIER'I AÇIK AYARLA
GİTMEK
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N."") VE (N"U") yazın)
BAŞLAMAK
TABLO OLUŞTURUN.(
KİMLİK(1,1) BOŞ DEĞİL,
HÜKÜMSÜZ,
HÜKÜMSÜZ,
BİRİNCİL ANAHTAR KÜMELENMİŞ
A.S.C.
) (IGNORE_DUP_KEY = KAPALI) AÇIK İLE
) TEXTIMAGE_ON'DA
SON
GİTMEK
ANSI_NULLS'U AÇIK AYARLAYIN
GİTMEK
QUOTED_IDENTIFIER'I AÇIK AYARLA
GİTMEK
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N."") VE (N"U") yazın)
BAŞLAMAK
TABLO OLUŞTURUN.(
KİMLİK(1,1) BOŞ DEĞİL,
HÜKÜMSÜZ,
HÜKÜMSÜZ,
BİRİNCİL ANAHTAR KÜMELENMİŞ
A.S.C.
) (IGNORE_DUP_KEY = KAPALI) AÇIK İLE
) AÇIK
SON

SQL Server 2005'te sözdizimi başka bir konu, sadece SQL programlamanın temellerini anlattığımı göstermek istedim, temelleri bilerek kendiniz zirveye ulaşabilirsiniz.

Bu konuyla ilgili sorularınız varsa lütfen bana yazın