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 geçirirseniz veya arka uç veritabanı olarak SQL Server ile bir Access çözümü oluşturursanı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 ve söz dizimi veTransact-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 Bildirimi'ni 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 test WHERE Bitvalue = 0
    • Doğru değer için test WHERE Bitvalue <> 0

Null değerler

Null değer, "hiç değer yok" anlamına gelen boş bir 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 ve bu da bir şeyin doğru, yanlış veya bilinmeyen olabileceği anlamına gelir. Null değerleri düzgün şekilde işlemezseniz, eşitlik karşılaştırmaları yaparken veya WHERE yan tümcelerini değerlendirirken yanlış sonuçlar alabilirsiniz. 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, = ve <> işleçlerini kullanarak NULL ile doğrudan eşitlik karşılaştırmaları için SET ANSI_NULLS 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ı. Kapsamlı test ve sonuçlarınızı onaylamanın yerini tutmaz.

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".

SQL Server, özel gereksinimler için başka Dönüştürme İşlevleri olsa da, ö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şken aralık olarak adlandırılır ve tırnak işareti gerektiren bir dize ifadesidir.

  • SQL Server ilk bağımsız değişkene datepart adı verilir ve tırnak işareti gerektirmeyen anahtar sözcük değerleri kullanılı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. karşılık gelen TSQL işlevi yoksa, istediğinizi yapmak için genellikle hesaplanan bir sütun (Hesaplanan sütun için kullanılan TSQL terimi) oluşturabilirsiniz. TSQL'in çok çeşitli işlevleri vardır ve nelerin kullanılabilir olduğunu görmek sizin yararınıza olur. 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 BİÇİM
Dönüştürme FormatPercent İşlevi BİÇİM
Dönüştürme Str İşlevi STR
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
Tarih/Saat DateDiff İşlevi DATEDİFF
DATEDIFF_BIG
Tarih/Saat DatePart İşlevi DATEPART
Tarih/Saat DateSerial İşlevi DATEFROMPARTS
Tarih/Saat DateValue İşlevi DATENAME
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 DATEPART
DATENAME
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
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
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 BİÇİM
Metin LCase İşlevi KÜÇÜKHARF
Metin Left İşlevi SOL
Metin Len İşlevi LEN
Metin LTrim, RTrim ve Trim İşlevleri KIRP
LTRİM
RTRIM
Metin Replace İşlevi DEĞİŞTİRMEK
Metin Right İşlevi SAĞ
Metin StrReverse İşlevi TERS
Metin UCase İşlevi BÜYÜKHARF