Access SQL ile SQL Server TSQL'yi karşılaştırma

Uygulandığı Öğe
Microsoft 365 için Access Access 2024 Access 2021 Access 2019 Access 2016

Access verilerinizi SQL Server'a geçiriyorsanız veya arka uç veritabanı olarak SQL Server kullanan bir Access çözümü oluşturuyorsanız, Access SQL ile SQL Server Transact SQL (TSQL) arasındaki farkları bilmeniz çok önemlidir. Aşağıda çözümünüzün amaçlandığı gibi çalışması için bilmeniz gereken önemli çeşitlemeler açıklanır.

Daha fazla bilgi için bkz. Access SQL: temel kavramlar, sözlük, sözdizimi ve Transact-SQL Başvurusu.

Söz dizimi ve ifade farklılıkları

Dönüştürme gerektiren az sayıda söz dizimi ve ifade farkı vardır. Aşağıdaki tabloda en yaygın olanları özetlenmiştir.

Fark Access SQL SQL Server TSQL
İlişkili veritabanı özniteliği Çoğunlukla alan olarak adlandırılır Çoğunlukla sütun olarak adlandırılır
Dize değişmez değerleri Tırnak ("), "Merve H. Demir" gibi Kesme işareti ('), 'Merve H. Demir' gibi
Tarih değişmez değerleri Pound işareti (#), #1/1/2019# gibi Kesme işareti ('), '1/1/2019' gibi
Birden çok joker karakter Yıldız işareti (*), "Mel*" gibi Yüzde işareti (%), 'Mel%' gibi
Tek joker karakter Soru İşareti (?), "Mel?" gibi Alt çizgi (_), "Mel_" gibi
Mod işleci MOD işleci, Değer1 MOD Değer2 gibi Yüzde (%), Değer1 % Değer2 gibi
Boole değerleri WHERE Bitvalue = [True | False]
Veya
WHERE Bitvalue = [-1 | 0]
WHERE Bitvalue = [1 | 0]
Parametreler [<Tanımlı sütun> olmayan bir ad]
Veya
SQL görünümünde SQL Parametreleri Bildirimini kullanın
@ParamName

Notlar

  • Access, tablo adlarının ve nesnelerinin çevresinde tırnak işaretlerini (") kullanır. T-SQL bunları boşluklar içeren tablo adları için kullansa da bu standart bir adlandırma uygulaması değildir. Çoğu durumda nesne adlarının boşluk içermeyecek şekilde yeniden adlandırılması gerekir; ama sorgular da yeni tablo adlarını yansıtacak şekilde yeniden yazılmalıdır. Yeniden adlandırılamayan ama standart adlandırmaya da uymayan tablolar için köşeli ayraçları [ ] kullanın. Access sorgularda parametrelerin çevresine de fazladan parantezler ekler ama bunlar T-SQL'de kaldırılabilir.

  • Karakter olarak depolanan tarihler için bir ODBC standardı olan kurallı tarih biçimini (yyyy-aa-gg ss:dd:sn) kullanmayı göz önünde bulundurun çünkü bu, veritabanları arasında tarihlerin gösterilmesi için tutarlı bir yol sağlar ve veri sıralama düzenini korur.

  • Boole değerleriyle karşılaştırma yaparken karışıklığı önlemek için, Access ve SQL Server'da şu karşılaştırmayı kullanabilirsiniz:

    • Yanlış değer için sınama WHERE Bitvalue = 0
    • Doğru değer için test etme WHERE Bitvalue <> 0

Null değerler

Null değer "hiç değer yok" anlamına gelen boş alan değildir. Null değer verilerin eksik olduğu veya bilinmediği anlamına gelen yer tutucudur. Null değerleri tanıyan veritabanı sistemleri "üç değerli mantık" uygular; bu da bir şeyin doğru, yanlış veya bilinmez olabileceği anlamına gelir. Null değerleri düzgün işlemezseniz, eşitlik karşılaştırmaları yaparken veya WHERE yan tümcelerini hesaplarken yanlış sonuçlar elde edebilirsiniz. Burada Access’in ve SQL Server’ın null değerleri işleme biçimi karşılaştırılır.

Tabloda null değerleri devre dışı bırakma

Access’te ve SQL Server’da varsayılan deneyim null değerlerin etkin olmasıdır. Tablo sütununda null değerleri devre dışı bırakmak için aşağıdakileri yapın:

  • Access'te alanın Required özelliğini Yes olarak ayarlayın.
  • SQL Server’da CREATE TABLE deyimindeki bir sütuna NOT NULL özniteliğini ekleyin.

WHERE yan tümcesinde null değerleri test etme

IS NULL ve IS NOT NULL karşılaştırma koşullarını kullanın:

  • Access’te IS NULL veya IS NOT NULL kullanın. Örneğin:

    SELECT … WHERE column IS NULL.
    
  • SQL Server’da IS NULL veya IS NOT NULL kullanın. Örneğin:

    SELECT … WHERE field IS NULL
    

İşlevlerle null değerleri dönüştürme

İfadelerinizi korumak ve alternatif değerler döndürmek için null işlevlerini kullanın:

  • Access’te 0 veya başka bir değer döndüren NZ (değer, [nullisedeğer]) işlevini kullanın. Örneğin:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
    
  • SQL Server’da 0 veya başka bir değer döndüren ISNULL(Değer, değiştirildiği_değer) işlevini kullanın. Örneğin:

    SELECT AVG (ISNULL (Weight, 50)) FROM Product
    

Veritabanı seçeneklerini anlama

Bazı veritabanı sistemlerinde özel mekanizmalar bulunur:

  • Access’te Null ile ilgili hiçbir veritabanı seçeneği yoktur.
  • SQL Server'da, = ANSI_NULLS işleçlerini kullanarak NULL ile doğrudan eşitlik karşılaştırmaları yapmak için SET OFF seçeneğini <> kullanabilirsiniz. Bu seçeneği kullanmaktan kaçınmanızı öneririz çünkü kullanımdan kaldırılmıştır ve ISO uyumlu null işlemesinden yararlanan diğer kullanıcıların kafasını karıştırabilir.

Dönüştürme ve yayınlama

Verilerle veya programlamayla çalışırken, sürekli bir veri türünü diğerine dönüştürme gereği ortaya çıkar. Dönüştürme işlemi basit veya karmaşık olabilir. Üzerinde düşünmeniz gereken yaygın sorunlar: örtülü veya açık dönüştürme, geçerli tarih ve saat bölgesel ayarları, sayıların yuvarlanması veya kesilmesi ve veri tür boyutları. Sonuçlarınızı kapsamlı olarak test etme ve onaylama yerine kullanabileceğiniz hiçbir yöntem yoktur.

Access'te her veri türü için bir tane olmak üzere toplam on bir tane olan ve hepsi C harfiyle başlayan Tür Dönüştürme İşlevlerini kullanırsınız. Örneğin, kayan noktalı sayıyı dizeye dönüştürmek için:


CStr(437.324) returns the string "437.324".

Özel gereksinimler için başka Dönüştürme İşlevleri olsa da, SQL Server'de öncelikli olarak CAST ve CONVERT TSQL işlevlerini kullanırsınız. Örneğin, kayan noktalı sayıyı dizeye dönüştürmek için:


CONVERT(TEXT, 437.324) returns the string "437.324"

DateAdd, DateDiff ve DatePart işlevleri

Yaygın kullanılan bu tarih işlevleri Access'te ve TSQL’de birbirine benzerdir (DateAdd, DateDiff ve DatePart) ama ilk bağımsız değişkenin kullanımı farklılık gösterir.

  • Access'te ilk bağımsız değişkene aralık adı verilir ve tırnak işaretleri gerektiren bir dize ifadesidir.

  • SQL Server'de ilk bağımsız değişkene datepart adı verilir ve tırnak işaretleri gerektirmeyen anahtar sözcük değerlerini kullanır.

    Bileşen Access SQL Server
    Yıl "yyyy" year, yy, yyyy
    Çeyrek "q" quarter, qq, q
    Ay "m" month, mm, m
    Yılın Günü "y" dayofyear, dy, y
    Gün "d" day, dd, d
    Hafta "ww" wk, ww
    Haftanın Günü "w" weekday, dw
    Saat "h" hour, hh
    Dakika "n" minute, mi, n
    Saniye "s" second, ss, s
    Milisaniye millisecond, ms

İşlevlerin karşılaştırması

Access sorgularında, sonuçları almak için bazen Access İşlevlerini kullanan hesaplanan sütunlar bulunabilir. Sorguları SQL Server’a geçirdiğinizde Access işlevini varsa eşdeğer bir TSQL işleviyle değiştirmelisiniz. Buna karşılık gelen bir TSQL işlevi yoksa, istediğiniz yapmak için genellikle bir hesaplanan sütun (hesaplanan sütun için kullanılan TSQL terimi) oluşturabilirsiniz. TSQL'de çok çeşitli işlevler vardır ve nelerin kullanılabileceğini görmek işinize yarayacaktır. Daha fazla bilgi için bkz. SQL veritabanı işlevleri nelerdir?

Aşağıdaki tabloda hangi Access işlevinin eşdeğer bir TSQL işlevi olduğu gösterilir.

Access kategorisi Access işlevi TSQL işlevi
Dönüştürme Chr İşlevi DAMGA
Dönüştürme Day İşlevi GÜN
Dönüştürme FormatNumber İşlevi BIÇIM
Dönüştürme FormatPercent İşlevi BIÇIM
Dönüştürme Str İşlevi STR (İngilizce)
Dönüştürme Tür Dönüştürme İşlevleri CAST ve CONVERT
Tarih/Saat Date İşlevi CURRENT_TIMESTAMP
Tarih/Saat Day İşlevi DATEFROMPARTS
Tarih/Saat DateAdd İşlevi DATEADD işlevi
Tarih/Saat DateDiff İşlevi TARİHFARKI işlevi
DATEDIFF_BIG
Tarih/Saat DatePart İşlevi TARİH BÖLÜMÜ
Tarih/Saat DateSerial İşlevi DATEFROMPARTS
Tarih/Saat DateValue İşlevi TARIH ADI
Tarih/Saat Hour İşlevi TIMEFROMPARTS
Tarih/Saat Minute İşlevi TIMEFROMPARTS
Tarih/Saat Month İşlevi AY
Tarih/Saat Now İşlevi SYSDATETIME
Tarih/Saat Second İşlevi TIMEFROMPARTS
Time İşlevi TIMEFROMPARTS
Tarih/Saat TimeSerial İşlevi TIMEFROMPARTS
Tarih/Saat Weekday İşlevi TARİH BÖLÜMÜ
TARIH ADI
Tarih/Saat Year İşlevi YIL
DATEFROMPARTS
Etki Alanı Toplama DFirst, DLast İşlevleri FIRST_VALUE
LAST_VALUE
Matematik Abs İşlevi MUTLAK
Matematik Atn İşlevi ATAN
ATN2 (ATN2)
Matematik Cos İşlevi COS
ACOS
Matematik Exp İşlevi ÜS
Matematik Int, Fix İşlevleri TABANAYUVARLA işlevi
Matematik Log İşlevi LOG
LOG10
Matematik Rnd İşlevi =S_SAYI_ÜRET()
Matematik Round İşlevi YUVARLA
Matematik Sgn İşlevi İŞARET
Matematik Sin İşlevi SİN
Matematik Sqr İşlevi KAREKÖK
Program Akışı Choose İşlevi ELEMAN işlevi
Program Akışı IIf İşlevi IIF
İstatistik Avg İşlevi AVG işlevi
SQL Toplama Count İşlevi BAĞ_DEĞ_SAY
COUNT_BIG
SQL Toplama Min, Max İşlevleri MİN
MAK
SQL Toplama StDev, StDevP İşlevleri STDSAPMA
STDSAPMAS
SQL Toplama Sum İşlevi TOPLA
SQL Toplama Var, VarP İşlevleri VAR
VARS
Metin Format İşlevi BIÇIM
Metin LCase İşlevi KÜÇÜKHARF
Metin Left İşlevi SOL
Metin Len İşlevi UZUNLUK
Metin LTrim, RTrim ve Trim İşlevleri KIRP
LTRIM (LTRIM)
RTRIM işlevi
Metin Replace İşlevi DEĞİŞTİR
Metin Right İşlevi SAĞ
Metin StrReverse İşlevi TERS ÇEVIR
Metin UCase İşlevi BÜYÜKHARF