SQL Değişkenleri: SQL Server'da Değişken Tanımlama, Ayarlama ve Seçme

⚡ Akıllı Özet

SQL Server değişkenleri, bellekte tek bir veri değeri için yer tutucu görevi gören adlandırılmış nesnelerdir. Bir değişkene değer atanabilmesi ve yeniden kullanılabilmesi için öncelikle DECLARE ifadesiyle tanımlanması gerekir.

  • ???? Tanım: SQL Server değişkeni tek bir değer tutar ve bellek konumu için bir yer tutucu görevi görür.
  • ???? Yerel ve Küresel: SQL Server, kullanıcıların tanımladığı ve @ önekiyle başlayan yerel değişkenleri ve sistem tarafından yönetilen ve @@ önekiyle başlayan genel değişkenleri destekler.
  • 📝 İLAN ETMEK: DECLARE ifadesi bir değişken oluşturur ve varsayılan olarak onu NULL değerine başlatır.
  • 🔀 Üç atama yöntemi: Bir değer, DECLARE, SET veya SELECT işlemleri sırasında atanabilir.
  • 🔎 Skalar alt sorgular: SET ve SELECT komutlarının her ikisi de bir sorgudan tek bir değeri bir değişkene okuyabilir.
  • ???? SET ve SELECT arasındaki fark: SET komutu tek bir değişkene değer atar ve ANSI standardına uyar, SELECT komutu ise aynı anda birden fazla değişkene değer atayabilir.

SQL Server Değişkenleri: DECLARE, SET ve SELECT

SQL Server'da Değişken Nedir?

In MS SQL ServerDeğişkenler, bellek konumları için yer tutucu görevi gören nesnelerdir. Bir değişken, bir işlem veya prosedür boyunca okuyabileceğiniz ve yeniden kullanabileceğiniz tek bir veri değeri tutar.

SQL'de Değişken Türleri: Yerel, Global

MS SQL Server'da iki tür değişken vardır:

  • Yerel değişken
  • Küresel değişken

Ancak, bir kullanıcı yalnızca yerel değişken oluşturabilir. Aşağıdaki şekil, MS SQL Server'da bulunan iki değişken türünü açıklamaktadır.

SQL Server'da iki değişken türünün şematik gösterimi: yerel değişkenler ve genel değişkenler

Yerel değişken

  • Kullanıcı yerel değişkeni bildirir.
  • Varsayılan olarak, yerel değişken adları @ işaretiyle başlar.
  • Her yerel değişken, belirli bir oturum içindeki geçerli toplu işlem veya prosedürle sınırlıdır.

Küresel değişken

  • Sistem global değişkeni yönetir; kullanıcı böyle bir değişken tanımlayamaz.
  • Küresel değişken adları @@ ile başlar.
  • Oturumla ilgili bilgileri saklar.

SQL'de bir değişken nasıl DECLARE edilir?

Bir toplu işlemde veya prosedürde herhangi bir değişkeni kullanmadan önce... SQLBunu mutlaka bildirmelisiniz. DECLARE komutu, bellek konumu için yer tutucu görevi gören bir değişken oluşturur. Değişken, ancak bildirim yapıldıktan sonra toplu işlemin veya prosedürün sonraki bölümünde kullanılabilir.

TSQL Sözdizimi:

DECLARE  { @LOCAL_VARIABLE[AS] data_type  [ = value ] }

Kurallar:

  • Tanımlama sırasında başlatma işlemi isteğe bağlıdır.
  • Varsayılan olarak, DECLARE komutu değişkeni NULL olarak başlatır.
  • 'AS' anahtar kelimesini kullanmak isteğe bağlıdır.
  • Birden fazla yerel değişken tanımlamak için, ilk tanımdan sonra virgül ekleyin, ardından sonraki değişken adını verin ve veri tipi.

Değişken bildirme örnekleri

Sorgu: 'AS' ile

DECLARE @COURSE_ID AS INT;

Sorgu: 'AS' olmadan

DECLARE @COURSE_NAME VARCHAR (10);

Sorgu: İki değişkeni DECLARE

DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);

SQL Değişkenine değer atama

Bir değişkene aşağıdaki üç şekilde değer atayabilirsiniz:

  • DECLARE anahtar kelimesi kullanılarak değişken tanımlama sırasında.
  • SET kullanarak.
  • SELECT kullanarak.

Şimdi bu üç yöntemi de ayrıntılı olarak inceleyelim.

DECLARE anahtar kelimesini kullanarak değişken bildirimi sırasında

T-SQL Söz Dizimi:

DECLARE { @Local_Variable [AS] Datatype [ = value ] }

Burada, veri türünden sonra '=' işaretini ve atanacak değeri kullanabilirsiniz.

Sorgu:

DECLARE @COURSE_ID AS INT = 5
PRINT @COURSE_ID

Sorguyu çalıştırdığınızda, aşağıda gösterildiği gibi, tanımlama sırasında atanan değer yazdırılır.

DECLARE sırasında atanan bir değişkenin çıktısı, 5 değerini yazdırıyor.

SQL SET Değişkenini Kullanma

Bazen değişken tanımlama ve başlatma işlemlerini ayrı tutmak isteyebilirsiniz. SET komutu, değişken tanımlandıktan sonra ona bir değer atar. Aşağıda SET kullanarak değer atamanın farklı yolları verilmiştir.

Örnek: SET kullanarak bir değişkene değer atama

Sözdizimi:

DECLARE @Local_Variable <Data_Type>
SET @Local_Variable =  <Value>

Sorgu:

DECLARE @COURSE_ID AS INT
SET @COURSE_ID = 5
PRINT @COURSE_ID

Komut dosyasını çalıştırmak, aşağıda gösterildiği gibi SET komutuyla atanan değeri döndürür.

SET operatörü kullanılarak bir değişkene değer atanmasının çıktısı, 5 yazdırılıyor.

Örnek: SET kullanarak birden fazla değişkene değer atama

Sözdizimi:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>,
SET @Local_Variable_1 = <Value_1>
SET @Local_Variable_2 = <Value_2>

Kural: Bir SET anahtar kelimesi yalnızca bir değişkene değer atayabilir.

Sorgu:

DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5)
SET @COURSE_ID = 5
SET @COURSE_NAME = 'UNIX'
PRINT @COURSE_ID
PRINT @COURSE_NAME

Aşağıda gösterildiği gibi, iki PRINT ifadesi de atanan değerlerin her ikisini de döndürür.

SET komutuyla iki değişkene değer atamanın çıktısı, 5 ve UNIX çıktısı.

Örnek: SET kullanarak skalar alt sorgu ile bir değişkene değer atama

Sözdizimi:

DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)

Kurallar:

  • Sorguyu parantez içine alın.
  • Sorgu, tek satır ve tek sütun döndüren, yani skalar bir sorgu olmalıdır. Aksi takdirde, sorgu hata verir.
  • Sorgu sıfır satır döndürürse, değişken EMPTY yani NULL olarak ayarlanır.

Varsayalım ki elimizde şunlar var: tablo adlı 'GuruAşağıda gösterildiği gibi, iki sütunlu 99'luk bir tablo. Bu tablo aşağıdaki örneklerde kullanılmaktadır.

GuruÖrneklerde kullanılan Tutorial_ID ve Tutorial_name sütunlarına sahip 99 numaralı tablo.

Örnek 1: Alt sorgunun sonuç olarak tek bir satır döndürmesi

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3)
PRINT @COURSE_NAME

Alt sorgu yalnızca bir eşleşen satır döndürdüğü için, değişken aşağıdaki gibi bu değeri alır.

SET operatörü ile atanmış bir skalar alt sorgunun çıktısı, eşleşen eğitim adını yazdırıyor.

Örnek 2: Alt sorgunun sonuç olarak sıfır satır döndürmesi

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

Alt sorgu hiçbir satır döndürmediği için değişkenin değeri BOŞ, yani NULL'dur, bu nedenle aşağıda gösterildiği gibi hiçbir şey yazdırılmaz.

Hiçbir satır döndürmeyen ve değişkeni NULL olarak bırakan bir SET skalar alt sorgusunun çıktısı.

SQL SELECT Değişkenini Kullanma

SET komutunda olduğu gibi, DECLARE komutuyla tanımladığınız değişkenlere değer atamak için SELECT komutunu da kullanabilirsiniz. Aşağıda SELECT kullanarak değer atamanın farklı yolları verilmiştir.

Örnek: SELECT kullanarak bir değişkene değer atama

Sözdizimi:

DECLARE @LOCAL_VARIABLE <Data_Type>
SELECT @LOCAL_VARIABLE = <Value>

Sorgu:

DECLARE @COURSE_ID INT
SELECT @COURSE_ID = 5
PRINT @COURSE_ID

SELECT işlemi, aşağıda gösterildiği gibi değeri yazdırır.

SELECT kullanarak bir değişkene değer atamanın çıktısı, 5 yazdırılıyor.

Örnek: SELECT kullanarak birden fazla değişkene değer atama

Sözdizimi:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>,  @Local_Variable _2 = <Value_2>

Kural: SET'in aksine, SELECT virgülle ayrılmış birden fazla değişkene değer atayabilir.

DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5)
SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX'
PRINT @COURSE_ID
PRINT @COURSE_NAME

Aşağıda gösterildiği gibi, her iki değişken de tek bir SELECT sorgusunda atanır.

Tek bir SELECT sorgusuyla iki değişkene değer atamanın çıktısı, 5 ve UNIX çıktısı.

Örnek: SELECT kullanarak alt sorgu ile bir değişkene değer atama

Sözdizimi:

DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)

Kurallar:

  • Sorguyu parantez içine alın.
  • Sorgu, tek satır ve tek sütun döndüren skalar bir sorgu olmalıdır. Aksi takdirde, sorgu hata verir.
  • Sorgu sıfır satır döndürürse, değişken BOŞTUR, yani NULL'dur.

'Guru99' masa.

Örnek 1: Alt sorgunun sonuç olarak tek bir satır döndürmesi

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1)
PRINT @COURSE_NAME

Alt sorgu tek bir satır döndürdüğü için, değişken aşağıdaki gibi o değeri tutar.

SELECT ile atanan skalar alt sorgunun çıktısı, eşleşen eğitim adını yazdırır.

Örnek 2: Alt sorgunun sonuç olarak sıfır satır döndürmesi

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

Eşleşen satır bulunmadığında, değişken aşağıdaki gibi BOŞ, yani NULL kalır.

Hiçbir satır döndürmeyen ve değişkeni NULL olarak bırakan bir SELECT skalar alt sorgusunun çıktısı.

Örnek 3: Normal bir SELECT sorgusu kullanarak bir değişkene değer atama

Sözdizimi:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>

Kurallar:

  • SET'ten farklı olarak, sorgu birden fazla satır döndürürse, değişken değeri son satırın değerine ayarlanır.
  • Sorgu sıfır satır döndürürse, değişken EMPTY yani NULL olarak ayarlanır.

Sorgu 1: Sorgu tek bir satır döndürüyor.

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3
PRINT @COURSE_NAME

Aşağıda gösterildiği gibi, eşleşen tek satır değişken değerini belirler.

Tek satır döndüren normal bir SELECT sorgusunun çıktısı

Sorgu 2: Bu sorgu birden fazla satır döndürüyor.

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99
PRINT @COURSE_NAME

Birden fazla satır eşleştiğinde, değişken aşağıdaki örnekte gösterildiği gibi son satırdaki değeri korur.

Birden fazla satır döndüren normal bir SELECT sorgusunun çıktısı, keeping son satır değeri

Sorgu 3: Sorgu sıfır satır döndürüyor.

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5
PRINT @COURSE_NAME

Eşleşen satır olmadığında, değişken BOŞ olur, yani aşağıda gösterildiği gibi NULL değerine ulaşır.

Normal bir SELECT sorgusunun hiçbir satır döndürmemesi ve değişkeni NULL olarak bırakması.

Diğer SQL Değişken Örnekleri

Tanımlanmış bir değişken, sorgu içinde de kullanılabilir; örneğin, satırları filtrelemek için bir WHERE yan tümcesinde.

Sorgu:

DECLARE @COURSE_ID Int = 1
SELECT * from Guru99 where Tutorial_id = @COURSE_ID

Bu değişken sorguyu filtreler ve aşağıdaki gibi eşleşen satırı döndürür.

Bir WHERE yan tümcesinde değişken kullanarak filtreleme işleminin çıktısı. Guru99 tablosu

SQL Server Değişkenleri Hakkında İlginç Gerçekler!

  • Yerel bir değişken, PRINT komutunun yanı sıra SELECT komutu kullanılarak da görüntülenebilir.
  • Tablo veri türü, tanımlama sırasında 'AS' kullanımına izin vermez.
  • SET, ANSI standartlarına uygundur, SELECT ise uygun değildir.
  • @ adında yerel bir değişken oluşturmak da mümkündür. Örneğin, şu şekilde tanımlanabilir:
'DECLARE @@ as VARCHAR (10)'

SSS

DECLARE komutu atama yapılmadan çalıştırıldığında, SQL Server değişkeni NULL değerini alır. Değişken var olur ancak DECLARE komutuyla =, SET veya SELECT operatörlerinden birini kullanarak bir değer atayana kadar hiçbir değeri yoktur. Atama yapılmadan önce değişkene referans vermek NULL değerini döndürür.

Alt sorgu hiçbir satır döndürmediğinde, SET NULL değeri atar ve mevcut değeri geçersiz kılar. SELECT ise değişkeni değiştirmeden bırakır.ping Daha önce sahip olduğu değer ne olursa olsun. Bu fark, değişkenin başlangıçta NULL olmayan bir değere sahip olması durumunda önem kazanır.

DECLARE @t TABLE(…) şeklinde tanımlanan bir tablo değişkeni, tek bir partiye özgü küçük bir sonuç kümesini saklar. #temp tablosunun aksine, yalnızca kendi partisi içinde yaşar, oluşturulduktan sonra değiştirilemez ve genellikle küçük veri kümeleri için uygundur.

Yerel bir değişken, yalnızca tanımlandığı toplu işlem, saklı prosedür veya tetikleyici içinde ve tek bir oturumda kullanılabilir. GO anahtar kelimesi bir toplu işlemi sonlandırır, bu nedenle GO'dan önce tanımlanan bir değişkene GO'dan sonra erişilemez.

Bir değişken neredeyse tüm SQL Server sürümlerini kullanabilir. veri tipiBunlara int, decimal, varchar, nvarchar, date, datetime, bit ve table dahildir. Örtük dönüştürme hatalarını önlemek için değişkeni temsil ettiği sütunla eşleştirin.

SET komutuyla değişkeni kendisine yeniden atayın, örneğin SET @counter = @counter + 1. SELECT de işe yarar: SELECT @total = @total + price. Bu kalıp, komut dosyaları ve saklı prosedürler içindeki döngüleri ve toplamları yönlendirir.

Evet. GitHub Yardımcı Pilotu Doğal dil yorumlarından DECLARE, SET ve SELECT ifadeleri oluşturabilir ve uygun veri türlerini önerebilir. Üretimde çalıştırmadan önce oluşturulan adları, türleri ve atama mantığını şemanızla karşılaştırarak mutlaka gözden geçirin.

Yapay zeka ve makine öğrenimi asistanları tracDeğişkenlerin nasıl değer alıp ilettiğini, başlatılmamış veya yanlış türde yazılmış değişkenleri işaretler ve yavaş değişken tabanlı döngülerin yerini alacak küme tabanlı yeniden yazma önerileri sunar. Geliştirici, her değişikliği gerçek veriler ve iş yüküyle karşılaştırarak doğrular.

Bu yazıyı şu şekilde özetleyin: