استعلام SQL في الوصول إلى مللي ثانية مقدمة

SQL - الدرس 4. استرداد البيانات - عبارة SELECT

لذلك، في قاعدة بيانات المنتدى لدينا ثلاثة جداول: المستخدمون (المستخدمون)، المواضيع (المواضيع) والمشاركات (الرسائل). ونريد أن نرى البيانات التي تحتوي عليها. هناك عامل لهذا في SQL يختار. بناء الجملة لاستخدامه هو كما يلي:

حدد What_select من حيث_select؛


بدلاً من "what_select" يجب أن نحدد إما اسم العمود الذي نريد رؤية قيمه، أو أسماء عدة أعمدة مفصولة بفواصل، أو رمز النجمة (*) أي اختيار جميع أعمدة الجدول . بدلاً من "from_select" يجب عليك تحديد اسم الجدول.

دعونا نلقي نظرة أولاً على جميع الأعمدة من جدول المستخدمين:

اختر * من المستخدمين؛

هذه هي كل بياناتنا التي أدخلناها في هذا الجدول. لكن لنفترض أننا نريد النظر فقط إلى عمود id_user (على سبيل المثال، في الدرس الأخير، من أجل ملء جدول المواضيع، كنا بحاجة إلى معرفة أي id_users موجود في جدول المستخدمين). وللقيام بذلك سنحدد اسم هذا العمود في الطلب:

حدد id_user من المستخدمين؛

حسنًا، إذا أردنا أن نرى، على سبيل المثال، أسماء المستخدمين وعناوين البريد الإلكتروني الخاصة بهم، فسنقوم بإدراج الأعمدة محل الاهتمام مفصولة بفواصل:

حدد الاسم والبريد الإلكتروني من المستخدمين؛

وبالمثل، يمكنك معرفة البيانات التي تحتوي عليها جداولنا الأخرى. دعونا نرى ما هي المواضيع لدينا:

اختر * من المواضيع؛

الآن لدينا 4 مواضيع فقط، ولكن ماذا لو كان هناك 100 منها؟ وأود أن يتم عرضها، على سبيل المثال، بالترتيب الأبجدي. هناك كلمة أساسية لهذا في SQL ترتيب حسبمتبوعًا باسم العمود الذي سيتم الفرز من خلاله. بناء الجملة هو كما يلي:

حدد اسم العمود من اسم الجدول ORDER BYsort_column_name؛



بشكل افتراضي، يكون الفرز بترتيب تصاعدي، ولكن يمكن تغيير ذلك عن طريق إضافة كلمة أساسية DESC

الآن يتم فرز بياناتنا بترتيب تنازلي.

يمكن إجراء الفرز بواسطة عدة أعمدة في وقت واحد. على سبيل المثال، سيقوم الاستعلام التالي بفرز البيانات حسب عمود subject_name، وإذا كان هناك عدة صفوف متطابقة في هذا العمود، فسيتم فرز عمود id_author بترتيب تنازلي:

قارن النتيجة بنتيجة الاستعلام السابق.

في كثير من الأحيان لا نحتاج إلى جميع المعلومات من الجدول. على سبيل المثال، نريد معرفة المواضيع التي تم إنشاؤها بواسطة المستخدم sveta (id=4). هناك كلمة أساسية لهذا في SQL أين، يكون بناء جملة هذا الطلب كما يلي:

على سبيل المثال، الشرط هو معرف المستخدم، أي. نحتاج فقط إلى تلك الصفوف التي يحتوي عمود id_author على 4 (معرف المستخدم sveta):

أو نريد أن نعرف من أنشأ موضوع "الدراجات":

بالطبع، سيكون الأمر أكثر ملاءمة إذا تم عرض اسمه بدلاً من معرف المؤلف، ولكن يتم تخزين الأسماء في جدول آخر. وفي الدروس القادمة، سوف نتعلم كيفية اختيار البيانات من جداول متعددة. في هذه الأثناء، دعنا نتعرف على الشروط التي يمكن تعيينها باستخدام الكلمة الأساسية WHERE.

المشغل أو العامل وصف
= (متساوي) يتم تحديد القيم المساوية للقيمة المحددة

مثال:

اختر * من المواضيع حيث id_author=4;

نتيجة:

> (المزيد) يتم تحديد قيم أكبر من المحددة

مثال:

حدد * من المواضيع حيث id_author>2;

نتيجة:

< (меньше) يتم تحديد القيم الأقل من المحددة

مثال:

حدد * من المواضيع حيث id_author
نتيجة:

>= (أكبر من أو يساوي) يتم تحديد قيم أكبر من وتساوي القيمة المحددة

مثال:

SELECT * من المواضيع حيث id_author>=2;

نتيجة:

<= (меньше или равно) يتم تحديد القيم الأقل من وتساوي القيمة المحددة

مثال:

حدد * من المواضيع حيث id_author
نتيجة:

!= (غير متساوي) يتم تحديد القيم التي لا تساوي القيمة المحددة

مثال:

SELECT * من المواضيع حيث id_author!=1;

نتيجة:

هو ليس لاشيء تحديد الصفوف التي لها قيم في الحقل المحدد

مثال:

اختر * من المواضيع التي لا يكون فيها id_author فارغًا؛

نتيجة:

باطل تحديد الصفوف التي ليس لها قيمة في الحقل المحدد

مثال:

SELECT * من المواضيع التي يكون فيها id_author فارغًا؛

نتيجة:

مجموعة فارغة - لا توجد مثل هذه الخطوط.

بين (بين) يتم تحديد القيم بين القيم المحددة

مثال:

اختر * من المواضيع حيث id_author بين 1 و 3؛

نتيجة:

في (القيمة الواردة) يتم تحديد القيم المقابلة للقيم المحددة

مثال:

اختر * من المواضيع التي يوجد فيها id_author (1، 4)؛

نتيجة:

NOT IN (القيمة غير مضمنة) يتم تحديد قيم أخرى غير تلك المحددة

مثال:

اختر * من المواضيع التي لا يوجد فيها id_author (1، 4)؛

نتيجة:

مثل (مباراة) يتم تحديد القيم التي تطابق النمط

مثال:

اختر * من المواضيع التي يكون فيها subject_name مثل "led%"؛

نتيجة:

ستتم مناقشة الأحرف الأولية المحتملة لمشغل LIKE أدناه.

لا يعجبني (غير مطابق) يتم تحديد القيم التي لا تتطابق مع النمط

مثال:

اختر * من المواضيع التي لا يحب فيها subject_name "led%"؛

نتيجة:

مثل الأحرف الأولية للمشغل

لا يمكن إجراء عمليات البحث باستخدام الأحرف الأولية إلا في حقول النص.

الحرف التعريفي الأكثر شيوعًا هو % . ويعني أي رموز. على سبيل المثال، إذا أردنا البحث عن كلمات تبدأ بالحرف "vel"، فسنكتب LIKE "vel%"، وإذا أردنا البحث عن كلمات تحتوي على الحرف "club"، فسنكتب LIKE "%" النادي٪". على سبيل المثال:

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

انتبه إلى المسافة بين الحرف الأولي و"السمكة" إذا تخطيتها، فلن يعمل الطلب، لأن حرف أولي _ يرمز إلى حرف واحد بالضبط، والمسافة هي أيضًا حرف.

هذا يكفي لليوم. في الدرس التالي سوف نتعلم كيفية كتابة الاستعلامات مقابل جدولين أو أكثر. في غضون ذلك، حاول إنشاء استعلامات مقابل جدول المشاركات بنفسك.

هذا الدرس مخصص ل استعلامات SQLإلى قاعدة البيانات على الوصول إلى VBA. سننظر في كيفية إجراء استعلامات INSERT وUPDATE وDELETE على قاعدة البيانات في VBA، وسنتعلم أيضًا كيفية الحصول على قيمة محددة من استعلام SELECT.

أولئك الذين يبرمجون الوصول إلى VBAوأثناء العمل مع قاعدة بيانات خادم SQL، غالبًا ما يواجهون مهمة بسيطة وضرورية مثل إرسال استعلام SQL إلى قاعدة البيانات، سواء كان ذلك إدراجًا أو تحديثًا أو استعلام SQL SELECT بسيطًا. وبما أننا مبرمجون مبتدئون، فيجب أن نكون قادرين أيضًا على القيام بذلك، لذلك سنفعل ذلك اليوم.

سبق أن تطرقنا إلى موضوع الحصول على البيانات من خادم SQL حيث قمنا بكتابة كود في VBA للحصول على هذه البيانات على سبيل المثال في المقال الخاص بتحميل البيانات إلى ملف نصي من MSSql 2008 أو تطرقنا إليه أيضاً القليل في المادة تحميل البيانات من Access إلى قالب Word وExcel ولكن بطريقة أو بأخرى، نظرنا إلى هذا بشكل سطحي، واليوم أقترح التحدث عن هذا بمزيد من التفصيل.

ملحوظة! يتم النظر في جميع الأمثلة أدناه باستخدام مشروع Access 2003 ADP وقاعدة بيانات MSSql 2008. إذا كنت لا تعرف ما هو مشروع ADP، فقد نظرنا في هذا في المادة كيفية إنشاء مشروع Access ADP وتكوينه.

بيانات المصدر للحصول على أمثلة

لنفترض أن لدينا جدول test_table، والذي سيحتوي على أرقام وأسماء أشهر السنة (يتم تنفيذ الاستعلامات باستخدام استوديو الإدارة)

إنشاء جدول .(ليس فارغًا، (50) فارغًا) أثناء التنقل

كما قلت من قبل، سوف نستخدم مشروع ADP الذي تم تكوينه للعمل مع MS SQL 2008، والذي قمت فيه بإنشاء نموذج اختبار وإضافة زر ابدأ مع التوقيع "يجري"، والتي سنحتاجها لاختبار الكود الخاص بنا، على سبيل المثال. سنكتب كل الكود في معالج الأحداث " اضغط على الزر».

الاستعلامات إلى قاعدة البيانات INSERT، UPDATE، DELETE في VBA

لكي لا نتأخر كثيرًا، فلنبدأ على الفور، لنفترض أننا بحاجة إلى إضافة صف إلى جدول الاختبار ( علق الكود)/

Private Sub start_Click() "قم بتعريف متغير لتخزين سلسلة الاستعلام Dim sql_query As String "اكتب الاستعلام الذي نحتاجه فيه sql_query = "INSERT INTO test_table (id, name_mon) VALUES ("6"، "June")" "تنفيذ هذا هو DoCmd.RunSQL sql_query End Sub

في هذه الحالة، يتم تنفيذ الاستعلام باستخدام معلمات اتصال قاعدة البيانات الحالية. يمكننا التحقق مما إذا كانت البيانات قد تمت إضافتها أم لا.

كما ترون، تم إدخال البيانات.

ولحذف سطر واحد نكتب الكود التالي.

Private Sub start_Click() "قم بتعريف متغير لتخزين سلسلة الاستعلام Dim sql_query As String" اكتب استعلام حذف فيه sql_query = "DELETE test_table WHERE id = 6" "قم بتشغيله DoCmd.RunSQL sql_query End Sub

إذا تحققنا، فسنرى أنه تم حذف السطر المطلوب.

لتحديث البيانات قم بكتابة طلب التحديث على المتغير sql_query، أتمنى أن يكون المعنى واضحا.

حدد الاستعلام إلى قاعدة بيانات في VBA

الأشياء هنا أكثر إثارة للاهتمام قليلاً من بنيات SQL الأخرى.

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

Private Sub start_Click() "تعريف المتغيرات" لمجموعة من السجلات من قاعدة البيانات Dim RS As ADODB.Recordset "سلسلة الاستعلام Dim sql_query As String" سلسلة لعرض البيانات النهائية في الرسالة Dim str As String "إنشاء كائن جديد لـ مجموعة السجلات RS = New ADODB .Recordset "سطر الاستعلام sql_query = "SELECT id, name_mon FROM test_table" "قم بتشغيل الاستعلام باستخدام إعدادات اتصال المشروع الحالية RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "حلقة عبر السجلات بينما لا (RS.EOF) "املأ المتغير لعرض الرسالة str = str & RS.Fields("id") & "-" & RS.Fields("name_mon") & vbnewline "انتقل إلى السجل التالي RS.MoveNext Wend "أخرج الرسالة msgbox str End Sub

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

ولكن في كثير من الأحيان يكون من الضروري الحصول على ليس كل القيم من مجموعة من السجلات، ولكن واحد فقط، على سبيل المثال، اسم الشهر حسب الكود الخاص به. وللقيام بذلك، يعد استخدام التكرار مكلفًا إلى حد ما، لذا يمكننا ببساطة كتابة استعلام يُرجع قيمة واحدة فقط والوصول إليها، على سبيل المثال، سنحصل على اسم الشهر باستخدام الرمز 5

Private Sub start_Click() "إعلان المتغيرات" لمجموعة من السجلات من قاعدة البيانات Dim RS As ADODB.Recordset "سلسلة الاستعلام Dim sql_query As String" سلسلة لعرض القيمة النهائية Dim str As String "إنشاء كائن جديد لمجموعة السجلات RS = New ADODB.Recordset "Query line sql_query = "SELECT name_mon FROM test_table WHERE id = 5" "قم بتشغيل الاستعلام باستخدام إعدادات اتصال المشروع الحالية RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "احصل على القيمة الخاصة بنا str = RS. الحقول(0) msgbox str End Sub

من أجل العالمية، لقد تناولنا هنا بالفعل ليس اسم الخلية، ولكن فهرسها، أي. 0، وهذه هي القيمة الأولى في مجموعة السجلات، في النهاية حصلنا على القيمة "يمكن".

كما ترون، كل شيء بسيط للغاية. إذا كنت تحتاج غالبًا إلى الحصول على قيمة محددة من قاعدة البيانات ( كما في المثال الأخير)، فإنني أوصي بإخراج الكود بالكامل إلى وظيفة منفصلة (كيفية كتابة دالة في VBA Access 2003) باستخدام معلمة إدخال واحدة، على سبيل المثال، كود الشهر ( إذا نظرنا إلى مثالنا) وببساطة، عندما يكون من الضروري عرض هذه القيمة، اتصل بالوظيفة التي نحتاجها باستخدام المعلمة المطلوبة وهذا كل شيء، ومن خلال القيام بذلك، سنقوم بتقليل كود VBA بشكل كبير وتحسين تصور برنامجنا.

هذا كل شيء لهذا اليوم. حظ سعيد!

وصف المشروع التعليمي "متجر"

مخطط ربط الجدول

وصف الجداول

m_category - فئات المنتجات

م_الدخل - استلام البضائع

m_outcome - استهلاك البضائع

m_product - الدليل، وصف المنتج

m_supplier - الدليل؛ معلومات المورد

m_unit - الدليل؛ وحدات

لاختبار الأمثلة الواردة في هذه المادة التدريبية بشكل عملي، يجب أن يكون لديك البرنامج التالي:

مايكروسوفت أكسس 2003 أو الأحدث.

استعلام SQL في MS Access. يبدأ

لرؤية محتويات الجدول، انقر نقرًا مزدوجًا فوق اسم الجدول في اللوحة اليمنى:

للتبديل إلى وضع تحرير حقل الجدول، حدد وضع التصميم في اللوحة العلوية:

لعرض نتيجة استعلام SQL، انقر نقرًا مزدوجًا فوق اسم الاستعلام في الجزء الأيمن:

للتبديل إلى وضع تحرير استعلام SQL، حدد وضع SQL في اللوحة العلوية:

استعلام SQL. أمثلة في MS Access. اختر: 1-10

في استعلام SQL، يتم استخدام عبارة SELECT للاختيار من جداول قاعدة البيانات.

استعلام SQL Q001.مثال لاستعلام SQL للحصول على الحقول المطلوبة فقط بالتسلسل المطلوب:

حدد dt، Product_id، المبلغ


من م_الدخل؛

استعلام SQL Q002.في هذا المثال لاستعلام SQL، يتم استخدام علامة النجمة (*) لسرد كافة أعمدة جدول m_product، بمعنى آخر، للحصول على كافة حقول علاقة m_product:

يختار *
من m_product؛

طلبSQL Q003.يتم استخدام عبارة DISTINCT لإزالة الإدخالات المكررة والحصول على إدخالات فريدة متعددة:

حدد منتج مميز


من م_الدخل؛

استعلام SQL Q004.يتم استخدام عبارة ORDER BY لفرز (ترتيب) السجلات حسب قيم حقل معين. يتم تحديد اسم الحقل بعد عبارة ORDER BY:

يختار *
من م_الدخل


الطلب حسب السعر؛

استعلام SQL Q005.يتم استخدام عبارة ASC كمكمل لعبارة ORDER BY وتعمل على تحديد الفرز التصاعدي. يتم استخدام عبارة DESC بالإضافة إلى عبارة ORDER BY ويتم استخدامها لتحديد الفرز التنازلي. في حالة عدم تحديد ASC أو DESC، يُفترض وجود ASC (الافتراضي):

يختار *
من م_الدخل


الطلب حسب dt DESC، السعر؛

استعلام SQL Q006.لتحديد السجلات اللازمة من الجدول، يتم استخدام التعبيرات المنطقية المختلفة التي تعبر عن شرط التحديد. يظهر التعبير المنطقي بعد عبارة WHERE. مثال للحصول على كافة السجلات من جدول m_ Income التي قيمة المبلغ فيها أكبر من 200:

يختار *
من م_الدخل


حيث المبلغ> 200؛

استعلام SQL Q007.للتعبير عن الشروط المعقدة، يتم استخدام العوامل المنطقية AND (الربط)، OR (الانفصال) و NOT (النفي المنطقي). مثال للحصول من جدول m_outcome على جميع السجلات التي قيمة المبلغ لها 20 وقيمة السعر أكبر من أو تساوي 10:

سعر


من m_outcome
حيث المبلغ=20 والسعر>=10؛

استعلام SQL Q008.لربط البيانات من جدولين أو أكثر، استخدم تعليمات INNER JOIN وLEFT JOIN وRIGHT JOIN. يقوم المثال التالي باسترداد الحقول dt، وproduct_id، والمبلغ، والسعر من جدول m_ Income وحقل العنوان من جدول m_product. يتم ضم سجل جدول m_ Income إلى سجل جدول m_product عندما تكون قيمة m_ Income.product_id مساوية لقيمة m_product.id:



على m_venue.product_id=m_product.id;

استعلام SQL Q009.هناك شيئان يجب الانتباه إليهما في استعلام SQL هذا: 1) نص البحث محاط بعلامتي اقتباس مفردتين (")؛ 2) التاريخ بالتنسيق #Month/Day/Year#، وهو ما ينطبق على MS Access. في الأنظمة الأخرى قد يختلف تنسيق كتابة التاريخ. مثال على عرض معلومات حول استلام الحليب بتاريخ 12 يونيو 2011. يرجى ملاحظة تنسيق التاريخ #6/12/2011#:

حدد dt، Product_id، العنوان، المبلغ، السعر


من m_الدخل INNER JOIN m_product

أين العنوان = "Milk" And dt=#6/12/2011#; !}

استعلام SQL Q010.يتم استخدام التعليمة BETWEEN لاختبار ما إذا كانت القيمة تنتمي إلى نطاق معين. مثال لاستعلام SQL يعرض معلومات حول المنتجات المستلمة بين 1 يونيو و30 يونيو 2011:

يختار *
من m_الدخل INNER JOIN m_product


على m_venue.product_id=m_product.id
حيث بين #6/1/2011# و#6/30/2011#؛

استعلام SQL. أمثلة في MS Access. اختر: 11-20

يمكن دمج استعلام SQL واحد في استعلام آخر. الاستعلام الفرعي ليس أكثر من استعلام داخل استعلام. عادة، يتم استخدام استعلام فرعي في جملة WHERE. ولكن هناك طرق أخرى لاستخدام الاستعلامات الفرعية.

الاستعلام س011.يتم عرض معلومات حول المنتجات من جدول m_product، والتي توجد أكوادها أيضًا في جدول m_Inc:

يختار *
من m_product


أين يوجد المعرف (اختر Product_id FROM m_venue)؛

طلب س012.يتم عرض قائمة بالمنتجات من جدول m_product، والتي لا توجد رموزها في جدول m_outcome:

يختار *
من m_product


حيث لا يوجد معرف (اختر Product_id FROM m_outcome)؛

طلب س013.يعرض استعلام SQL هذا قائمة فريدة برموز المنتجات وأسماءها الموجودة في جدول m_Inc ولكن ليس في جدول m_outcome:

حدد معرف المنتج المميز والعنوان


من m_الدخل INNER JOIN m_product
على m_venue.product_id=m_product.id
حيث لا يوجد معرف المنتج (اختر معرف المنتج من m_outcome)؛

الاستعلام س014.يتم عرض قائمة فريدة من الفئات التي تبدأ أسماؤها بالحرف M من جدول m_category:

حدد عنوانًا مميزًا


من m_product
حيث العنوان مثل "M*"؛

الاستعلام س015.مثال على تنفيذ العمليات الحسابية على الحقول في استعلام وإعادة تسمية الحقول في استعلام (اسم مستعار). يحسب هذا المثال المصروفات = الكمية*السعر والربح لكل إدخال مصروف بند، على افتراض أن الربح هو 7 بالمائة من المبيعات:


المبلغ*السعر/100*7 كربح
من m_outcome؛

الاستعلام س016.من خلال تحليل العمليات الحسابية وتبسيطها، يمكنك زيادة سرعة تنفيذ الاستعلام:

حدد dt، Product_id، المبلغ، السعر، المبلغ * السعر AS result_sum،


result_sum*0.07 كربح
من m_outcome؛

الاستعلام س017.يمكنك استخدام عبارة INNER JOIN لربط البيانات من جداول متعددة. في المثال التالي، اعتمادًا على قيمة ctgry_id، تتم مطابقة كل إدخال في جدول m_ Income مع اسم الفئة من جدول m_category الذي ينتمي إليه المنتج:

حدد c.title، b.title، dt، المبلغ، السعر، المبلغ * السعر AS الدخل_sum


من (m_venue AS a INNER JOIN m_product AS b ON a.product_id=b.id)
INNER JOIN m_category AS c ON b.ctgry_id=c.id
ترتيب حسب c.title، b.title؛

طلب س018.وظائف مثل SUM - المبلغ، COUNT - الكمية، AVG - المتوسط ​​الحسابي، MAX - الحد الأقصى للقيمة، MIN - الحد الأدنى للقيمة تسمى الوظائف المجمعة. يقبلون العديد من القيم وبعد معالجتها يعودون بقيمة واحدة. مثال لحساب مجموع منتج حقلي المبلغ والسعر باستخدام الدالة التجميعية SUM:

حدد SUM(المبلغ*السعر) AS Total_Sum


من م_الدخل؛

الاستعلام س019.مثال على استخدام عدة وظائف تجميعية:

حدد Sum(amount) AS Amount_Sum، AVG(amount) AS Amount_AVG،


الحد الأقصى (المبلغ) AS Amount_Max، الحد الأدنى (المبلغ) AS Amount_Min،
العد (*) ك Total_Number
من م_الدخل؛

الاستعلام Q020.في هذا المثال، يتم حساب كمية كافة البضائع ذات الرمز 1، والتي تم رسملتها في يونيو 2011:

حدد المبلغ (المبلغ * السعر) كدخل_sum


من م_الدخل
حيث Product_id=1 وdt بين #6/1/2011# و#6/30/2011#؛.

الاستعلام س021.يقوم استعلام SQL التالي بحساب كمية البضائع المباعة بالرمز 4 أو 6:

حدد المجموع (المبلغ * السعر) كـ result_sum


من m_outcome
حيث Product_id=4 أو Product_id=6;

الاستعلام س022.يتم حساب كمية البضائع التي تحمل الرمز 4 أو 6 التي تم بيعها في 12 يونيو 2011:

حدد المبلغ (المبلغ * السعر) كنتيجة_sum


من m_outcome
أين (product_id=4 أو Product_id=6) وdt=#6/12/2011#;

الاستعلام س023.المهمة هي هذه. احسب إجمالي كمية البضائع في فئة "منتجات المخابز" التي تم رسملتها.

لحل هذه المشكلة، تحتاج إلى العمل بثلاثة جداول: m_inc، وm_product، وm_category، للأسباب التالية:


- يتم تخزين كمية وسعر السلع الرأسمالية في جدول الدخل؛
- يتم تخزين رمز الفئة لكل منتج في جدول m_product؛
- يتم تخزين اسم فئة العنوان في جدول m_category.

لحل هذه المشكلة سوف نستخدم الخوارزمية التالية:


- تحديد رمز الفئة "منتجات المخابز" من جدول m_category باستخدام استعلام فرعي؛
- ربط جدولي m_الدخل وm_product لتحديد فئة كل منتج تم شراؤه؛
- حساب مبلغ الاستلام (= الكمية*السعر) للبضائع التي رمز فئتها يساوي الرمز المحدد في الاستعلام الفرعي أعلاه.
يختار
من m_product كعضو داخلي m_venue AS b على a.id=b.product_id
أين ctgry_id = (اختر المعرف من m_category أين العنوان = "منتجات المخابز"); !}

الاستعلام س024.سنقوم بحل مشكلة حساب المبلغ الإجمالي للسلع المرسملة في فئة "منتجات المخابز" باستخدام الخوارزمية التالية:
- لكل إدخال في جدول m_ Income، اعتمادًا على قيمة معرف المنتج الخاص به، من جدول m_category، قم بمطابقة اسم الفئة؛
- حدد السجلات التي يكون تصنيفها "منتجات المخابز"؛
- حساب مبلغ الاستلام = الكمية*السعر.

من (m_product AS a INNER JOIN m_venue AS b ON a.id=b.product_id)

أين c.title="منتجات المخابز"; !}

الاستعلام س025.يحسب هذا المثال عدد عناصر البضائع التي تم استهلاكها:

حدد COUNT(product_id) كمنتج_cnt


من (اختر معرف المنتج المميز من m_outcome) AS t؛

الاستعلام س026.يتم استخدام عبارة GROUP BY لتجميع السجلات. عادةً، يتم تجميع السجلات حسب قيمة حقل واحد أو أكثر، ويتم تطبيق بعض عمليات التجميع على كل مجموعة. على سبيل المثال، يقوم الاستعلام التالي بإنشاء تقرير عن بيع البضائع. أي أنه يتم إنشاء جدول يحتوي على أسماء البضائع والمبلغ الذي بيعت به:

حدد العنوان، SUM(amount*price) AS result_sum


من m_product كرابط داخلي m_outcome AS ب
على a.id=b.product_id
المجموعة حسب العنوان؛

الاستعلام س027.تقرير المبيعات حسب الفئة. أي أنه يتم إنشاء جدول يحتوي على أسماء فئات المنتجات والمبلغ الإجمالي الذي تم بيع منتجات هذه الفئات به ومتوسط ​​مبلغ المبيعات. يتم استخدام الدالة ROUND لتقريب القيمة المتوسطة إلى أقرب جزء من مائة (الرقم الثاني بعد الفاصل العشري):

حدد c.title، SUM(amount*price) AS result_sum،


ROUND(AVG(المبلغ*السعر),2) AS result_sum_avg
من (m_product AS a INNER JOIN m_outcome AS b ON a.id=b.product_id)
INNER JOIN m_category AS c ON a.ctgry_id=c.id
المجموعة حسب c.title؛

استعلام س028.يتم حساب إجمالي ومتوسط ​​عدد إيصالاتها لكل منتج ويعرض معلومات حول المنتجات التي يبلغ إجمالي إيصالاتها 500 على الأقل:

حدد معرف_المنتج، SUM(المبلغ) AS المبلغ_sum،


Round(Avg(amount),2) AS المبلغ_avg
من م_الدخل
المجموعة حسب المنتج_id
الحصول على المبلغ(المبلغ)>=500;

الاستعلام س029.يحسب هذا الاستعلام لكل منتج مقدار ومتوسط ​​إيصالاته التي تم إجراؤها في الربع الثاني من عام 2011. إذا كان المبلغ الإجمالي لإيصال المنتج لا يقل عن 1000، فسيتم عرض معلومات حول هذا المنتج:

حدد العنوان، SUM(المبلغ*السعر) كدخل_sum


من m_venue a INNER JOIN m_product b على a.product_id=b.id
حيث بين #4/1/2011# و #6/30/2011#
المجموعة حسب العنوان
مجموع المبلغ(المبلغ*السعر)>=1000;

الاستعلام Q030.في بعض الحالات، تحتاج إلى مطابقة كل سجل في جدول ما مع كل سجل في جدول آخر؛ وهو ما يسمى المنتج الديكارتي. ويسمى الجدول الناتج عن هذا الارتباط جدول ديكارت. على سبيل المثال، إذا كان بعض الجدول A يحتوي على 100 سجل والجدول B يحتوي على 15 سجلاً، فإن الجدول الديكارتي الخاص به سيتكون من 100*15=150 سجل. يقوم الاستعلام التالي بربط كل سجل في جدول m_ Income مع كل سجل في جدول m_outcome:
من m_الدخل، m_outcome؛

الاستعلام س031.مثال على تجميع السجلات حسب حقلين. يقوم استعلام SQL التالي بحساب مقدار وكمية البضائع المستلمة منه لكل مورد:


SUM(المبلغ*السعر) كدخل_sum

الاستعلام س032.مثال على تجميع السجلات حسب حقلين. يقوم الاستعلام التالي بحساب مقدار وكمية منتجاتهم التي نبيعها لكل مورد:

حدد معرف_المورد، معرف_المنتج، SUM(المبلغ) AS المبلغ_sum،




المجموعة حسب مورد_معرف المنتج، معرف_المنتج؛

الاستعلام س033.في هذا المثال، يتم استخدام الاستعلامين أعلاه (q031 وq032) كاستعلامات فرعية. يتم دمج نتائج هذه الاستعلامات باستخدام أسلوب LEFT JOIN في تقرير واحد. يعرض الاستعلام التالي تقريرًا عن كمية وكمية المنتجات المستلمة والمباعة لكل مورد. يرجى ملاحظة أنه إذا تم استلام بعض المنتجات بالفعل، ولكن لم يتم بيعها بعد، فستكون خلية نتيجة_مجموع النتائج لهذا الإدخال فارغة. أن هذا الاستعلام هو مجرد مثال لاستخدام الاستعلامات المعقدة نسبيًا كاستعلام فرعي. أداء استعلام SQL هذا مع كمية كبيرة من البيانات أمر مشكوك فيه:

يختار *
من



SUM(المبلغ*السعر) كدخل_sum

على a.product_id=b.id المجموعة حسب مورد_id، منتج_id) AS أ
الانضمام الأيسر
(حدد معرف_المورد، معرف_المنتج، SUM(المبلغ) AS المبلغ_sum،
SUM(المبلغ*السعر) كنتيجة_sum
من m_outcome كعضو داخلي، m_product AS ب
على a.product_id=b.id المجموعة حسب مورد_id، منتج_id) AS ب
تشغيل (a.product_id=b.product_id) و(a.supplier_id=b.supplier_id)؛

الاستعلام س034.في هذا المثال، يتم استخدام الاستعلامين أعلاه (q031 وq032) كاستعلامات فرعية. يتم دمج نتائج هذه الاستعلامات باستخدام أسلوب RIGTH JOIN في تقرير واحد. الاستعلام التالي يعرض تقرير عن حجم دفعات كل عميل حسب أنظمة الدفع التي استخدمها وحجم الاستثمارات التي قام بها. يعرض الاستعلام التالي تقريرًا عن كمية وكمية المنتجات المستلمة والمباعة لكل مورد. يرجى ملاحظة أنه إذا تم بالفعل بيع بعض المنتجات، ولكن لم تصل بعد، فستكون خلية الدخل_sum لهذا الإدخال فارغة. يعد وجود مثل هذه الخلايا الفارغة مؤشرًا على وجود خطأ في محاسبة المبيعات، لأنه قبل البيع، من الضروري أولاً وصول المنتج المقابل:

يختار *
من


(حدد معرف_المورد، معرف_المنتج، SUM(المبلغ) AS المبلغ_sum،
SUM(المبلغ*السعر) كدخل_sum
من m_venue كعضو داخلي m_product AS b على a.product_id=b.id
المجموعة حسب مورد_معرف_المنتج، معرف_المنتج) أ
الانضمام الصحيح
(حدد معرف_المورد، معرف_المنتج، SUM(المبلغ) AS المبلغ_sum،
SUM(المبلغ*السعر) كنتيجة_sum
من m_outcome كعضو داخلي، m_product AS b ON a.product_id=b.id
المجموعة حسب المورد_معرف_المنتج) AS ب
تشغيل (a.supplier_id=b.supplier_id) و(a.product_id=b.product_id)؛

الاستعلام س035.يتم عرض تقرير يوضح مقدار الإيرادات والمصروفات حسب المنتج. وللقيام بذلك يتم إنشاء قائمة بالمنتجات حسب جدولي m_الدخل وm_outcome، ثم لكل منتج من هذه القائمة يتم حساب مجموع دخله حسب جدول m_الدخل ومبلغ نفقاته حسب جدول m_outcome:

حدد معرف المنتج، SUM(in_amount) كقيمة الدخل،


SUM(out_amount) كنتيجة_amount
من
(حدد معرف المنتج، المبلغ AS in_amount، 0 AS out_amount
من م_الدخل
الاتحاد الكل
حدد Product_id، 0 AS in_amount، المبلغ AS out_amount
من m_outcome) AS ر
المجموعة حسب المنتج_id؛

الاستعلام س036.ترجع الدالة EXISTS القيمة TRUE إذا كانت المجموعة التي تم تمريرها إليها تحتوي على عناصر. تقوم الدالة EXISTS بإرجاع FALSE إذا كانت المجموعة التي تم تمريرها إليها فارغة، أي أنها لا تحتوي على أي عناصر. يعرض الاستعلام التالي رموز المنتج الموجودة في كل من جدولي m_ Income وm_outcome:

حدد منتج مميز


من m_الدخل AS أ
أين يوجد (اختر Product_id من m_outcome AS ب

الاستعلام س037.يتم عرض رموز المنتجات المضمنة في جدولي m_ Income وm_outcome:

حدد منتج مميز


من m_الدخل AS أ
أين يوجد معرف المنتج (اختر معرف المنتج من m_outcome)

الاستعلام س038.يتم عرض رموز المنتجات الموجودة في جدول m_Inc، ولكنها غير موجودة في جدول m_outcome:

حدد منتج مميز


من m_الدخل AS أ
حيث لا يوجد (اختر Product_id من m_outcome AS ب
أين b.product_id=a.product_id);

الاستعلام س039.يتم عرض قائمة المنتجات ذات الحد الأقصى لمبلغ المبيعات. الخوارزمية هي على النحو التالي. لكل منتج يتم حساب حجم مبيعاته. ومن ثم يتم تحديد الحد الأقصى لهذه المبالغ. ثم يتم حساب مجموع مبيعاته لكل منتج مرة أخرى، ويتم عرض الكود ومجموع مبيعات البضائع التي يساوي مجموع مبيعاتها الحد الأقصى:

حدد معرف_المنتج، SUM(المبلغ*السعر) كالمبلغ_sum


من m_outcome
المجموعة حسب المنتج_id
مجموع المبلغ(المبلغ*السعر) = (SELECT MAX(s_amount)
من (SELECT SUM(amount*price) AS s_amount FROM m_outcome GROUP BY Product_id));

الاستعلام Q040.يتم استخدام الكلمة المحجوزة IIF (العامل الشرطي) لتقييم التعبير المنطقي وتنفيذ إجراء بناءً على النتيجة (TRUE أو FALSE). في المثال التالي، يعتبر تسليم العنصر "صغيرًا" إذا كانت الكمية أقل من 500. وبخلاف ذلك، أي أن كمية الاستلام أكبر من أو تساوي 500، يعتبر التسليم "كبيرًا":

حدد dt، Product_id، المبلغ،


IIF(المبلغ من الدخل المالي؛

استعلام SQL Q041.في حالة استخدام مشغل IIF عدة مرات، فمن الملائم استبداله بمشغل SWITCH. يتم استخدام عامل التشغيل SWITCH (عامل التحديد المتعدد) لتقييم التعبير المنطقي وتنفيذ إجراء بناءً على النتيجة. في المثال التالي، تعتبر النصيب الذي تم تسليمه "صغيرًا" إذا كانت كمية البضائع في النصيب أقل من 500. وبخلاف ذلك، إذا كانت كمية البضائع أكبر من أو تساوي 500، فإن النصيب يعتبر "كبيرًا" ":

حدد dt، Product_id، المبلغ،


SWITCH (المبلغ = 500، "كبير") علامة AS
من م_الدخل؛

الاستعلام س042.في الطلب التالي، إذا كانت كمية البضائع في الدفعة المستلمة أقل من 300، فسيتم اعتبار الدفعة "صغيرة". بخلاف ذلك، إذا كان الشرط هو المبلغ SELECT dt، Product_id، المبلغ،
IIF(المبلغ IIF(المبلغ من الدخل المحدود؛

استعلام SQL Q043.في الطلب التالي، إذا كانت كمية البضائع في الدفعة المستلمة أقل من 300، فسيتم اعتبار الدفعة "صغيرة". بخلاف ذلك، إذا كان الشرط هو المبلغ SELECT dt، Product_id، المبلغ،
SWITCH(المبلغ المبلغ>=1000،"كبير") علامة AS
من م_الدخل؛

استعلام SQL Q044.في الاستعلام التالي، يتم تقسيم المبيعات إلى ثلاث مجموعات: صغيرة (حتى 150)، متوسطة (من 150 إلى 300)، كبيرة (300 أو أكثر). وبعد ذلك يتم حساب المبلغ الإجمالي لكل مجموعة:

حدد الفئة، SUM(outcome_sum) AS Ctgry_Total


من (اختر المبلغ*السعر كنتيجة_sum،
IIf(المبلغ*السعر IIf(المبلغ*السعر من m_outcome) AS t
المجموعة حسب الفئة؛

استعلام SQL Q045.يتم استخدام وظيفة DateAdd لإضافة أيام أو أشهر أو سنوات إلى تاريخ معين والحصول على تاريخ جديد. الطلب التالي:
1) يضيف 30 يومًا إلى التاريخ من الحقل dt ويعرض التاريخ الجديد في الحقل dt_plus_30d؛
2) يضيف شهرًا واحدًا إلى التاريخ من الحقل dt ويعرض التاريخ الجديد في الحقل dt_plus_1m:

حدد dt، dateadd("d"،30،dt) AS dt_plus_30d، dateadd("m"،1,dt) AS dt_plus_1m


من م_الدخل؛

استعلام SQL Q046.تم تصميم الدالة DateDiff لحساب الفرق بين تاريخين بوحدات مختلفة (أيام أو أشهر أو سنوات). يقوم الاستعلام التالي بحساب الفرق بين التاريخ الموجود في الحقل dt والتاريخ الحالي بالأيام والأشهر والسنوات:

SELECT dt, DateDiff("d",dt,Date()) AS last_day،


DateDiff("m",dt,Date()) كما الأشهر الأخيرة،
DateDiff("yyyy",dt,Date()) AS last_years
من م_الدخل؛

استعلام SQL Q047.يتم حساب عدد الأيام من تاريخ استلام البضاعة (جدول m_الدخل) إلى التاريخ الحالي باستخدام الدالة DateDiff ويتم مقارنة تاريخ انتهاء الصلاحية (جدول m_product):


DateDiff("d",dt,Date()) AS last_days
من m_venue كعضو داخلي m_product AS ب
على a.product_id=b.id;

استعلام SQL Q048.يتم حساب عدد الأيام من تاريخ استلام البضاعة إلى التاريخ الحالي، ثم يتم التحقق مما إذا كانت هذه الكمية تتجاوز تاريخ انتهاء الصلاحية:

حدد a.id، Product_id، dt، lifedays،


DateDiff("d",dt,Date()) AS last_days، IIf(last_days>lifedays،"Yes"، "No") AS date_expire
من m_الدخل أ INNER JOIN m_product ب
على a.product_id=b.id;

استعلام SQL Q049.يتم حساب عدد الأشهر من تاريخ استلام البضاعة إلى التاريخ الحالي. العمود Month_last1 يحسب العدد المطلق للأشهر، العمود Month_last2 يحسب عدد الأشهر الكاملة:

SELECT dt, DateDiff("m",dt,Date()) ASmonth_last1,


DateDiff("m",dt,Date())-iif(day(dt)>day(date()),1,0) ASmonth_last2
من م_الدخل؛

استعلام SQL Q050.يتم عرض تقرير ربع سنوي عن كمية وكمية البضائع المشتراة لعام 2011:

حدد kvartal، SUM(outcome_sum) AS الإجمالي


من (اختر المبلغ * السعر AS result_sum، شهر (dt) AS m،
التبديل (م = 10.4) كما كفارتال
من m_venue حيث year(dt)=2011) AS t
المجموعة حسب الربع؛

الاستعلام س051.يساعد الاستعلام التالي في معرفة ما إذا كان المستخدمون قادرين على إدخال معلومات النظام حول استهلاك البضائع بمبلغ أكبر من كمية البضائع المستلمة:

حدد معرف المنتج، SUM(in_sum) كدخل_sum، SUM(out_sum) كنتيجة_sum


من (اختر معرف_المنتج، المبلغ*السعر كـ in_sum، 0 كـ out_sum
من م_الدخل
الاتحاد الكل
حدد Product_id، 0 كـ in_sum، المبلغ*السعر كـ out_sum
من m_outcome) AS ر
المجموعة حسب المنتج_id
الحصول على مجموع(in_sum)
الاستعلام س052.يتم تنفيذ ترقيم الصفوف التي يتم إرجاعها بواسطة الاستعلام بطرق مختلفة. على سبيل المثال، يمكنك إعادة ترقيم سطور التقرير الذي تم إعداده في MS Access باستخدام MS Access نفسه. يمكنك أيضًا إعادة الترقيم باستخدام لغات البرمجة، على سبيل المثال، VBA أو PHP. ومع ذلك، في بعض الأحيان يجب القيام بذلك في استعلام SQL نفسه. لذلك، سيقوم الاستعلام التالي بترقيم صفوف جدول m_ Income حسب الترتيب التصاعدي لقيم حقل المعرف:

حدد COUNT(*) كـ N، b.id، b.product_id، b.amount، b.price


FROM m_venue a INNER JOIN m_venue b ON a.id GROUP BY b.id، b.product_id، b.amount، b.price؛

الاستعلام س053.يتم عرض أعلى خمسة منتجات من بين المنتجات حسب مبلغ المبيعات. تتم طباعة السجلات الخمسة الأولى باستخدام التعليمات TOP:

حدد أعلى 5، Product_id، sum(amount*price) كمجموع


من m_outcome
المجموعة حسب المنتج_id
الطلب حسب المبلغ (المبلغ * السعر) DESC؛

الاستعلام س054.يتم عرض أعلى خمسة منتجات من بين المنتجات حسب مبلغ المبيعات، ويتم ترقيم الصفوف نتيجة لذلك:

SELECT COUNT(*) AS N, b.product_id, b.summa


من


من مجموعة m_outcome حسب Product_id) AS أ
صلة داخلية
(اختر معرف المنتج، مجموع (المبلغ * السعر) كمجموع،
Summa*10000000+product_id AS id
من مجموعة m_outcome حسب Product_id) AS ب
على a.id>=b.id
المجموعة حسب b.product_id، b.summa
وجود عدد(*)ترتيب حسب الكونت(*);

الاستعلام س055.يوضح استعلام SQL التالي استخدام الوظائف الرياضية COS وSIN وTAN وSQRT و^ وABS في MS Access SQL:

حدد (اختر العد (*) من m_ Income) كـ N، 3.1415926 كـ pi، k،


2*pi*(k-1)/N مثل x، COS(x) مثل COS_، SIN(x) مثل SIN_، TAN(x) مثل TAN_،
SQR(x) كـ SQRT_، x^3 كـ "x^3"، ABS(x) كـ ABS_
من (اختر COUNT(*) AS ك
FROM m_venue AS a INNER JOIN m_venue AS b ON a.idGROUP BY b.id) t;

استعلام SQL. أمثلة في MS Access. التحديث: 1-10

طلب U001.يؤدي استعلام تغيير SQL التالي إلى زيادة أسعار البضائع ذات الرمز 3 في جدول m_ Income بنسبة 10%:

تحديث سعر مجموعة الدخل m = السعر*1.1


حيث Product_id=3;

طلب U002.يؤدي استعلام تحديث SQL التالي إلى زيادة كمية جميع المنتجات في جدول m_ Income بمقدار 22 وحدة تبدأ أسماؤها بكلمة "النفط":

تحديث المبلغ المحدد للدخل = المبلغ+22


أين يوجد معرّف المنتج (اختر المعرّف من m_product حيث العنوان مثل "الزيت*")؛

طلب U003.يؤدي استعلام SQL التالي لتغيير جدول m_outcome إلى تقليل أسعار جميع السلع المصنعة بواسطة Sladkoe LLC بنسبة 2 بالمائة:

تحديث سعر مجموعة m_outcome = السعر*0.98


أين يوجد معرف المنتج
(اختر a.id من m_product a INNER JOIN m_supplier b
على a.supplier_id=b.id حيث b.title="LLC"Сладкое"");. !}

العمل المختبري رقم 1

SQL: استخراج البيانات - الأمريختار

الهدف من العمل:

  • التعرف على عبارات SQL؛
  • تعرف على كيفية إنشاء استعلامات SQL بسيطة في Access باستخدام أمر SELECT؛

· استخدام عوامل التشغيل IN، BETWEEN، LIKE، NULL.

يمارس№1. قم بإنشاء استعلام لتحديد جميع قيم حقلي الاسم الأول والاسم الأخير من جدول الطلاب في وضع SQL.

اختر الاسم الأول، الاسم الأخير

من الطلاب؛

يمارس№2 . قم بإنشاء استعلام لتحديد كافة أعمدة جدول الطلاب في وضع SQL.

يختار *

من الطلاب؛


المهمة رقم 3.قم بإنشاء استعلام لتحديد أسماء المدن التي يعيش فيها الطلاب في وضع SQL، والمعلومات المتعلقة بها موجودة في جدول البيانات الشخصية.

اختر مدينة مميزة

من [البيانات الشخصية]؛

المهمة رقم 4.قم بإنشاء استعلام تحديد في وضع SQL الذي يسترد أسماء جميع الطلاب بالاسم الأخير Ivanov، والمعلومات المتعلقة بذلك موجودة في جدول الطلاب.

اختر الاسم الأخير، الاسم الأول

من الطلاب

أين الاسم الأخير = "إيفانوف"؛

المهمة رقم 5. قم بإنشاء استعلام اختيار في وضع SQL للحصول على الأسماء الأولى والأخيرة للطلاب الذين يدرسون في مجموعة UIT-22 في نموذج التعليم الخاص بالميزانية.

اختر الاسم الأخير، الاسم الأول

من الطلاب

حيث المجموعة = "UIT-22" والميزانية = صحيح؛

المهمة رقم 6. إنشاء استعلام في وضع SQL. للحصول على عينة من جدول الامتحانات، معلومات عن الطلاب الذين لديهم درجات 4 و 5 فقط.

يختار *

من [يتغيرالامتحانات]

أيندرجةفي(4,5);

المهمة رقم 7.قم بإنشاء وضع zanpoc وSQL لتحديد معلومات حول الطلاب الحاصلين على درجة امتحان 3 في مادة IOSU.

يختار *

من [يتغيرالامتحانات]

أينغرض=" IOSUدرجةليس في (4,5)؛

المهمة رقم 8.قم بإنشاء استعلام في وضع SQL لتحديد سجلات للعناصر التي تتراوح ساعاتها بين 100 و130.

يختار *

منأغراض

أينيشاهدبين 100 و130؛


المهمة رقم 9.قم بإنشاء استعلام في وضع SQL للاختيار من جدول الطلاب معلومات حول الطلاب الذين تبدأ أسماؤهم الأخيرة، على سبيل المثال، بالحرف "C".

يختار *

منطلاب

أيناسم العائلةيحب"مع*";

خاتمة:أثناء العمل المختبري، تعرفنا على تعليمات SQL، وتعلمنا كيفية إنشاء استعلامات SQL بسيطة في Access باستخدام أمر SELECT باستخدام عوامل التشغيل IN، BETWEEN، LIKE.

يمكن استخدام نماذج استعلامات SQL لتعلم وممارسة كتابة استعلامات SQL في MS Access.

يمكن دمج استعلام SQL واحد في استعلام آخر. الاستعلام الفرعي ليس أكثر من استعلام داخل استعلام. عادة، يتم استخدام استعلام فرعي في جملة WHERE. ولكن هناك طرق أخرى لاستخدام الاستعلامات الفرعية.

الاستعلام س011.يتم عرض معلومات حول المنتجات من جدول m_product، والتي توجد أكوادها أيضًا في جدول m_Inc:

يختار *
من m_product
أين يوجد المعرف (اختر Product_id FROM m_venue)؛

طلب س012.يتم عرض قائمة بالمنتجات من جدول m_product، والتي لا توجد رموزها في جدول m_outcome:

يختار *
من m_product
حيث لا يوجد معرف (اختر Product_id FROM m_outcome)؛

طلب س013.يعرض استعلام SQL هذا قائمة فريدة برموز المنتجات وأسماءها الموجودة في جدول m_Inc ولكن ليس في جدول m_outcome:

حدد معرف المنتج المميز والعنوان
من m_الدخل INNER JOIN m_product
على m_venue.product_id=m_product.id
حيث لا يوجد معرف المنتج (اختر معرف المنتج من m_outcome)؛

الاستعلام س014.يتم عرض قائمة فريدة من الفئات التي تبدأ أسماؤها بالحرف M من جدول m_category:

حدد عنوانًا مميزًا
من m_product
حيث العنوان مثل "M*"؛

الاستعلام س015.مثال على تنفيذ العمليات الحسابية على الحقول في استعلام وإعادة تسمية الحقول في استعلام (اسم مستعار). يحسب هذا المثال المصروفات = الكمية*السعر والربح لكل إدخال مصروف بند، على افتراض أن الربح هو 7 بالمائة من المبيعات:


المبلغ*السعر/100*7 كربح
من m_outcome؛

الاستعلام س016.من خلال تحليل العمليات الحسابية وتبسيطها، يمكنك زيادة سرعة تنفيذ الاستعلام:

حدد dt، Product_id، المبلغ، السعر، المبلغ * السعر AS result_sum،
result_sum*0.07 كربح
من m_outcome؛

الاستعلام س017.يمكنك استخدام عبارة INNER JOIN لربط البيانات من جداول متعددة. في المثال التالي، اعتمادًا على قيمة ctgry_id، تتم مطابقة كل إدخال في جدول m_ Income مع اسم الفئة من جدول m_category الذي ينتمي إليه المنتج:

حدد c.title، b.title، dt، المبلغ، السعر، المبلغ * السعر AS الدخل_sum
من (m_venue AS a INNER JOIN m_product AS b ON a.product_id=b.id)
INNER JOIN m_category AS c ON b.ctgry_id=c.id
ترتيب حسب c.title، b.title؛

طلب س018.وظائف مثل SUM - المبلغ، COUNT - الكمية، AVG - المتوسط ​​الحسابي، MAX - الحد الأقصى للقيمة، MIN - الحد الأدنى للقيمة تسمى الوظائف المجمعة. يقبلون العديد من القيم وبعد معالجتها يعودون بقيمة واحدة. مثال لحساب مجموع حاصل ضرب حقلي المبلغ والسعر باستخدام الدالة التجميعية SUM.