هناك العديد من الأنواع المختلفة من منتجات SQL التي يمكنك التخلص منها والبدء دون الاهتمام بالباقي. ولكن إذا كنت تريد استخدام ASP وSQL في نفس الوقت، فقد تشعر بالدوار.
تعد MySQL وSQL Server وmSQL أدوات SQL ممتازة، ولكن لسوء الحظ، لا يمكنك استخدامها لإنشاء عبارات SQL عملية في بيئة ASP. ومع ذلك، يمكنك استخدام معرفتك الخاصة بـ Access ومهارات Access المقابلة لها، إلى جانب نصائحنا وحيلنا، وأعتقد أنك ستتمكن من إضافة SQL بنجاح إلى صفحة ويب ASP الخاصة بك.
1. حدد البيانفي عالم SQL، العملية الأساسية هي عبارة SELECT. عند استخدام SQL مباشرة ضمن أداة قاعدة البيانات، سيكون الكثير من الأشخاص على دراية بالعمليات التالية:
حدد ماذا
من أي جدول
حيث المعايير
يؤدي تنفيذ البيان أعلاه إلى إنشاء استعلام يخزن نتائجه.
في ملفات صفحات ASP، يمكنك أيضًا استخدام الصيغة العامة المذكورة أعلاه، ولكن الوضع مختلف قليلاً عند البرمجة في ASP، يجب تعيين محتوى عبارة SELECT إلى متغير كسلسلة:
SQL = "حدد ماذا من أي جدول وأين المعايير"
حسنًا، الآن بعد أن فهمت الطريقة التي يتحدث بها SQL ضمن ASP، يمكنك اتباع نفس الطريقة طالما أنها تلبي احتياجاتك، ويمكن استخدام أوضاع استعلام SQL التقليدية والاستعلامات الشرطية.
على سبيل المثال، لنفترض أن لديك جدول بيانات في قاعدة بياناتك يسمى "المنتجات"، وتريد الآن استرداد كافة السجلات الموجودة في هذا الجدول. ثم تكتب الكود التالي :
SQL = "حدد * من المنتجات"
الكود أعلاه - وظيفة عبارة SQL هي استرداد جميع البيانات الموجودة في الجدول - بعد التنفيذ، سيتم تحديد جميع السجلات في جدول البيانات. ومع ذلك، إذا كنت تريد فقط استرداد عمود معين من الجدول، مثل p_name. ثم لا يمكنك استخدام حرف البدل *، عليك كتابة اسم عمود معين، ويكون الرمز كما يلي:
SQL = "اختر p_name من المنتجات"
بعد تنفيذ الاستعلام أعلاه، سيتم تحديد كافة محتويات العمود p_name في جدول المنتجات.
2. استخدم جملة WHERE لتعيين شروط الاستعلامفي بعض الأحيان، قد يكون استرداد جميع سجلات قاعدة البيانات يلبي متطلباتك فقط، ولكن في معظم الحالات نحتاج عادةً فقط إلى الحصول على جزء من السجلات. كيف يجب أن نصمم الاستعلام في هذه الحالة؟ بالطبع سيستغرق الأمر المزيد من التفكير، ناهيك عن أن هذه المقالة لا تريدك عمدًا أن تستخدم مجموعة السجلات الرديئة تلك.
على سبيل المثال، إذا كنت تخطط فقط لاسترداد سجلات p_name، ويجب أن تبدأ أسماء هذه السجلات بالحرف w، فسوف تستخدم جملة WHERE التالية:
SQL ="حدد p_name من المنتجات حيث p_name LIKE 'W%'"
الكلمة الأساسية WHERE تتبعها الشروط المستخدمة لتصفية البيانات، وبمساعدة هذه الشروط، سيتم الاستعلام عن البيانات التي تفي بمعايير معينة فقط. في المثال أعلاه، ستحصل نتيجة الاستعلام فقط على سجلات p_name التي تبدأ أسماؤها بـ w.
في المثال أعلاه، معنى رمز النسبة المئوية (%) هو توجيه الاستعلام لإرجاع كافة إدخالات السجل التي تبدأ بالحرف w ويتبعها أي بيانات أو حتى لا توجد بيانات. لذلك، عند تنفيذ الاستعلام أعلاه، سيتم تحديد الغرب والصفصاف من جدول المنتجات وتخزينهما في الاستعلام.
كما ترون، مع التصميم الدقيق لبيان SELECT الخاص بك، يمكنك تحديد كمية المعلومات التي يتم إرجاعها في مجموعة السجلات، والمزيد من التفكير سوف يلبي متطلباتك دائمًا.
هذه مجرد بداية لإتقان استخدام SQL. لمساعدتك على إتقان الاستخدام المعقد لعبارات SELECT تدريجيًا، دعنا نلقي نظرة على المصطلحات القياسية الأساسية: تُستخدم هذه الأشياء غالبًا عند إنشاء سلسلة SELECT الخاصة بك للحصول على بيانات محددة.
حيث أساسيات الجملة
عند البدء في إنشاء جملة WHERE، فإن أسهل طريقة هي استخدام رموز المقارنة القياسية، وهي <، <=، >، >=، <>، و=. من الواضح أنك ستفهم بسرعة المعنى والنتائج المحددة للكود التالي:
اختر * من المنتجات حيث p_price >= 199.95
اختر * من المنتجات حيث p_price <> 19.95
اختر * من المنتجات حيث p_version = '4'
ملاحظة: ستلاحظ هنا أن الرقم 4 في جملة المثال الأخيرة يحتوي على علامات اقتباس مفردة حوله. والسبب هو أن الرقم "4" في هذا المثال هو نوع نصي وليس نوع رقمي. نظرًا لأنك تقوم بتضمين عبارة SELECT بين علامتي اقتباس لتعيينها كقيمة لمتغير، يمكنك أيضًا استخدام علامات الاقتباس داخل العبارة.
عامل المقارنة
تحدد عوامل المقارنة نطاق محتوى البيانات التي سيتم استرجاعها من الجدول. يمكنك استخدامها لإنشاء عوامل تصفية لتضييق مجموعة السجلات إلى المعلومات التي تهمك لمهمة معينة فقط.
3. مثل، وليس مثل وبينلقد رأيت استخدام LIKE في المثال أعلاه لإزالة السجلات التي تبدأ بـ w. المسند LIKE هو رمز مفيد للغاية. ومع ذلك، فإن استخدامه قد يمنحك الكثير من البيانات في كثير من الحالات، لذلك من الأفضل استخدام عقلك للتفكير أكثر في البيانات التي تريد الحصول عليها قبل استخدامه. لنفترض أنك تريد استخراج رقم SKU مكون من 5 أرقام يبدأ بـ 1 وينتهي بـ 5، ثم يمكنك استخدام الشرطة السفلية (_) بدلاً من الرمز %:
SQL = "اختر * من المنتجات حيث p_sku مثل '1____5'"
الشرطة السفلية تمثل أي حرف. لذا، إذا قمت بإدخال "1 _ _ _ 5"، فسيقتصر بحثك على 5 أرقام تتطابق مع النمط المحدد.
إذا كنت تريد القيام بالعكس، فابحث عن كافة إدخالات SKU التي لا تتطابق مع النمط "1_ _ _ 5". إذن ما عليك سوى إضافة NOT أمام LIKE في مثال البيان الآن.
بين
لنفترض أنك تريد استرجاع البيانات ضمن نطاق معين، وكنت تعرف نقطة البداية ونقطة النهاية للنطاق مقدمًا، فمن الأفضل أن تستخدم كلمة الحكم "بين". لنفترض الآن أنك تريد تحديد السجلات في النطاق بين 1 و10 في جدول معين. يمكنك استخدام BETWEEN على النحو التالي:
...أين المعرف بين 1 و10
أو يمكنك استخدام كلمات الحكم الرياضية التي تعرفها بالفعل:
…حيث المعرف >= 1 والمعرف >= 10
4. بيان الاتحادعبارات SQL التي تحدثنا عنها حتى الآن بسيطة نسبيًا، إذا كان من الممكن الاستعلام عنها من خلال حلقة مجموعة سجلات قياسية، فيمكن لهذه العبارات أيضًا تلبية بعض المتطلبات الأكثر تعقيدًا. ومع ذلك، لماذا عليك الالتزام بالمستوى الأساسي المتمثل في تجربتها فقط؟ يمكنك إضافة رموز أخرى، مثل AND وOR وNOT لإكمال وظائف أكثر قوة.
خذ عبارة SQL التالية كمثال:
SQL ="حدد c_firstname، c_lastname، c_email من العملاء حيث يوجد c_email
ليست فارغة وc_purchase = '1' أو c_purchase = '2' وc_lastname مثل
"أ%""
بناءً على معرفتك الحالية بـ SQL، ليس من الصعب شرح المثال أعلاه، لكن العبارة أعلاه لا تسمح لك بوضوح برؤية كيفية لصق العبارات الشرطية معًا في عبارة SQL واحدة.
بيان متعدد الأسطر
عندما يكون من الصعب فهم عبارة SQL، قد ترغب في تحليل العبارة بأكملها إلى عدة أسطر من التعليمات البرمجية، ثم إضافة كل مكون من عبارة الاستعلام تدريجيًا بناءً على المتغيرات الموجودة وتخزينها في نفس المتغير:
SQL = "حدد c_firstname، c_lastname، c_emailaddress، c_phone"
SQL = SQL & "من العملاء"
SQL = SQL & "حيث يكون c_firstname مثل 'A%' وc_emailaddress ليس فارغًا"
SQL = SQL & "الترتيب حسب c_lastname، c_firstname"
حسب الجملة الأخيرة، يحتوي متغير SQL على عبارة SELECT الكاملة التالية:
"حدد c_firstname، c_lastname، c_emailaddress، c_phone من العملاء
حيث أن c_firstname مثل 'A%' وc_emailaddress NO NULL ORDER BY c_lastname،
ج_الاسم الأول"
بعد تقسيم الجملة بأكملها كما هو موضح أعلاه، من الواضح أنها أسهل بكثير في القراءة! عند تصحيح الأخطاء، قد تفضل كتابة بضعة أحرف إضافية لجعل البرنامج أكثر قابلية للقراءة. لكن عليك أن تتذكر أنك تحتاج إلى إضافة مسافات قبل إغلاق علامات الاقتباس أو بعد فتح علامات الاقتباس، وذلك لضمان عدم وضع عدة كلمات معًا عند توصيل السلاسل.
5. ابدأ التنفيذ
بعد تعلم بنية عبارة SELECT والغرض منها، حان الوقت لمعرفة كيفية استخدامها. اعتمادًا على أداة قاعدة البيانات المتاحة لك، قد يعني هذا الضغط على زر "انتقال". على صفحة ويب ASP، يمكن تنفيذ عبارات SQL على الفور أو استدعاؤها كإجراءات مخزنة.
بمجرد إنشاء عبارة SQL، لا يزال يتعين عليك الوصول إلى نتائج الاستعلام الخاصة بها. من الواضح أن المفتاح هنا هو مجموعة سجلات ASP. عند استخدام مجموعة سجلات غير SQL، عادةً ما يبدو رمز إنشاء مجموعة السجلات كما يلي:
كائن خافت
تعيين objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "العملاء"، objConn، 0، 1، 2
إذا كنت معتادًا على ASP، فسيكون الكود أعلاه مألوفًا لك، ويجب أن تعلم أن كلمة "العملاء" تعني اسم جدول البيانات في قاعدة البيانات التي تفتحها.
فتح مجموعة السجلات
لتحقيق أقصى استفادة من مهارات SQL المألوفة لديك، ستحتاج إلى تكييف مجموعة السجلات الأكثر استخدامًا في صفحات ويب ASP العادية:
كائن خافت
تعيين objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open SQL، objConn، 0، 1، 2
التعديل الوحيد هنا موجود في objRec.Open، وبعد ذلك يتم استبدال اسم جدول البيانات المطلوب الاستعلام عنه بمتغير يحتوي على عبارة SQL.
إحدى مزايا هذا الأسلوب هو أنه يمكنك تحديد نوع المؤشر (كما هو موضح 0، 1، 2 أعلاه).
تنفيذ SQL
يمكنك إنشاء مجموعة سجلات عن طريق تنفيذ عبارة SQL باستخدام سطر مضغوط من التعليمات البرمجية. هنا هو بناء الجملة:
كائن خافت
تعيين objRec = objConn.Execute(SQL)
في المثال أعلاه، SQL الذي تراه هو المتغير الذي تقوم بتخزين عبارة SQL SELECT الخاصة بك فيه. يقوم هذا السطر من التعليمات البرمجية "بتشغيل" عبارة SQL (أو الاستعلام عن قاعدة البيانات)، وتحديد البيانات، وتخزينها في مجموعة سجلات، في هذه الحالة المتغير objRec. العيب الرئيسي لهذا الأسلوب هو أنه لا يمكنك اختيار نوع المؤشر الذي تريد استخدامه. وفي المقابل، يتم دائمًا فتح مجموعات السجلات باستخدام مؤشر للأمام.
بسبب المؤشرات، قد ترغب في التعرف على طريقتين لإنشاء مجموعة سجلات. يؤدي تنفيذ الاستعلام مباشرة إلى توفير الوقت المستغرق في كتابة الأحرف، ولكن بعد ذلك سيتعين عليك استخدام المؤشر الافتراضي، والذي قد يواجه مشكلات غالبًا لا تعمل بشكل صحيح. بغض النظر عن الطريقة التي تستخدمها، فإن الاختلاف الأكبر بين الاثنين هو ببساطة ما إذا كان الكود موجزًا أم لا. بغض النظر عن الحقول التي تحصل عليها، أو المعايير الخاصة بك، أو كيفية تخزين البيانات، فإن مجموعة السجلات ذات نمط SQL ستكون أصغر بكثير في الحجم من مجموعة السجلات القياسية المفتوحة على ASP، ناهيك عن سهولة التشغيل. بعد كل شيء، من خلال تصفية البيانات، يمكنك التخلص من اختبارات if-then والتكرارات المحتملة التي تستغرق وقتًا طويلاً.
كتابة اختبار SQL
هذه خدعة يستخدمها العديد من مبرمجي ASP المحترفين "لكتابة" عبارات SQL الخاصة بهم عند اختبار صفحات الويب. يمكن أن يساعدك القيام بذلك في تصحيح التعليمات البرمجية الخاصة بك لأنه يمكنك رؤية السلسلة يتم تمريرها إلى الخادم للتنفيذ. وكل ما عليك فعله هو إضافة Response.WriteyourVariable لعرض المعلومات ذات الصلة على الشاشة. يجب عليك تضمين هذه المعلومات عند إرسال سؤال متعلق بـ SQL إلى مجموعة مناقشة ASP.
6. الاستعلام عن التخزينعندما يكون الاستعلام الخاص بك بسيطًا نسبيًا، فلن يتطلب الأمر الكثير من الجهد لإنشاء عبارة SQL من البداية في كل مرة، ومع ذلك، فإن الوضع مختلف مع الاستعلامات المعقدة، حيث سيؤدي البدء من الصفر في كل مرة إلى حدوث الكثير من أخطاء التطوير. ولذلك، بمجرد تشغيل SQL بسلاسة، فمن الأفضل حفظها والاتصال بها عند الحاجة. بهذه الطريقة، حتى بالنسبة للاستعلام البسيط، يمكنك استخدام بيان الاستعلام المخزن في أي وقت.
لنفترض أنه يتعين عليك تقديم تقرير أسبوعي إلى فريقك، للإشارة إلى مشكلات دعم الأعمال الحالية، ويجب تحديد هذه البيانات من قاعدة البيانات الخاصة بك، ويجب تحديد السجلات وفقًا للتاريخ، وفرزها وفقًا لفئة مشكلات الدعم المعتمدة من قبلك. فريق. . بمجرد تصميم هذا الاستعلام، لماذا تحتاج إلى إعادة كتابته كل أسبوع؟ بدلاً من إنشاء الاستعلام على صفحة HTML الخاصة بك، يجب عليك استخدام أداة قاعدة البيانات الخاصة بك لإنشاء الاستعلام وحفظه.
يمكنك بعد ذلك استخدام السمة ActiveCommand لإدراج الاستعلام في صفحة ASP الخاصة بك. قد تظن أن الأمر غير مثير للاهتمام في المرة الأولى أو الثانية، لكنه في الواقع مجرد بضعة أسطر من التعليمات البرمجية:
تعيين objSQ = Server.CreateObject ("ADODB.Command")
objSQ.ActiveConnection = "اسم قاعدة البيانات"
objSQ.CommandText = "storedQueryName"
objSQ.CommandType = adCmdStoredProc
تعيين objRec = objSQ.Execute
لاحظ أن استخدام adCmdStoredProc يعني أنك قمت بتضمين ملف adovbs.inc في الصفحة. يحدد هذا الملف ثوابت الوصول التي يمكنك الوصول إليها بالاسم بدلاً من الرقم. ما عليك سوى تضمين الملف الموجود على الصفحة (<!--#INCLUDE -->) وبعد ذلك يمكنك استخدام اسم مثل adCmdStoredProc. بهذه الطريقة، سيكون من الأسهل عليك فهم ما يعنيه الاستعلام المخزن أعلاه عندما تراه في المستقبل.