مقارنه Access SQL مع SQL Server TSQL
Applies ToAccess لـ Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

إذا قمت بترحيل بيانات Access إلى SQL Server أو قمت بإنشاء حل Access مع SQL Server كقاعدة بيانات موجودة على الخادم، فمن المهم أن تعرف الاختلافات بين Access SQL وSQL Server Transact SQL (TSQL). فيما يلي الاختلافات المهمة التي تحتاج إلى معرفتها حتى يعمل الحل على النحو المنشود.

للحصول على مزيد من المعلومات، اطلع على Access SQL: المفاهيم الأساسية والكلمات وبناء الجملة ومرجع Transact-SQL.

اختلافات التعبير وبناء الجملة

هناك بعض الاختلافات في بناء الجملة والتعبير التي تتطلب التحويل. يلخص الجدول التالي العناصر الأكثر شيوعاً.

الفرق

Access SQL

SQL Server TSQL

سمة قاعدة البيانات العلائقية

عادةً ما يسمى الحقل

عادةً ما يسمى العمود

القيم الحرفية للسلاسل

علامة الاقتباس (")، على سبيل المثال "سهام عزة"

الفاصلة العليا (')، على سبيل المثال 'سهام عزة'

القيم الحرفية للتاريخ

علامة الشباك (#)، على سبيل المثال #1/1/2019#

علامة الاقتباس الأحادية (')، على سبيل المثال '1/1/2019'

مجموعة أحرف البدل المتعددة

علامة النجمة (*)، مثل "علياء*"

النسبة المئوية (%)، على سبيل المثال، 'علياء%'

مجموعة أحرف البدل الفردية

علامة الاستفهام (؟)، مثل "علياء؟"

التسطير السفلي (_)، مثل "علياء_"

عامل باقي القسمة

عامل الدالة MOD، على سبيل المثال القيمة1 MOD القيمة2

النسبة المئوية (%)، مثل القيمة1 % القيمة2

القيم المنطقية

WHERE Bitvalue = [True | False]

أو

WHERE Bitvalue = [-1 | 0]

WHERE Bitvalue = [1 | 0]

المعلمات

[<اسم غير العمود المعرّف>]

أو

في طريقه عرض SQL، استخدم تعريف معلمات SQL

@ParamName

الملاحظات   

  • يستخدم Access أحرف الاقتباس (") حول أسماء الجداول والعناصر. يمكن لـ T-SQL استخدامها لأسماء الجداول ذات المسافات، ولكن هذه ليست ممارسة تسمية قياسية. في معظم الحالات، يجب إعادة تسمية أسماء العناصر دون مسافات، ولكن يجب أيضاً إعادة كتابة الاستعلامات لعكس أسماء الجداول الجديدة. استخدم الأقواس [ ] للجداول التي لا يمكن إعادة تسميتها ولكنها لا تتوافق مع معايير التسمية. ويضيف Access أيضاً أقواساً إضافية حول المعلمات في الاستعلامات، ولكن يمكن إزالتها في T-SQL.

  • ضع في اعتبارك استخدام تنسيق التاريخ المتعارف عليه، yyyy-mm-dd hh:nn:ss، وهو معيار ODBC للتواريخ المخزنة كأحرف توفر طريقة متسقة لتمثيلها عبر قواعد البيانات والحفاظ على ترتيب فرز التاريخ.

  • لتجنب حدوث تشويش عند مقارنة القيم المنطقية، يمكنك استخدام المقارنة التالية لـ Access وSQL Server:

    • اختبار القيمة false    WHERE Bitvalue = 0

    • اختبار القيمة true    WHERE Bitvalue <> 0

القيم الخالية

ليست القيمة الخالية حقلاً فارغاً يعني "لا قيمة على الإطلاق". بل تُعد القيمة الخالية عنصراً نائباً يعني أن البيانات مفقودة أو غير معروفة. تطبق أنظمة قواعد البيانات التي تتعرف على القيم الخالية "منطقاً بثلاثة قيم"، مما يعني أن شيئاً ما قد يكون صواباً أو خاطئاً أو غير معروف. إذا لم تتعامل بشكل صحيح مع القيم الخالية، يمكنك الحصول على نتائج غير صحيحة عند إجراء مقارنات المساواة أو تقييم العبارات WHERE. فيما يلي مقارنة حول كيفية تعامل Access وSQL Server مع القيم الخالية.

تعطيل القيم الخالية في جدول

في Access وSQL Server، تتمثل التجربة الافتراضية في تمكين القيم الخالية. لتعطيل القيم الخالية في عمود جدول، قم بما يلي:

  • في Access، قم بتعيين الخاصية مطلوبة في الحقل إلى "نعم".

  • في SQL Server، أضف السمة NOT NULL إلى عمود في العبارة CREATE TABLE.

اختبار القيم الخالية في العبارة WHERE

استخدم دالات المقارنة IS NULL وIS NOT NULL:

  • في Access، استخدم القيم IS NULL أو IS NOT NULL. على سبيل المثال:

    SELECT … WHERE column IS NULL.
  • في SQL Server، استخدم القيم IS NULL أو IS NOT NULL. على سبيل المثال:

    SELECT … WHERE field IS NULL

تحويل القيم الخالية باستخدام الدالات

استخدم الدالات الخالية لحماية التعابير وإرجاع القيم البديلة:

  • في Access، استخدم الدالة NZ (القيمة، [valueifnull]) التي تقوم بإرجاع 0 أو قيمة أخرى. على سبيل المثال:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • في SQL Server، استخدم الدالة ISNULL(Value, replacement_value) التي تقوم بإرجاع 0 أو قيمة أخرى. على سبيل المثال:

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

استيعاب خيارات قاعدة البيانات

تتضمن بعض أنظمة قواعد البيانات آليات خاصة:

  • في Access، لا تتوفر خيارات قاعدة البيانات التي تتعلق بالقيمة Null.

  • في SQL Server، يمكنك استخدام الخيار SET ANSI_NULLS OFF لمقارنات المساواة المباشرة مع القيمة NULL باستخدام عوامل التشغيل = و <>. نوصيك بتجنب استخدام هذا الخيار لأنه تم إهماله، ويمكن أن يخلط بين الآخرين الذين يعتمدون على معالجة خالية متوافقة مع ISO.

التحويل والإرسال

كلما كنت تستخدم البيانات أو البرمجة، فهناك حاجة مستمرة للتحويل من نوع بيانات إلى آخر. يمكن أن تكون عملية التحويل بسيطة أو معقدة. إن المشاكل الشائعة التي تحتاج إلى التفكير فيها هي: التحويل الضمني أو الصريح، والإعدادات الإقليمية للتاريخ والوقت الحالي، وتقريب الأرقام أو اقتطاعها، وأحجام أنواع البيانات. لا يوجد بديل للاختبار الشامل وتأكيد النتائج.

في Access، يمكنك استخدام وظائف تحويل الأنواع، التي توجد منها إحدى عشرة وظيفة، تبدأ كل منها بالحرف C، واحدة لكل نوع بيانات. على سبيل المثال، لتحويل رقم ذات فاصلة عائمة إلى سلسلة:

CStr(437.324) returns the string "437.324".

في SQL Server، يمكنك استخدام الدالتين TSQL وهما CAST وCONVERT SQL، على الرغم من وجود وظائف تحويل أخرى لتلبيه الاحتياجات الخاصة. على سبيل المثال، لتحويل رقم ذات فاصلة عائمة إلى سلسلة:

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

الدالات DateAdd وDateDiff وDatePart

إن دالات التاريخ شائعة الاستخدام (DateAdd وDateDiff وDatePart) متشابهة في Access وTSQL، ولكن يختلف استخدام الوسيطة الأولى.

  • في Access، تسمى الوسيطة الأولى الفاصل الزمني، وهي عبارة عن تعبير سلسلة يتطلب علامات اقتباس.

  • في SQL Server، تسمى الوسيطة الأولى datepart، وتستخدم قيم الكلمات الأساسية التي لا تتطلب علامات اقتباس.

    المكون

    Access

    SQL Server

    السنة

    "yyyy"

    السنة، yy، yyyy

    ربع السنة

    "q"

    ربع السنة، qq، q

    الشهر

    "m"

    الشهر، mm، m

    يوم من السنة

    "y"

    يوم_من_السنة، dy، y

    يوم

    "d"

    اليوم، dd، d

    الأسبوع

    "ww"

    wk، ww

    يوم من أيام الأسبوع

    "w"

    يوم من أيام الأسبوع، dw

    الساعة

    "h"

    الساعة، hh

    الدقيقة

    "n"

    الدقيقة، mi، n

    الثانية

    "s"

    الثانية، ss، s

    ميلي ثانية

    ميلي ثانية، ms

مقارنة الدالات

يمكن أن تحتوي استعلامات Access على أعمدة محسوبة تستخدم أحياناً وظائف Access للحصول على النتائج. عندما تقوم بترحيل الاستعلامات إلى SQL Server، فإنك تحتاج إلى استبدال وظيفة Access بوظيفة TSQL مكافئة في حالة توفرها. إذا لم تكن هناك وظيفة TSQL مقابلة، يمكنك عادةً إنشاء عمود محسوب (مصطلح TSQL يستخدم لعمود محسوب) للقيام بما تريد. يحتوي TSQL على مجموعة واسعة من الوظائف ومن المفيد معرفة الميزات المتوفرة. للحصول على مزيد المعلومات، اطلع على ما هي دالات قواعد بيانات SQL؟.

يعرض الجدول التالي وظيفة Access التي لها وظيفة TSQL مقابلة.

فئة Access

الدالة Access

الدالة TSQL

إرسال

الدالة Chr

CHAR

إرسال

الدالة Day

DAY

إرسال

الدالة FormatNumber

FORMAT

إرسال

الدالة FormatPercent

FORMAT

إرسال

الدالة Str

STR

إرسال

دالات تحويل أنواع البيانات

CAST وCONVERT

تاريخ/وقت

الدالة Date

CURRENT_TIMESTAMP

تاريخ/وقت

الدالة Day

DATEFROMPARTS

تاريخ/وقت

الدالة DateAdd

DATEADD

تاريخ/وقت

الدالة DateDiff

DATEDIFF

DATEDIFF_BIG

تاريخ/وقت

الدالة DatePart

DATEPART

تاريخ/وقت

الدالة DateSerial

DATEFROMPARTS

تاريخ/وقت

الدالة DateValue

DATENAME

تاريخ/وقت

الدالة Hour

TIMEFROMPARTS

تاريخ/وقت

الدالة Minute

TIMEFROMPARTS

تاريخ/وقت

الدالة Month

MONTH

تاريخ/وقت

الدالة Now

SYSDATETIME

تاريخ/وقت

الدالة Second

TIMEFROMPARTS

الدالة Time

TIMEFROMPARTS

تاريخ/وقت

الدالة TimeSerial

TIMEFROMPARTS

تاريخ/وقت

الدالة Weekday

DATEPART

DATENAME

تاريخ/وقت

الدالة Year

YEAR

DATEFROMPARTS

دالات المجال التجميعية

الدالتان DFirst وDLast

FIRST_VALUE

LAST_VALUE

الرياضيات

الدالة Abs

ABS

الرياضيات

الدالة Atn

ATAN

ATN2

الرياضيات

الدالة Cos

COS

ACOS

الرياضيات

الدالة Exp

EXP

الرياضيات

الدالتان Int وFix

FLOOR

الرياضيات

الدالة Log

LOG

LOG10

الرياضيات

الدالة Rnd

RAND

الرياضيات

الدالة Round

ROUND

الرياضيات

الدالة Sgn

SIGN

الرياضيات

الدالة Sin

SIN

الرياضيات

الدالة Sqr

SQRT

تدفق البرنامج

الدالة Choose

CHOOSE

تدفق البرنامج

الدالة IIf

IIF

دالة إحصائية

الدالة Avg

AVG

دالات SQL التجميعية

الدالة Count

COUNT

COUNT_BIG

دالات SQL التجميعية

الدالتان Min وMax

MIN

MAX

دالات SQL التجميعية

الدالتان StDev وStDevP

STDEV

STDEVP

دالات SQL التجميعية

الدالة Sum

SUM

دالات SQL التجميعية

الدالتان Var وVarP

VAR

VARP

نص

الدالة Format

FORMAT

نص

الدالة LCase

LOWER

نص

الدالة Left

LEFT

نص

الدالة Len

LEN

نص

الدالات LTrim وRTrim وTrim

TRIM

LTRIM

RTRIM

نص

الدالة Replace

REPLACE

نص

الدالة Right

RIGHT

نص

الدالة StrReverse

REVERSE

نص

الدالة UCase

UPPER

هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.

تساعدك المجتمعات على طرح الأسئلة والإجابة عليها، وتقديم الملاحظات، وسماعها من الخبراء ذوي الاطلاع الواسع.