JavaRush /مدونة جافا /Random-AR /نقوم بتحليل قواعد البيانات ولغة SQL. (الجزء الرابع - التح...
Roman Beekeeper
مستوى

نقوم بتحليل قواعد البيانات ولغة SQL. (الجزء الرابع - التحقق من الواجبات المنزلية) - "مشروع جافا من الألف إلى الياء"

نشرت في المجموعة
مقال من سلسلة حول إنشاء مشروع Java (توجد روابط لمواد أخرى في النهاية). هدفه هو تحليل التقنيات الرئيسية، والنتيجة هي كتابة روبوت برقية. المقالات السابقة وتحليل الواجبات المنزلية على قواعد البيانات: 1 ، 2 ، 3 . إلى كل من كان له الصبر والتحمل، إلى كل من مر معي بهذا المقال الرابع، أحسنت. وكما يقولون من يمشي يستطيع أن يتقن الطريق. سيتم إصدار المقالة الأخيرة حول قواعد البيانات هذا الأسبوع، والتي سنتحدث فيها عن أنواع العلاقات وعمليات الانضمام . ولكن قبل أن نتعامل مع المعلومات الجديدة، دعونا نتحقق من واجباتنا المنزلية... لقد شعرت حقًا أنني معلمة. لا تغضب مني: ليس لدي تعليم تربوي، هذا أمر مؤكد. منذ الأسبوع الماضي، استحوذ الفحص التفصيلي لجهاز التحكم عن بعد على نصيب الأسد من المادة، قررت تقسيم تحليل الواجبات المنزلية ومراجعة المواد الجديدة إلى جزأين."مشروع جافا من الألف إلى الياء": نقوم بتحليل قواعد البيانات ولغة SQL.  الجزء الرابع – مراجعة الواجبات المنزلية – 1

في الواقع، تحليل الواجبات المنزلية

أنا بالتأكيد سعيد بوجود أشخاص يعانون من مرض باركنسون ويتحدثون عنه. ان هذا رائع! أنا متأكد قدر الإمكان أن مجرد القراءة دون تعزيز المعرفة هو الطريق إلى اللامكان. لذلك، كل من فعل أو حاول القيام به - احترام. دعني أذكرك بشروط المهام:
  1. افهم عامل التشغيل HAVING واكتب استعلامًا نموذجيًا للجداول من مثالنا. إذا كنت بحاجة إلى إضافة بعض الحقول أو المزيد من القيم لجعل الأمر أكثر وضوحًا، فقم بإضافتها. إذا أراد أي شخص ذلك، فاكتب حل المثال الخاص بك في التعليقات - حتى أتمكن أيضًا من التحقق منه إذا كان لدي الوقت.
  2. قم بتثبيت MySQL Workbench للعمل مع قاعدة البيانات من خلال واجهة المستخدم. أعتقد أننا حصلنا بالفعل على ما يكفي من التدريب على العمل من وحدة التحكم. الاتصال بقاعدة البيانات. إذا كنت تستخدم شيئًا آخر للعمل مع قاعدة البيانات، فلا تتردد في تخطي هذه المهمة. هنا وأكثر سأستخدم MySQL Workbench فقط.
  3. كتابة طلبات الاستلام باستخدام بياناتنا:
    1. أصغر/أكبر دولة من حيث عدد السكان؛
    2. متوسط ​​عدد السكان في البلاد؛
    3. متوسط ​​عدد السكان في البلدان التي تنتهي أسماؤها بالحرف "أ"؛
    4. عدد البلدان التي يزيد عدد سكانها عن أربعة ملايين نسمة؛
    5. فرز البلدان عن طريق خفض عدد السكان؛
    6. فرز الدول حسب الاسم بالترتيب الطبيعي.

دعونا نتحدث عن وجود

يمكن أن تساعدك معرفة عامل Have في اجتياز أكثر من مقابلة حيث ستكون هناك مشكلات في SQL. ولذلك، فإن فهم ذلك مهم للغاية. يحدث أنه لا يمكنك استخدام الشروط لتجميع الوظائف (SUM، MIN، MAX، AVG). بالإضافة إلى ذلك، يتم استخدام HAVING للحقول المجمعة. ماذا يعني ذلك؟ على سبيل المثال، إذا أردنا الحصول على بلدان يبلغ متوسط ​​عدد سكانها في المدن أكثر من 50000 نسمة، فلا يمكننا الاستغناء عن استخدام HAVING. كما أفهم، يتم ذلك لأن التجميع يحدث بعد تنفيذ عبارة WHERE ومن المستحيل إضافة قيم التجميع إليها والتي سيتم حسابها لاحقًا. حتى لو كانت آرائي حتى الآن لا تضيف الكثير إلى الفهم، يمكنك ببساطة قبول ذلك كحقيقة والمضي قدمًا معه. في البرمجة، يحدث غالبًا أنه إذا كان هناك شيء ما غير واضح في لحظة ما، فقد يعني ذلك أن الدماغ ببساطة لم يهضمه بعد. نم مع هذا الفكر، وفي اليوم التالي سوف يصبح كل شيء أكثر وضوحا.

تثبيت MySQL Workbench

هنا وأكثر سأستخدم Workbench للاستعلامات. سأوضح لك ما تحتاج إلى تثبيته وإنشاء اتصال بقاعدة البيانات. هذا منتج من شركة Oracle، لذا ما عليك سوى الانتقال إلى موقع الويب الخاص بهم وتحديد الإصدار ونظام التشغيل الذي تريده. للقيام بذلك، اتبع هذا الرابط : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 2هنا يمكنك تحديد نظام التشغيل الذي تحتاجه بالضبط. انقر فوق تنزيل ، ولكن بدلاً من التنزيل سنرى هذه النافذة: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 3لا تضيع، فقط ابحث عن الزر المسمى لا شكرًا، فقط ابدأ التنزيل ، وسيبدأ التنزيل. لماذا يفعلون هذا؟ ربما، حتى يتمكن المزيد من الأشخاص من التسجيل معهم، فهذا ليس مهمًا بالنسبة لنا. بعد التنزيل بنجاح، قم بتشغيل ملف التثبيت. على نظام MacOS، يبدو الأمر كما يلي: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 4ما عليك سوى سحب الرمز، وبذلك يكون التثبيت قد اكتمل. ليس بنفس صعوبة تثبيت MySQL نفسه، أليس كذلك؟ أو أننا اعتدنا على ذلك للتو وأصبحنا أكثر خبرة؛) الجزء الثاني من هذه المهمة هو إنشاء اتصال بقاعدة البيانات الخاصة بنا. ما هو المطلوب لهذا؟ انقر فوق علامة الجمع الموجودة بجانب اتصالات MySQL: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 5في النافذة التي تظهر، أدخل البيانات الضرورية:
  • اسم الاتصال - اسم اتصالنا. اكتب أسماء واضحة قدر الإمكان حتى لا تكون هناك مشاكل في تحديد الهوية لاحقًا. أعطي هذا الاتصال الاسم JRTB_DB ؛
  • اسم المضيف - سيتم تعيينه بالفعل على أنه 127.0.0.1 محلي (ويعرف أيضًا باسم المضيف المحلي). في حالتنا، لا يلزم تغيير أي شيء، نظرًا لأن قاعدة البيانات مثبتة على الكمبيوتر، ولكن إذا كانت قاعدة البيانات في مكان آخر، فيجب تغيير المضيف (IP الخاص بالجهاز الذي تعمل عليه قاعدة البيانات) وفقًا لذلك؛
  • اسم المستخدم - يمكنك أيضًا تحديد المستخدم الخاص بك إذا لزم الأمر. إذا لم تقم بإضافة أي شيء في هذا المفتاح، فاتركه دون تغيير؛
  • كلمة المرور - انقر فوق Store in Keychain وقم بتعيين كلمة المرور التي قمت بتعيينها لنفسك بالضبط. لقد تركت كل شيء بسيطًا - الجذر .
للتحقق مما إذا كان الاتصال سيعمل، انقر فوق اختبار الاتصال : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 6حسنًا، إذا تم كل شيء بشكل صحيح، فلن تستغرق النتيجة وقتًا طويلاً: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 7الآن لدينا اتصال محفوظ في قاعدة البيانات، ولن نحتاج إلى إنشاء اتصال وملء في الاسم وكلمة المرور في كل مرة. وستبدو هذه السعادة على النحو التالي: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 8نذهب إلى الاتصال الذي تم إنشاؤه حديثًا ونرى نافذة الطلب. للتأكد من أن كل شيء صحيح، دعونا نتحقق من قائمة قواعد البيانات، ونذهب إلى قواعد البيانات الخاصة بنا ونحصل على جميع البيانات حول المدن: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 9وهنا نحصل على تفويض مطلق لما نحتاج إليه. القسم الأول مسؤول عن البرنامج النصي الذي ندخله. بعد ذلك، في شبكة النتائج ، نرى نتيجة العملية الأخيرة في البرنامج النصي. وتظهر مخرجات الإجراء قائمة العمليات ونتيجتها. أريد أن أخبرك بشيء مفيد للغاية: بمساعدته يمكنك مراقبة سرعة تنفيذ نصوص معينة. لماذا هو مهم؟ إحدى المشاكل الأكثر شيوعًا في سرعة تنفيذ المهام في التطبيق هي سرعة تنفيذ الاستعلام في قاعدة البيانات. هنا يمكنك التحقق منها يدويًا بسرعة وسهولة.

نكتب الطلبات اللازمة

لدينا 7 طلبات فقط لإكمالها، هيا بنا!

  1. احصل على الدولة الأكثر اكتظاظا بالسكان. هنا يمكنك الذهاب بمكر واتخاذ عدة طرق:

  • حسب الجدول القطري

ثم نحتاج فقط إلى فرز استعلامنا حسب عدد السكان وأخذ سجل واحد فقط. للقيام بذلك، تحتاج إلى إضافة عامل تشغيل LIMIT في نهاية البرنامج النصي وتحديد الكمية المطلوبة: $ SELECT * FROM Country ORDER BY السكان DESC LIMIT 1؛"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 10

  • حسب جدول المدينة

كل شيء أكثر إثارة للاهتمام هنا، لأن الطلب سيكون أكثر تعقيدًا، ولكنه أيضًا أكثر إثارة للاهتمام. نظرًا لأنه ليس لدينا أي فكرة عن عمليات الانضمام، يمكننا فقط الحصول على معرف البلد: $ SELECT Country_id, SUM(population) FROM city GROUP BY Country_id ORDER BY SUM(population) DESC LIMIT 1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 11لقد قمنا هنا بشيء رائع - لقد جمعنا مجموع سكان جميع المدن المعروفة في كل بلد، وفرزنا حسب هذا المجموع وأخذنا العنصر الأول. حسنا، هل هو عظيم؟ أنا سعيد:D بعد ذلك تشعر على الفور وكأنك خبير في الاستعلامات... (ليس لفترة طويلة بالطبع))

  1. الحصول على أصغر دولة. هنا يمكنك الذهاب بمكر واتخاذ عدة طرق

في هذه الحالة، كل شيء سيكون هو نفسه تماما. والفرق الوحيد هو أن الترتيب سيتم عكسه، هذا كل شيء. لذلك، أنا ببساطة أكتب الطلبات:

  • حسب جدول المدينة

$ SELECT Country_id, SUM(population) FROM city GROUP BY Country_id ORDER BY SUM(population) LIMIT 1;

  • حسب الجدول القطري

$ اختر * من البلد ترتيب حسب عدد السكان LIMIT 1؛ وشاهدي النتيجة بنفسك!

  1. متوسط ​​عدد السكان في البلاد

مرة أخرى، المواصفات الفنية غير دقيقة إلى حدٍ ما، كما لو أن المدير قد كتبها... لماذا قررت ذلك؟ لأنه ليس من الواضح أي جدول للعمل فيه. لكن هذا أمر طبيعي: ببساطة لا توجد مهام يكون فيها كل شيء واضحًا ومفهومًا على الفور. لذلك، تحتاج إلى قراءة المهام بعناية، وإذا كانت لديك أسئلة، فاطرحها على الفور! هذا صحيح، ملاحظة. مع الأخذ بعين الاعتبار البيانات الموجودة في قاعدة البيانات، سوف نقوم بالبحث باستخدام البيانات من المدن. للقيام بذلك، اكتب الاستعلام التالي: $ SELECT Country_id, AVG(population) FROM city GROUP BY Country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 12الأمر بسيط هنا: نستخدم وظيفة AVG ونقوم بتجميع سجلات مدينتنا حسب البلد.

  1. متوسط ​​عدد السكان في الدول التي تنتهي أسماؤها بالحرف "أ"

سيكون هناك تغيير طفيف هنا عند الطلب. نحن بحاجة إلى إضافة التصفية حسب الأسماء قبل أن نقوم بالتجميع. أقوم بواجباتي المنزلية، مثل جميع الطلاب، قبل نشر هذه المقالة، وأدرك أن هذه المشكلة لا يمكن حلها بدون الانضمام. لماذا؟ لأنه بالإضافة إلى معرف البلد، نحتاج أيضًا إلى الحصول على اسمه. وهذا لا يمكن أن يتم دون ضم جدولين في سجل واحد. لذلك، سأقوم بهذه المهمة بالطبع، لكن هذه هي عضالتي...))) أردت أن أتوصل إلى مهمة باستخدام LIKE في الطلب...) $ SELECT ci.country_id, AVG(ci.population ) من المدينة ci INNER JOIN Country co على ci.country_id = co.id WHERE co.name LIKE "%a" GROUP BY Country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 13ماذا حدث هنا؟ أولاً، قمنا بضم السجلات من جداول المدينة والبلد باستخدام المفتاح الخارجي Country_id، وتمت تصفيتها حسب أسماء البلدان بحيث تنتهي بـ "a"، وبعد ذلك فقط تم تجميعها حسب Country_id.

  1. عدد الدول التي يزيد عدد سكانها عن أربعة ملايين نسمة

نحتاج هنا فقط إلى استخدام الدالة COUNT وإضافة التصفية على عدد السكان: $ SELECT COUNT(*) from Country WHERE السكان > 4000000; ونتيجة لذلك نجد أن هناك 3 دول، فهل هذا صحيح؟ نعم، مولدوفا فقط هي التي لم تتجاوز هذا الإنجاز.

  1. فرز الدول حسب عدد السكان

للقيام بذلك، نحتاج إلى استخدام عامل التشغيل ORDER BY الذي نعرفه بالفعل. لكن ضع في اعتبارك أنه بشكل افتراضي يكون الفرز بترتيب طبيعي. بالنسبة للأرقام، فهذا يعني أنها مرتبة تصاعديًا، وبالنسبة للسلاسل، يعني أنها مرتبة بدءًا من الأحرف الأولى. إذا كنا بحاجة إلى فرز تنازلي، فنحن بحاجة إلى عكس الترتيب الطبيعي: $ SELECT * FROM Country ORDER BY السكان DESC؛"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 14

  1. فرز الدول حسب الاسم بالترتيب الطبيعي

هذا هو المكان الذي ستكون فيه معرفة ماهية النظام الطبيعي مفيدة. نظرًا لأنه الإعداد الافتراضي، فهو أمر سهل بالنسبة لنا: $ SELECT * FROM Country ORDER BY name؛"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 15

بدلا من الإخراج

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

توجد قائمة بجميع المواد الموجودة في السلسلة في بداية هذه المقالة.

تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION