EasyDelphi Q&A
+1 تصويت
32 مشاهدات
صحيح ان لغة الاستعلام هي واحدة sql

لكن لاحضت انو استعلام sql في الاكسس يختلف احيانا عن لي في sql server .

هل يختلفان و هل يمكنني تشغيل استعلام الاكسس على sql server بدون مشاكل ?
سُئل في تصنيف vcl بواسطة (1,220 نقاط) | 32 مشاهدات

1 إجابة واحدة

+4 تصويتات

سؤال مبني على فرضية ( لغة الاستعلام واحدة في قواعد البيانات ) . وهذه الفرضية خطأ 

 لغة الاستعلام ليست واحدة في المجمل . هي مشتركة في الاساسيات أي  الـ Standerd ( القياسي )  والشكل العام . لكن الاختلافات كثيرة . لا تعد ولا تحصى . 

لهذا ينصح دائما تعلم قاعدة البيانات من مصدار هذه القاعدة وليس بشكل عام . بمعنى عند دراسة sql server لا يفترض ان تفتح مصادر msyql لتتعلم . 

تعلم قاعدة بيانات يسهل جدا تعلم غيرها . لكن لا يغني عن تعلم الباقي بشكل منفرد وكل قاعدة لوحدها .

هذا الكلام فقط عن الـ SQL . الاختلافات تتعدى إلى ابعد من ذلك بكثير . ليس مجرد مواصفات وقدرات . بل ميزات وخدمات وطريقة تعامل وبنية .

من امثلة الاختلافات SQL :
1 ـ اختيار اول عشر سجلات من الجدول  :
  

SQL Server :     select * from tableX Limit 10	 
MySQL      :     Select Top(10) * from tableX
Access     :     Select Top 10 * from tableX
 

2 ـ الـ Like : لاحظ الاختلاف في الأكسس . 

SQL Server :     Select * from tablX where fieldX like '%abc%';	 
MySQL      :     Select * from tablX where fieldX like '%abc%';
Access     :     Select * from tablX where fieldX like '*abc*'; ويقبل % ايضا بدل النجمة

 

3 ـ الـ Alias للحقول الحسابية و الـ Grouping  

الـ sql server مثلا لا تقبل استخدام الـ Alias الذي تعطيه كأسم لحقل مثل myField في المثال 

Select a, b, a+b as myField from TableX where myField = 10
Select a, b, sum(c) from tableX grouping by a 

ويجب كتابته بهذا الشكل

Select a, b, a+b as myField from TableX where a+b = 10
Select a, b, sum(c) from tableX grouping by a, b <<---- يجب كتابة كل الحقول في التجميع

لكن في الـ interbase و الـ firebird . تستطيع كتابتها بالشكل الاول . 

 

من امثلة اختلاف البنية :

1 ـ AutoInco : 

في الـ SQL Server و MySQL يوجد AutoInc . اما في Interbase والـ Firebird لا يوجد . بل يوجد اوبجيكت تعمله انت اسمه Sequance . وتضبط التزايد في الـ Triggers . 

2 ـ الـ Trigger : 

في الـ SQL server تستطيع ضبط الـ Trigger عن الاحداث المتعلقة بالسجل مثل بعد وقبل الحذف او التعديل او الاضافة .. اما في الـ Oracle تستطيع ضبط الـ Trigger على مستوى حقل معين واحد ان اردت . 

3 ـ الاجراءات الداخلية .
في الـ SQL Sever هناك 4 انواع للاجراءات حسب طبيعة الناتج من الاجراء . ولكل واحد طريقة كتابة وشكل تختلف بشكل بسيط عن الاخرى . رغم التشابه لكنه ليس نفسه . 
في الـ interbase و Firebird . اجراء واحد مهما كانت نوع النتيجة . 

 

هذا عدا الحديث عن Transaction و Bulk و و و ... وحتى على صعيد بعض الاسماء المشتركة لكنها لا تعني نفس الشيء  .. الاختلاف كما قلت لك لا يعد ولا يحصى . 

ملخص : 

تعلم قاعدة بيانات معينة لا يعني ابدا انك اصبحت تعرف باقي قواعد البيانات وانك لا تحتاج لدراستها . 
كل قواعد البيانات بحاجة لدراسة بشكل مستقل عن غيرها من المصادر الخاصة بها وليس من مصادر قواعد بيانات اخرى .

وما تعلمته في قاعدة بيانات ليس بالضرورة ان تجده في غيرها وان وجدته قد لا يعمل بنفس الاسلوب والالية

 

تم الرد عليه بواسطة (29,220 نقاط)
0
شكرااا كثيرا با استاذ
0
شرح وافي وكافي أستاذ، بارك الله فيك.

اسئلة متعلقة

0 تصويتات
1 إجابة
سُئل مايو 1 في تصنيف SQL بواسطة KHALED (7,610 نقاط) | 55 مشاهدات
0 تصويتات
2 إجابة
+1 تصويت
2 إجابة
سُئل أبريل 29 في تصنيف vcl بواسطة hidenpain (1,220 نقاط) | 40 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

454 سؤال
688 إجابة
1,287 تعليق
265 مستخدم