مقال من سلسلة حول إنشاء مشروع Java (توجد روابط لمواد أخرى في النهاية). هدفه هو تحليل التقنيات الرئيسية، والنتيجة هي كتابة روبوت برقية. المقالات السابقة وتحليل الواجبات المنزلية على قواعد البيانات: 1 ، 2 ، 3 . إلى كل من كان له الصبر والتحمل، إلى كل من مر معي بهذا المقال الرابع، أحسنت. وكما يقولون من يمشي يستطيع أن يتقن الطريق. سيتم إصدار المقالة الأخيرة حول قواعد البيانات هذا الأسبوع، والتي سنتحدث فيها عن أنواع العلاقات وعمليات الانضمام . ولكن قبل أن نتعامل مع المعلومات الجديدة، دعونا نتحقق من واجباتنا المنزلية... لقد شعرت حقًا أنني معلمة. لا تغضب مني: ليس لدي تعليم تربوي، هذا أمر مؤكد. منذ الأسبوع الماضي، استحوذ الفحص التفصيلي لجهاز التحكم عن بعد على نصيب الأسد من المادة، قررت تقسيم تحليل الواجبات المنزلية ومراجعة المواد الجديدة إلى جزأين.
ثم نحتاج فقط إلى فرز استعلامنا حسب عدد السكان وأخذ سجل واحد فقط. للقيام بذلك، تحتاج إلى إضافة عامل تشغيل LIMIT في نهاية البرنامج النصي وتحديد الكمية المطلوبة: $ SELECT * FROM Country ORDER BY السكان DESC LIMIT 1؛
كل شيء أكثر إثارة للاهتمام هنا، لأن الطلب سيكون أكثر تعقيدًا، ولكنه أيضًا أكثر إثارة للاهتمام. نظرًا لأنه ليس لدينا أي فكرة عن عمليات الانضمام، يمكننا فقط الحصول على معرف البلد: $ SELECT Country_id, SUM(population) FROM city GROUP BY Country_id ORDER BY SUM(population) DESC LIMIT 1; لقد قمنا هنا بشيء رائع - لقد جمعنا مجموع سكان جميع المدن المعروفة في كل بلد، وفرزنا حسب هذا المجموع وأخذنا العنصر الأول. حسنا، هل هو عظيم؟ أنا سعيد:D بعد ذلك تشعر على الفور وكأنك خبير في الاستعلامات... (ليس لفترة طويلة بالطبع))
في هذه الحالة، كل شيء سيكون هو نفسه تماما. والفرق الوحيد هو أن الترتيب سيتم عكسه، هذا كل شيء. لذلك، أنا ببساطة أكتب الطلبات:
$ SELECT Country_id, SUM(population) FROM city GROUP BY Country_id ORDER BY SUM(population) LIMIT 1;
$ اختر * من البلد ترتيب حسب عدد السكان LIMIT 1؛ وشاهدي النتيجة بنفسك!
مرة أخرى، المواصفات الفنية غير دقيقة إلى حدٍ ما، كما لو أن المدير قد كتبها... لماذا قررت ذلك؟ لأنه ليس من الواضح أي جدول للعمل فيه. لكن هذا أمر طبيعي: ببساطة لا توجد مهام يكون فيها كل شيء واضحًا ومفهومًا على الفور. لذلك، تحتاج إلى قراءة المهام بعناية، وإذا كانت لديك أسئلة، فاطرحها على الفور! هذا صحيح، ملاحظة. مع الأخذ بعين الاعتبار البيانات الموجودة في قاعدة البيانات، سوف نقوم بالبحث باستخدام البيانات من المدن. للقيام بذلك، اكتب الاستعلام التالي: $ SELECT Country_id, AVG(population) FROM city GROUP BY Country_id; الأمر بسيط هنا: نستخدم وظيفة AVG ونقوم بتجميع سجلات مدينتنا حسب البلد.
سيكون هناك تغيير طفيف هنا عند الطلب. نحن بحاجة إلى إضافة التصفية حسب الأسماء قبل أن نقوم بالتجميع. أقوم بواجباتي المنزلية، مثل جميع الطلاب، قبل نشر هذه المقالة، وأدرك أن هذه المشكلة لا يمكن حلها بدون الانضمام. لماذا؟ لأنه بالإضافة إلى معرف البلد، نحتاج أيضًا إلى الحصول على اسمه. وهذا لا يمكن أن يتم دون ضم جدولين في سجل واحد. لذلك، سأقوم بهذه المهمة بالطبع، لكن هذه هي عضالتي...))) أردت أن أتوصل إلى مهمة باستخدام 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; ماذا حدث هنا؟ أولاً، قمنا بضم السجلات من جداول المدينة والبلد باستخدام المفتاح الخارجي Country_id، وتمت تصفيتها حسب أسماء البلدان بحيث تنتهي بـ "a"، وبعد ذلك فقط تم تجميعها حسب Country_id.
نحتاج هنا فقط إلى استخدام الدالة COUNT وإضافة التصفية على عدد السكان: $ SELECT COUNT(*) from Country WHERE السكان > 4000000; ونتيجة لذلك نجد أن هناك 3 دول، فهل هذا صحيح؟ نعم، مولدوفا فقط هي التي لم تتجاوز هذا الإنجاز.
للقيام بذلك، نحتاج إلى استخدام عامل التشغيل ORDER BY الذي نعرفه بالفعل. لكن ضع في اعتبارك أنه بشكل افتراضي يكون الفرز بترتيب طبيعي. بالنسبة للأرقام، فهذا يعني أنها مرتبة تصاعديًا، وبالنسبة للسلاسل، يعني أنها مرتبة بدءًا من الأحرف الأولى. إذا كنا بحاجة إلى فرز تنازلي، فنحن بحاجة إلى عكس الترتيب الطبيعي: $ SELECT * FROM Country ORDER BY السكان DESC؛
هذا هو المكان الذي ستكون فيه معرفة ماهية النظام الطبيعي مفيدة. نظرًا لأنه الإعداد الافتراضي، فهو أمر سهل بالنسبة لنا: $ SELECT * FROM Country ORDER BY name؛
في الواقع، تحليل الواجبات المنزلية
أنا بالتأكيد سعيد بوجود أشخاص يعانون من مرض باركنسون ويتحدثون عنه. ان هذا رائع! أنا متأكد قدر الإمكان أن مجرد القراءة دون تعزيز المعرفة هو الطريق إلى اللامكان. لذلك، كل من فعل أو حاول القيام به - احترام. دعني أذكرك بشروط المهام:- افهم عامل التشغيل HAVING واكتب استعلامًا نموذجيًا للجداول من مثالنا. إذا كنت بحاجة إلى إضافة بعض الحقول أو المزيد من القيم لجعل الأمر أكثر وضوحًا، فقم بإضافتها. إذا أراد أي شخص ذلك، فاكتب حل المثال الخاص بك في التعليقات - حتى أتمكن أيضًا من التحقق منه إذا كان لدي الوقت.
- قم بتثبيت MySQL Workbench للعمل مع قاعدة البيانات من خلال واجهة المستخدم. أعتقد أننا حصلنا بالفعل على ما يكفي من التدريب على العمل من وحدة التحكم. الاتصال بقاعدة البيانات. إذا كنت تستخدم شيئًا آخر للعمل مع قاعدة البيانات، فلا تتردد في تخطي هذه المهمة. هنا وأكثر سأستخدم MySQL Workbench فقط.
- كتابة طلبات الاستلام باستخدام بياناتنا:
- أصغر/أكبر دولة من حيث عدد السكان؛
- متوسط عدد السكان في البلاد؛
- متوسط عدد السكان في البلدان التي تنتهي أسماؤها بالحرف "أ"؛
- عدد البلدان التي يزيد عدد سكانها عن أربعة ملايين نسمة؛
- فرز البلدان عن طريق خفض عدد السكان؛
- فرز الدول حسب الاسم بالترتيب الطبيعي.
دعونا نتحدث عن وجود
يمكن أن تساعدك معرفة عامل Have في اجتياز أكثر من مقابلة حيث ستكون هناك مشكلات في SQL. ولذلك، فإن فهم ذلك مهم للغاية. يحدث أنه لا يمكنك استخدام الشروط لتجميع الوظائف (SUM، MIN، MAX، AVG). بالإضافة إلى ذلك، يتم استخدام HAVING للحقول المجمعة. ماذا يعني ذلك؟ على سبيل المثال، إذا أردنا الحصول على بلدان يبلغ متوسط عدد سكانها في المدن أكثر من 50000 نسمة، فلا يمكننا الاستغناء عن استخدام HAVING. كما أفهم، يتم ذلك لأن التجميع يحدث بعد تنفيذ عبارة WHERE ومن المستحيل إضافة قيم التجميع إليها والتي سيتم حسابها لاحقًا. حتى لو كانت آرائي حتى الآن لا تضيف الكثير إلى الفهم، يمكنك ببساطة قبول ذلك كحقيقة والمضي قدمًا معه. في البرمجة، يحدث غالبًا أنه إذا كان هناك شيء ما غير واضح في لحظة ما، فقد يعني ذلك أن الدماغ ببساطة لم يهضمه بعد. نم مع هذا الفكر، وفي اليوم التالي سوف يصبح كل شيء أكثر وضوحا.تثبيت MySQL Workbench
هنا وأكثر سأستخدم Workbench للاستعلامات. سأوضح لك ما تحتاج إلى تثبيته وإنشاء اتصال بقاعدة البيانات. هذا منتج من شركة Oracle، لذا ما عليك سوى الانتقال إلى موقع الويب الخاص بهم وتحديد الإصدار ونظام التشغيل الذي تريده. للقيام بذلك، اتبع هذا الرابط : هنا يمكنك تحديد نظام التشغيل الذي تحتاجه بالضبط. انقر فوق تنزيل ، ولكن بدلاً من التنزيل سنرى هذه النافذة: لا تضيع، فقط ابحث عن الزر المسمى لا شكرًا، فقط ابدأ التنزيل ، وسيبدأ التنزيل. لماذا يفعلون هذا؟ ربما، حتى يتمكن المزيد من الأشخاص من التسجيل معهم، فهذا ليس مهمًا بالنسبة لنا. بعد التنزيل بنجاح، قم بتشغيل ملف التثبيت. على نظام MacOS، يبدو الأمر كما يلي: ما عليك سوى سحب الرمز، وبذلك يكون التثبيت قد اكتمل. ليس بنفس صعوبة تثبيت MySQL نفسه، أليس كذلك؟ أو أننا اعتدنا على ذلك للتو وأصبحنا أكثر خبرة؛) الجزء الثاني من هذه المهمة هو إنشاء اتصال بقاعدة البيانات الخاصة بنا. ما هو المطلوب لهذا؟ انقر فوق علامة الجمع الموجودة بجانب اتصالات MySQL: في النافذة التي تظهر، أدخل البيانات الضرورية:- اسم الاتصال - اسم اتصالنا. اكتب أسماء واضحة قدر الإمكان حتى لا تكون هناك مشاكل في تحديد الهوية لاحقًا. أعطي هذا الاتصال الاسم JRTB_DB ؛
- اسم المضيف - سيتم تعيينه بالفعل على أنه 127.0.0.1 محلي (ويعرف أيضًا باسم المضيف المحلي). في حالتنا، لا يلزم تغيير أي شيء، نظرًا لأن قاعدة البيانات مثبتة على الكمبيوتر، ولكن إذا كانت قاعدة البيانات في مكان آخر، فيجب تغيير المضيف (IP الخاص بالجهاز الذي تعمل عليه قاعدة البيانات) وفقًا لذلك؛
- اسم المستخدم - يمكنك أيضًا تحديد المستخدم الخاص بك إذا لزم الأمر. إذا لم تقم بإضافة أي شيء في هذا المفتاح، فاتركه دون تغيير؛
- كلمة المرور - انقر فوق Store in Keychain وقم بتعيين كلمة المرور التي قمت بتعيينها لنفسك بالضبط. لقد تركت كل شيء بسيطًا - الجذر .
GO TO FULL VERSION