Aracılığıyla paylaş


1. Ders: Veritabanı nesneleri oluşturma ve sorgulama

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAnaliz Platformu Sistemi (PDW)Microsoft Fabric'te SQL veritabanı

Note

Transact-SQL ile Sorgulamaya Başlarken öğrenme yolu, pratik örneklerin yanı sıra daha ayrıntılı içerik sağlar.

Bu derste veritabanı oluşturma, veritabanında tablo oluşturma ve ardından tablodaki verilere erişme ve bunları değiştirme gösterilmektedir. Bu ders Transact-SQL kullanmaya giriş niteliğinde olduğundan, bu deyimler için kullanılabilen birçok seçeneği kullanmaz veya açıklamaz.

Transact-SQL deyimleri aşağıdaki yollarla yazılabilir ve Veritabanı Altyapısı'na gönderilebilir:

  • SQL Server Management Studio kullanarak. Bu öğreticide, Management Studio kullandığınız varsayılır, ancak Microsoft İndirme Merkezi'nden ücretsiz olarak indirilebilen Management Studio Express'i de kullanabilirsiniz.

  • sqlcmd yardımcı programını kullanarak.

  • Oluşturduğunuz bir uygulamadan bağlanarak.

Kod, kod deyimlerini nasıl gönderdiğinizden bağımsız olarak Veritabanı Altyapısı'nda aynı şekilde ve aynı izinlerle yürütülür.

Management Studio'da Transact-SQL deyimlerini çalıştırmak için Management Studio'yu açın ve SQL Server Veritabanı Altyapısı örneğine bağlanın.

Prerequisites

Bu öğreticiyi tamamlamak için SQL Server Management Studio'ya ve bir SQL Server örneğine erişmeniz gerekir.

SQL Server örneğinin yoksa bir tane oluşturun. Bir tane oluşturmak için aşağıdaki bağlantılardan platformunuzu seçin. SQL Kimlik Doğrulaması'nı seçerseniz, SQL Server oturum açma kimlik bilgilerinizi kullanın.

veritabanı oluşturun

Birçok Transact-SQL deyimi gibi CREATE DATABASE deyiminin de gerekli bir parametresi vardır: veritabanının adı. CREATE DATABASE ayrıca, veritabanı dosyalarını yerleştirmek istediğiniz disk konumu gibi birçok isteğe bağlı parametresi vardır. CREATE DATABASE isteğe bağlı parametreler olmadan çalıştırıldığında, SQL Server bu parametrelerin çoğu için varsayılan değerleri kullanır.

  1. Sorgu Düzenleyicisi penceresinde yazın ancak aşağıdaki kodu yürütmeyin:

    CREATE DATABASE TestData
    GO
    
  2. İşaretçiyi kullanarak sözcükleri CREATE DATABASEseçin ve F1 tuşuna basın. Makale CREATE DATABASE açılmalıdır. Bu tekniği, CREATE DATABASE ve bu öğreticide kullanılan diğer ifadeler için söz diziminin tamamını bulmak amacıyla kullanabilirsiniz.

  3. Sorgu Düzenleyicisi'nde F5 tuşuna basarak ifadeyi çalıştırın ve TestData adlı bir veritabanı oluşturun.

Veritabanı oluşturduğunuzda, SQL Server veritabanının model bir kopyasını oluşturur ve kopyayı veritabanı adıyla yeniden adlandırır. Veritabanının ilk boyutunu isteğe bağlı bir parametre olarak belirtmediğiniz sürece bu işlem yalnızca birkaç saniye sürer.

Note

Anahtar sözcüğü GO , tek bir toplu işlemde birden fazla deyim gönderildiğinde deyimleri ayırır. GO , toplu iş yalnızca bir deyim içerdiğinde isteğe bağlıdır.

Tablo oluştur

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)

Tablo oluşturmak için tablo için bir ad ve tablodaki her sütunun adlarını ve veri türlerini sağlamanız gerekir. Her sütunda null değerlere izin verilip verilmeyeceğini belirtmek de iyi bir uygulamadır. Tablo oluşturmak için, CREATE TABLE iznine ve tabloyu içerecek şema üzerinde ALTER SCHEMA iznine sahip olmanız gerekir. db_ddladmin sabit veritabanı rolü bu izinlere sahiptir.

Çoğu tablonun bir veya daha fazla sütundan oluşan bir birincil anahtarı vardır. Birincil anahtar her zaman benzersizdir. Veritabanı Altyapısı, herhangi bir birincil anahtar değerinin tabloda tekrar edilememe kısıtlamasını uygular.

Her birinin açıklaması için veri türlerinin ve bağlantıların listesi için bkz. Veri türleri.

Note

Veritabanı Altyapısı büyük/küçük harfe duyarlı veya büyük/küçük harfe duyarlı olmayan olarak yüklenebilir. Veritabanı Altyapısı büyük/küçük harfe duyarlı olarak yüklenirse, nesne adlarının her zaman aynı büyük/küçük harfe sahip olması gerekir. Örneğin OrderData adlı tablo, ORDERDATA adlı tablodan farklı bir tablodur. Veritabanı Altyapısı büyük/küçük harfe duyarlı olmayan olarak yüklenirse, bu iki tablo adı aynı tablo olarak kabul edilir ve bu ad yalnızca bir kez kullanılabilir.

Sorgu Düzenleyicisi bağlantısını TestData veritabanına değiştirme

Sorgu Düzenleyicisi penceresinde, veritabanı bağlantınızı değiştirmek için aşağıdaki kodu yazın ve yürütebilirsiniz TestData .

USE TestData
GO

Tabloyu oluşturma

Sorgu Düzenleyicisi penceresinde, adlı Productsbir tablo oluşturmak için aşağıdaki kodu yazın ve yürütebilirsiniz. Tablodaki sütunlar , , ProductIDProductNameve Priceolarak adlandırılırProductDescription. ProductID Sütun, tablonun birincil anahtarıdır. int, varchar(25), moneyve varchar(max) tüm veri türleridir. Yalnızca Price ve ProductionDescription sütunlarında, bir satır eklendiğinde veya değiştirildiğinde veri olmayabilir. Bu deyim şema olarak adlandırılan isteğe bağlı bir öğe (dbo.) içerir. Şema, tablonun sahibi olan veritabanı nesnesidir. Yöneticiyseniz, dbo varsayılan şemadır. dbo , veritabanı sahibi anlamına gelir.

CREATE TABLE dbo.Products
    (ProductID int PRIMARY KEY NOT NULL,
    ProductName varchar(25) NOT NULL,
    Price money NULL,
    ProductDescription varchar(max) NULL)
GO

Tabloya veri ekleme ve güncelleştirme

Tabloyu oluşturduğunuza Products göre, deyimini kullanarak tabloya veri eklemeye INSERT hazırsınız demektir. Veriler eklendikten sonra, deyimini kullanarak UPDATE satırın içeriğini değiştireceksiniz. Güncelleştirmeyi tek bir satırla WHERE kısıtlamak için deyiminin yan tümcesini kullanırsınızUPDATE. Dört deyim aşağıdaki verileri girer.

ProductID ProductName Price ProductDescription
1 Clamp 12.48 Workbench kelepçesi
50 Tornavida 3.17 Düz kafa
75 Lastik Çubuğu Lastik değiştirme aracı.
3000 3 mm Braket 0.52

Temel söz dizimi: INSERT, tablo adı, VALUESsütun listesi ve ardından eklenecek değerlerin listesi. Satırın önündeki iki kısa çizgi, satırın bir açıklama olduğunu ve metnin derleyici tarafından yoksayıldığını gösterir. Bu durumda, açıklama söz diziminin izin verilen bir varyasyonunu açıklar.

Tabloya veri ekleme

  1. Önceki görevde oluşturulan tabloya Products satır eklemek için aşağıdaki deyimi yürütür.

    -- Standard syntax
    INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription)
        VALUES (1, 'Clamp', 12.48, 'Workbench clamp')
    GO
    

    Ekleme başarılı olursa sonraki adıma geçin.

    Ekleme işlemi başarısız olursa, bunun nedeni Product tabloda zaten bu ürün kimliğine sahip bir satır olması olabilir. Devam etmek için tablodaki tüm satırları silin ve önceki adımı yineleyin. TRUNCATE TABLE , tablodaki tüm satırları siler.

    Tablodaki tüm satırları silmek için aşağıdaki komutu çalıştırın:

    TRUNCATE TABLE TestData.dbo.Products;
    GO
    

    Tabloyu kestikten sonra, bu komutu bu adımda yineleyin INSERT.

  2. Aşağıdaki ifade, alan listesinde (parantez içinde) ve değerler listesinde ProductID ile ProductName öğelerinin yerleşimini değiştirerek parametrelerin sağlanma sırasını nasıl değiştirebileceğinizi gösterir.

    -- Changing the order of the columns
    INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription)
        VALUES ('Screwdriver', 50, 3.17, 'Flat head')
    GO
    
  3. Aşağıdaki deyim, değerler doğru sırada listelendiği sürece sütunların adlarının isteğe bağlı olduğunu gösterir. Bu söz dizimi yaygındır, ancak başkalarının kodunuzu anlaması daha zor olabileceği için önerilmez. NULL bu ürünün fiyatı henüz bilinmediğinden sütun için Price belirtilir.

    -- Skipping the column list, but keeping the values in order
    INSERT dbo.Products
        VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.')
    GO
    
  4. Varsayılan şemanızdaki bir tabloya eriştiğiniz ve tabloyu değiştirdiğiniz sürece şema adı isteğe bağlıdır. Sütun ProductDescription null değerlere izin verdiğinden ve ProductDescription için değer sağlanmadığından, sütun adı ve değeri ifadeden tamamen çıkarılabilir.

    -- Dropping the optional dbo and dropping the ProductDescription column
    INSERT Products (ProductID, ProductName, Price)
        VALUES (3000, '3 mm Bracket', 0.52)
    GO
    

Ürünler tablosunu güncelleştirme

İkinci ürünün UPDATE'ini ProductName'den Screwdriver'e değiştirmek için aşağıdaki Flat Head Screwdriver deyimini yazın ve yürütün.

UPDATE dbo.Products
    SET ProductName = 'Flat Head Screwdriver'
    WHERE ProductID = 50
GO

Tablodaki verileri okuma

Tablodaki SELECT verileri okumak için deyimini kullanın. deyimi SELECT en önemli Transact-SQL deyimlerinden biridir ve söz diziminde birçok çeşitleme vardır. Bu öğreticide beş temel sürümle çalışacaksınız.

Tablodaki verileri okuma

  1. Tablodaki verileri okumak için, aşağıdaki deyimleri yazın ve yürütün Products.

    -- The basic syntax for reading data from a single table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
    GO
    
  2. Tablodaki tüm sütunları seçmek için yıldız işareti (*) kullanabilirsiniz. Yıldız işareti geçici sorgular içindir. Kalıcı kodda, tabloya daha sonra yeni bir sütun eklense bile deyiminin tahmin edilen sütunları döndürmesi için sütun listesini sağlayın.

    -- Returns all columns in the table
    -- Does not use the optional schema, dbo
    SELECT * FROM Products
    GO
    
  3. Döndürmek istemediğiniz sütunları atlayabilirsiniz. Sütunlar listelendikleri sırayla döndürülür.

    -- Returns only two of the columns from the table
    SELECT ProductName, Price
        FROM dbo.Products
    GO
    
  4. Kullanıcıya döndürülen satırları sınırlamak için bir WHERE yan tümce kullanın.

    -- Returns only two of the records in the table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
        WHERE ProductID < 60
    GO
    
  5. Sütunlardaki değerlerle döndürüldükleri gibi çalışabilirsiniz. Aşağıdaki örnek, sütunda Price bir matematik işlemi gerçekleştirir. Bu şekilde değiştirilmiş sütunların, AS anahtar sözcüğünü kullanarak bir ad belirtmediğiniz sürece bir adı yoktur.

    -- Returns ProductName and the Price including a 7% tax
    -- Provides the name CustomerPays for the calculated column
    SELECT ProductName, Price * 1.07 AS CustomerPays
        FROM dbo.Products
    GO
    

SELECT deyimindeki yararlı işlevler

Deyimlerdeki SELECT verilerle çalışmak için kullanabileceğiniz bazı işlevler hakkında bilgi için aşağıdaki makalelere bakın:

Görünümler ve saklı yordamlar oluşturun

Görünüm bir saklı SELECT deyimdir ve saklı yordam da toplu iş olarak yürütülen bir veya daha fazla Transact-SQL deyimidir.

Görünümler tablolar gibi sorgulanır ve parametreleri kabul etmemektedir. Saklı prosedürler görünümlerden daha karmaşıktır. Saklı yordamlar hem giriş hem de çıkış parametrelerine sahip olabilir ve ve IF deyimleri gibi WHILE kodun akışını denetlemek için deyimler içerebilir. Veritabanındaki yinelenen tüm eylemler için saklı yordamları kullanmak iyi bir programlama uygulamasıdır.

Bu örnekte, görünüm kullanarak tablodaki CREATE sütunlardan yalnızca ikisini seçen bir görünüm oluşturursunuzProducts. Ardından, bir fiyat parametresi kabul eden ve yalnızca belirtilen parametre değerinden daha düşük maliyetli ürünleri döndüren bir saklı yordam oluşturmak için kullanırsınız CREATE PROCEDURE .

Görünüm oluştur

Select deyimini yürüten ve ürünlerimizin adlarını ve fiyatlarını kullanıcıya döndüren bir görünüm oluşturmak için aşağıdaki deyimi yürütün.

CREATE VIEW vw_Names
   AS
   SELECT ProductName, Price FROM Products;
GO

Görünümü test edin

Görünümler tıpkı tablolar gibi değerlendirilir. Görünüme erişmek için bir SELECT ifadesi kullanın.

SELECT * FROM vw_Names;
GO

Saklı yordam oluştur

Aşağıdaki deyim bir saklı yordam adı pr_Namesoluşturur ve veri türü @VarPriceadlı money bir giriş parametresini kabul eder. Saklı yordam, Products less than veri tipinden money karakter veri tipine dönüştürülen giriş parametresi ile birleştirilen varchar(10) ifadesini yazdırır. Ardından, yordam görünümde bir SELECT deyimi yürütür ve giriş parametresini WHERE maddesinin bir parçası olarak geçirir. Bu, giriş parametresi değerinden daha düşük maliyetli tüm ürünleri döndürür.

CREATE PROCEDURE pr_Names @VarPrice money
   AS
   BEGIN
      -- The print statement returns text to the user
      PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
      -- A second statement starts here
      SELECT ProductName, Price FROM vw_Names
            WHERE Price < @VarPrice;
   END
GO

Saklı prosedürü test edin

Saklı yordamı test etmek için aşağıdaki komutu yazın ve yürütün. Yordam, Ders 1'de Products tablosuna girilen ve fiyatı 10.00'den küçük olan iki ürünün adını döndürmelidir.

EXECUTE pr_Names 10.00;
GO