Access SQL ile SQL Server TSQL'yi karşılaştırma
Applies ToMicrosoft 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 kullanıp 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özcük dağarcığı ve söz dizimive 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ımlanmış bir sütun olmayan bir ad>]

Veya

SQL görünümünde SQL Parametreleri Bildirimini kullanın

@ParamAdı

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 etme    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 = ve <> işleçlerini kullanarak NULL ile doğrudan eşitlik karşılaştırmaları yapmak 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ı. 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".

SQL Server'da asıl olarak CAST ve CONVERT TSQL işlevlerini kullanırsınız ama özel gereksinimler için başka Dönüştürme İşlevleri de vardır. Ö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 interval adı verilir ve tırnak işaretleri gerektiren bir dize ifadesidir.

  • SQL Server’da 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 çoğunlukla hesaplanan sütun 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

CHAR

Dönüştürme

Day İşlevi

DAY

Dönüştürme

FormatNumber İşlevi

FORMAT

Dönüştürme

FormatPercent İşlevi

FORMAT

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

DATEDIFF

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

MONTH

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

YEAR

DATEFROMPARTS

Etki Alanı Toplama

DFirst, DLast İşlevleri

FIRST_VALUE

LAST_VALUE

Matematik

Abs İşlevi

ABS

Matematik

Atn İşlevi

ATAN

ATN2

Matematik

Cos İşlevi

COS

ACOS

Matematik

Exp İşlevi

EXP

Matematik

Int, Fix İşlevleri

FLOOR

Matematik

Log İşlevi

LOG

LOG10

Matematik

Rnd İşlevi

RAND

Matematik

Round İşlevi

ROUND

Matematik

Sgn İşlevi

SIGN

Matematik

Sin İşlevi

SIN

Matematik

Sqr İşlevi

SQRT

Program Akışı

Choose İşlevi

CHOOSE

Program Akışı

IIf İşlevi

IIF

İstatistik

Avg İşlevi

AVG

SQL Toplama

Count İşlevi

COUNT

COUNT_BIG

SQL Toplama

Min, Max İşlevleri

MIN

MAX

SQL Toplama

StDev, StDevP İşlevleri

STDEV

STDEVP

SQL Toplama

Sum İşlevi

SUM

SQL Toplama

Var, VarP İşlevleri

VAR

VARP

Metin

Format İşlevi

FORMAT

Metin

LCase İşlevi

LOWER

Metin

Left İşlevi

LEFT

Metin

Len İşlevi

LEN

Metin

LTrim, RTrim ve Trim İşlevleri

TRIM

LTRIM

RTRIM

Metin

Replace İşlevi

REPLACE

Metin

Right İşlevi

RIGHT

Metin

StrReverse İşlevi

REVERSE

Metin

UCase İşlevi

UPPER

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.

Topluluklar, soru sormanıza ve soruları yanıtlamanıza, geri bildirimde bulunmanıza ve zengin bilgiye sahip uzmanlardan bilgi almanıza yardımcı olur.