هل لديك أسئلة تتعلق بمهارات SQL المتطورة؟ قم بوصفها. هذه المقالة ستعرف SQL المتقدمة، خاصةً من حيث صلتها بـ SPOTO.
من المحتمل أن تصادف مصطلحات “مهارات SQL المتقدمة” و “مواضيع SQL المتقدمة” بشكل متكرر. بعد قراءة مقال واحد عن SQL المتقدمة، تشعر بالسعادة لمدى بساطة هذه المواضيع. بعد التحدث إلى شخص ما، تدرك أنه يرى أن كل ما تعرفه هو معرفة أساسية في SQL. ما الذي يميزك؟ ما هو مستوى مستخدم SQL الذي تعتبره أساسيًا أم متوسطًا أم متقدمًا؟
يتم استخدام SQL المتقدم في كثير من الأحيان. على الأقل مصطلح “متقدم”. وكثيرًا ما يستخدمه كل من خبراء SQL وطلاب SQL. وهو مذكور في وصف دورات SQL، وإعلانات الوظائف، وأسئلة المقابلات الشخصية. وتحتويه أدبيات SQL. عندما يتحدث زملاء العمل في العمل، قد تسمعها في العمل. حاول العديد من المؤلفين تعريف ماهية SQL المتقدمة.
نحن لا نحاول تعريف SQL المتطورة لك. الشيء الآخر الذي نحاول أن نوضحه هو أن SQL المتطورة لها عدة تعريفات مختلفة. يجب عليك أيضًا التخلي عن البحث عنها. بدلاً من ذلك، ما الذي يجب عليك فعله؟
قبول التباين
هذا صحيح! تقبّل حقيقة أن عبارة “SQL المتطورة” يتم طرحها بشكل اعتباطي. اعتمادًا على السياق والشخص الذي يستخدم الكلمة، قد تعني عدة أشياء.
يجب أن تتضمن SQL المتقدمة شيئًا واحدًا لشخص يقوم بإنشاء تقارير SQL وشيئًا آخر تمامًا لشخص يوظف محلل بيانات، وهو أمر منطقي تمامًا. سيطلق مطور البرمجيات بلا شك على SQL المتطورة معنى مختلفًا.
أنت ترى ما أعنيه. لا يمكن أن يكون هناك تعريف واحد لـ SQL المتقدمة. ضع دائمًا المؤلف وجمهوره والسياق في الاعتبار عند القراءة عن تقنيات SQL المتقدمة.
على Stack Overflow، على سبيل المثال، هناك محادثة مثيرة للاهتمام للغاية حول SQL المتقدمة.
لاحظ شخص ما يبحث عن عمل في SQL أن العديد من الوظائف تتطلب مهارات SQL متقدمة وهذا ما أثار محادثة. يستفسر المستخدم عما يمكن توقعه من هذا النوع من العمل. ما هو مستوى المعرفة الذي يعتبر متقدمًا؟
كمؤشر على مستوى خبرتهم، يقدم الرد الأول عينة برمجية طويلة جدًا. على الرغم من طولها، إلا أنها ليست صعبة. تدّعي هذه الإجابة أن SQL المتقدمة تتضمن إعلان المتغيرات، والاستعلامات الفرعية، وبيان CASE WHEN، وJUINS، وشرط WHERE، والدوال التجميعية مثل MIN() و MAX().
أما الرد التالي، فيرى أن غالبية هذه الموضوعات أساسية أو متوسطة على الأكثر. وفقًا لهذا المستخدم، تتضمن مواضيع SQL المتقدمة المعاملات والنماذج العادية والمفاتيح الرئيسية والأجنبية والاستعلامات الهرمية والمشغلات والمؤشرات والإجراءات المخزنة وغير ذلك الكثير.
بالنظر إلى أن هذا كان تدريبًا لمديري قواعد البيانات، فمن المنطقي أن تعتبر هذه المعلومات متقدمة. قد لا يحتاج بعض محللي البيانات ومحترفي إعداد التقارير إلى استخدام مثل هذه الأدوات.
من المثير للاهتمام أن نلاحظ أنه في بعض الأحيان لا يزال يُنظر إلى تطوير الإجراءات المخزنة على أنها معرفة أساسية بينما تعتبر عمليات الربط معقدة. يمكننا أن نرى السبب في ذلك لأن أحد المستخدمين يلمح إلى المشكلة مع JOINs.
على الرغم من أنها تعتبر عادةً معلومات بسيطة، إلا أن العديد من مستخدمي SQL يتقنون مواضيع أكثر تعقيدًا إلى حد كبير قبل فهم JOINs حقًا.
هذه هي الطريقة التي قد تتقدم بها معرفة الأساسيات بسرعة. بدون فهم كيفية إنشاء وصلة مشتركة مباشرة، ليس من غير المألوف رؤية أشخاص يستخدمون دوال مبهرجة ومشغلات وأشياء أخرى من هذا القبيل.
يكون منحنى التعلُّم حادًا إلى حدٍ ما في البداية لأنها لغة توضيحية. بعبارة أخرى، لن يستغرق الأمر وقتًا طويلاً لتتعلم أساسيات اللغة. ولكن عندما تتجاوز هذه النقطة، تصبح الأفكار أكثر تعقيداً وأكثر اعتماداً على فهم الأساسيات.
لكل نظام نسخته من SQL المتقدمة، والتي قد تحتوي على وظائف إضافية، أو ميزات أقل، أو بناء جملة مختلف. ومع ذلك، فإن الأفكار المقدمة هنا تنطبق على أي نظام.
من المهم فهم ماهية SQL المتقدمة قبل محاولة تعريفها. إذا نظرت إلى فصولنا وموادنا، فإن كل شيء في SQL-92 يعتبر SQL أساسي أو متوسط. إذا كنت مهتمًا بمعرفة المزيد، يمكنك دراسة تاريخ وتفاصيل معايير SQL هنا.
هذا يشمل:
إذا كنت تدعي معرفة SQL، فيجب أن تكون على دراية بهذه الموضوعات. قبل الانتقال إلى مواضيع أكثر تعقيدًا، يجب عليك فهم هذه المفاهيم.
يمكنك تنفيذ المهام المطلوبة بشكل متكرر لإنتاج التقارير باستخدام وظائف نافذة SQL، مثل تصنيف البيانات، وحساب المجاميع الجارية، والمتوسطات المتحركة، وتحديد الفرق بين الصفوف، وما إلى ذلك. بالإضافة إلى ذلك، يمكنك تقسيم البيانات إلى نوافذ بحيث يمكنك إجراء عمليات على أجزاء من البيانات بدلاً من المجموعة بأكملها. تحتوي الدورة التدريبية لوظائف النوافذ على المزيد من المعلومات حول هذا الأمر.
لن تحتاج إلى استخدام استعلامات فرعية أثناء كتابة الاستعلامات المعقدة بفضل CTEs، والتي ستحافظ على نظافة شفرتك البرمجية وعدم تعقيدها. فهي تمكّنك من إنشاء تقارير معقدة بسرعة وفعالية. كما أنها تسمح لك بإجراء عمليات حسابية لم تكن لتتمكن من إجرائها لولاها.
قد تتساءل ما هو تعبير الجدول الشائع. يمكنك استخدامه كنتيجة مؤقتة في استعلام SELECT. وهي تعمل بشكل مشابه للجدول المؤقت من حيث أنه يمكنك ربطها بجداول أخرى أو CTEs أو الجدول نفسه.
قد تكون مفيدة إذا كنت تحتاج، على سبيل المثال، إلى الإبلاغ عن مقدار الوقت المستغرق في مشروع معين. يسرد جدول على جانب واحد التواريخ التي ساهم بها كل موظف في هذا المشروع. وقت البدء ووقت الانتهاء من المشروع. يوجد جدول بأسماء الموظفين على الجانب الآخر. يجب عليك إنشاء جدول بأسماء كل موظف ومتوسط الوقت الذي قضوه في هذا المشروع.
لديك المزيد من الخيارات لتجميع البيانات بفضل تحسينات SQL الخاصة بـ GROUP BY. ونتيجة لذلك، قد يزداد تعقيد تحليل بياناتك والتقارير التي تقدمها.
تتوفر ثلاثة امتدادات لـ GROUP BY:
يمكّنك ROLLUP، على عكس GROUP BY العادية، من تقسيم البيانات إلى مجموعات بيانات عديدة وتجميع النتائج على عدة مستويات. ببساطة، يمكنك استخدام ROLLUP لحساب المجاميع والمجاميع الفرعية تمامًا كما هو الحال في جداول Excel المحورية، على الرغم من اللغة الفاخرة.
امتداد CUBE قابل للمقارنة، ولكن هناك فرق كبير. سيوفر CUBE مجاميع فرعية لكل مجموعة من الأعمدة المزودة.
مجموعات التجميع هي النوع الأخير. تُعرف مجموعة الأعمدة المستخدمة في بند التجميع حسب باسم مجموعة التجميع. إذا كنت تستخدم UNION ALL، فيمكنك ربط استعلامات مختلفة تحتوي على GROUP BY. لكن كلما زادت قذارة الاستعلامات كلما زاد عدد الأسئلة التي لديك. باستخدام GROUPING SETS، قد تحصل على نفس التأثير باستعلامات أنظف بكثير.
على غرار الدوال العودية والمكتبات العودية في Python، فإن CTE العودية هي CTE التي تشير إلى نفسها. عندما يتعلق الأمر بالوصول إلى البيانات الهرمية مثل المخططات التنظيمية، وأنظمة الملفات، وشبكة العلاقات بين المواقع، وما إلى ذلك، فإن CTEs العودية مفيدة للغاية.
تتكون CTE العودية من ثلاثة مكونات:
تحقق من هذه المقالة للحصول على معلومات إضافية عن الدوال المؤقتة، ومع ذلك، فإن فهم كيفية إنشاء دوال مؤقتة أمر بالغ الأهمية للأسباب التالية:
ببساطة لأنها فكرة مرنة، ستجد على الأرجح العديد من الأسئلة التي تحتاج إلى استخدام تعبيرات CASE WHEN. إذا كنت ترغب في تعيين قيمة أو فئة معينة استنادًا إلى متغيرات أخرى، فإنها تمكّنك من إنشاء عبارات شرطية معقدة.
بالإضافة إلى ذلك، فهي تسمح لك بتحديد محور البيانات، وهي ميزة أقل شهرة. استخدم عبارات CASE WHEN لتحوير البيانات، على سبيل المثال، إذا كان لديك عمود شهري وتريد إنشاء عمود منفصل لكل شهر.
تعمل كل من عبارتي NOT IN و ExCEPT بنفس الطريقة. لمقارنة الصفوف بين استعلامين أو جدولين يتم استخدامهما. بعد قولي هذا، يجب أن تكون على دراية ببعض الاختلافات الصغيرة بينهما.
على النقيض من NOT IN، تقوم EXCEPT بإزالة الإدخالات المكررة وإرجاع صفوف منفصلة.
بالإضافة إلى ذلك، يقارن برنامج NOT IN عمودًا واحدًا فقط من كل استعلام أو جدول، بينما يتوقع EXCEPT نفس عدد الأعمدة في كل من الاستعلامات والجداول.
يتم ضم جدول إلى نفسه باستخدام ارتباط ذاتي SQL. قد تعتقد أنه ليس له وظيفة، ولكنك ستندهش من مدى تكرار حدوث ذلك. كثيرًا ما يتم الاحتفاظ بالبيانات في جدول واحد ضخم بدلاً من عدة جداول أصغر في سيناريوهات العالم الحقيقي. في مجموعة متنوعة من الظروف، قد تكون هناك حاجة إلى الارتباطات الذاتية للتعامل مع تحديات محددة. تعلم كيفية استخدام ميزات Transact SQL المتقدمة لجلب البيانات وتحويلها في قواعد بياناتك.
ينتشر استخدام ترتيب الصفوف والقيم على نطاق واسع إلى حد ما. فيما يلي بعض الحالات التي غالبًا ما تستخدم فيها الشركات الترتيب:
إذا كنت تبحث عن تدريب فردي أو تدريب للشركات يتعلق بـ SQL، SQL المتقدمة، SQL Server، ففكر في SPOTO التي لديها أفضل المدربين ذوي الخبرة والمرافق المعملية.
SPOTO هي مزود معترف به عالميًا لمجموعة واسعة من الخدمات الاحترافية المصممة لتلبية الاحتياجات المتنوعة للمؤسسات في جميع أنحاء العالم. نحن متخصصون في التدريب التقني والتجاري، وتطوير تكنولوجيا المعلومات وحلول البرمجيات، وخدمات اللغات الأجنبية، والتعلم الرقمي، وتوفير الموارد والتوظيف، والاستشارات. يتجلى التزامنا الثابت بالتميز من خلال شهادات الأيزو 9001 و27001 وCMMIDEV/3، التي تؤكد على معاييرنا الاستثنائية. وبفضل سجلنا الحافل بالنجاحات الذي يمتد لأكثر من عقدين من الزمن، فقد قدمنا خدماتنا بفعالية لأكثر من 4000 مؤسسة في جميع أنحاء العالم.
