MySQL حدد البيان مع الأمثلة

⚡ ملخص ذكي

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

  • 🔎 الغرض الأساسي: يسترجع الأمر SELECT الصفوف المخزنة التي تطابق معايير محددة، سواء من موجه الأوامر أو من لغة PHP. Pythonولغات أخرى.
  • 🧩 ترتيب بناء الجملة: يجب أن تظهر عبارات SELECT و FROM و WHERE و GROUP BY و HAVING و ORDER BY بهذا الترتيب الثابت.
  • ⭐ اختصار النجمة: SELECT * FROM `members`; تُرجع كل عمود، بينما تسمية الأعمدة بشكل صريح تحافظ على مجموعات النتائج أصغر وأسرع.
  • 🔗 التعبيرات: تقوم الدالة Concat() بدمج قيم الأعمدة، وتقوم الدالة LEFT() بحذف الأحرف، بحيث تظهر الحقول المحسوبة مباشرة في مجموعة النتائج.
  • 🏷️ أسماء الأعمدة البديلة: تقوم الكلمة المفتاحية الاختيارية AS بإعادة تسمية أي تعبير، واستبدال العناوين غير القابلة للقراءة مثل Concat(`title`) بتسميات واضحة.
  • 🖱️ مقارنة بين طاولات العمل: MySQL يقوم برنامج Workbench بإنشاء الاستعلامات بشكل مرئي، ومع ذلك تظل عبارات SELECT المكتوبة يدويًا ضرورية للاسترجاع المعقد والدقيق.

ما هو استعلام SELECT في MySQL?

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

حدد الاستعلام في MySQL

لأن الأمر SELECT هو الأمر الذي ستنفذه في أغلب الأحيان، فمن المفيد تعلم صيغته قبل التعامل مع البيانات النموذجية.

صيغة جملة SQL SELECT

يُعدّ أمر SELECT أكثر أوامر SQL استخدامًا، وله الصيغة العامة التالية:

SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];

هنا

  • اختر هي الكلمة الأساسية SQL التي تتيح لقاعدة البيانات معرفة أنك تريد استرداد البيانات.
  • [متميز | الجميع] هي كلمات مفتاحية اختيارية تُستخدم لضبط النتائج المُعادة من عبارة SQL SELECT. إذا لم يتم تحديد أي شيء، فسيتم افتراض ALL كقيمة افتراضية.
  • {*| [fieldExpression [AS newName]} يجب تحديد جزء واحد على الأقل. "*" يحدد جميع الحقول من اسم الجدول المحدد؛ يقوم fieldExpression بإجراء عمليات حسابية على الحقول المحددة، مثل جمع الأرقام أو دمج حقلين نصيين في حقل واحد.
  • من عند اسم الجدول إلزامي ويجب أن يحتوي على جدول واحد على الأقل. يجب فصل الجداول المتعددة باستخدام الفواصل أو ربطها باستخدام الكلمة المفتاحية JOIN.
  • WHERE الشرط اختياري. وهو يحدد المعايير في مجموعة النتائج التي يتم إرجاعها من الاستعلام.
  • GROUP BY يتم استخدامه لتجميع السجلات التي لها نفس قيم الحقول.
  • وجود يُستخدم الشرط لتحديد المعايير عند العمل مع الكلمة المفتاحية GROUP BY.
  • ترتيب حسب يتم استخدامه لتحديد ترتيب الفرز لمجموعة النتائج.

*

يُستخدم رمز النجمة لتحديد جميع الأعمدة في الجدول. تبدو عبارة SELECT البسيطة كما هو موضح أدناه.

SELECT * FROM `members`;

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

حدد DISTINCT و LIMIT في MySQL

هناك كلمتان اختياريتان في بناء الجملة تستحقان نظرة فاحصة، لأن المبتدئين يصادفونهما بمجرد أن يكبر الجدول.

DISTINCT يزيل هذا الأمر الصفوف المكررة من مجموعة النتائج. يحتوي جدول الأفلام على عدة أفلام صدرت عام ٢٠٠٧، لذا فإن الاستعلام العادي يُكرر ذلك العام. تُعيد دالة DISTINCT كل قيمة مرة واحدة.

SELECT DISTINCT `year_released` FROM `movies`;

مما سيحدث يحدد هذا الأمر عدد الصفوف التي يتم إرجاعها، مما يحمي العميل من استعلام قد يؤدي إلى جلب ملايين السجلات.

SELECT * FROM `movies` LIMIT 5;
البحث عن كلمة ماذا يفعل متى يتم استخدامه
الكل (افتراضي) يُعيد كل صف مطابق، بما في ذلك الصفوف المكررة عدّ أو سرد السجلات الخام
DISTINCT يدمج الصفوف المكررة في صف واحد بناء قائمة بالقيم الفريدة
مما سيحدث يُرجع فقط أول N صف معاينة البيانات أو تصفح النتائج

بعد تحديد الصيغة، تعمل قاعدة البيانات النموذجية على إضفاء الحيوية على هذه البنود.

أمثلة عملية على عبارة SELECT

انقر للتنزيل قاعدة بيانات myflix المستخدمة في الأمثلة العملية.

يمكنك تعلم كيفية استيراد ملف .sql إلى MySQL طاولة العمل.

تم تنفيذ الأمثلة على الجدولين التاليين.

جدول 1: الأعضاء جدول

رقم العضوية الأسماء الكاملة جنس تاريخ الميلاد العنوان الفعلي العنوان البريدي رقم_الاتصال البريد الإلكتروني
1 جانيت جونز أنثى 21-07-1980 الشارع الأول قطعة رقم 4 حقيبة خاصة 0759-253-542 جانيتجونز@yagoo.cm
2 جانيت سميث جونز أنثى 23-06-1980 ميلروز 123 اغية اغية jj@fstreet.com
3 روبرت فيل ذكر 12-07-1989 الشارع الثالث 3 اغية 12345 rm@tstreet.com
4 غلوريا ويليامز أنثى 14-02-1984 الشارع الثاني 2 اغية اغية اغية

جدول 2: أفلام جدول

movie_id الاسم مدير year_released معرف الفئة
1 قراصنة الكاريبي 4 روب مارشال 2011 1
2 نسيان سارة مارشال نيكولاس ستولر 2008 2
3 X رجال اغية 2008 اغية
4 Code الاسم: بلاك إدغار جيمز 2010 اغية
5 بنات أبي الصغيرات اغية 2007 8
6 الملائكة والشياطين اغية 2007 6
7 دافينشي Code اغية 2007 6
9 Honey moonالمتطلبات البيئية جون شولتز 2005 8
16 67% مذنب اغية 2012 اغية

الحصول على قائمة الأعضاء

لنفترض أننا نريد قائمة بجميع أعضاء المكتبة المسجلين من قاعدة بياناتنا. سنستخدم البرنامج النصي الموضح أدناه للقيام بذلك.

SELECT * FROM `members`;

تنفيذ البرنامج النصي في MySQL ينتج برنامج Workbench النتائج التالية.

رقم العضوية الأسماء الكاملة جنس تاريخ الميلاد العنوان الفعلي العنوان البريدي رقم_الاتصال البريد الإلكتروني
1 جانيت جونز أنثى 21-07-1980 الشارع الأول قطعة رقم 4 حقيبة خاصة 0759-253-542 جانيتجونز@yagoo.cm
2 جانيت سميث جونز أنثى 23-06-1980 ميلروز 123 اغية اغية jj@fstreet.com
3 روبرت فيل ذكر 12-07-1989 الشارع الثالث 3 اغية 12345 rm@tstreet.com
4 غلوريا ويليامز أنثى 14-02-1984 الشارع الثاني 2 اغية اغية اغية

أعاد الاستعلام جميع الصفوف والأعمدة من جدول الأعضاء.

تحديد أعمدة معينة

لنفترض أننا مهتمون فقط بحقول الاسم الكامل، والجنس، والعنوان الفعلي، والبريد الإلكتروني. يحقق البرنامج النصي التالي ذلك.

SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;

تنفيذ البرنامج النصي في MySQL ينتج برنامج Workbench النتائج التالية.

الأسماء الكاملة جنس العنوان الفعلي البريد الإلكتروني
جانيت جونز أنثى الشارع الأول قطعة رقم 4 جانيتجونز@yagoo.cm
جانيت سميث جونز أنثى ميلروز 123 jj@fstreet.com
روبرت فيل ذكر الشارع الثالث 3 rm@tstreet.com
غلوريا ويليامز أنثى الشارع الثاني 2 اغية

عرض قائمة الأفلام باستخدام التعابير

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

SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;

هنا

  • دالة Concat() MySQL تقوم الدالة بربط قيم الأعمدة معًا.
  • السطر "Concat(`title`, ' (', `director`, ')')" يحصل على العنوان، ويضيف قوسًا مفتوحًا متبوعًا باسم المخرج، ثم يضيف القوس المغلق.
  • يتم فصل أجزاء السلسلة باستخدام الفواصل داخل دالة Concat().

تنفيذ البرنامج النصي في MySQL ينتج برنامج Workbench مجموعة النتائج التالية.

كونكات (`العنوان`، '('، `المخرج`، ')') year_released
قراصنة الكاريبي 4 (روب مارشال) 2011
نسيان سارة مارشال (نيكولاس ستولر) 2008
اغية 2008
Code الاسم الأسود (إدغار جيمز) 2010
اغية 2007
اغية 2007
اغية 2007
Honey moon(جون شولتز) 2005
اغية 2012

ملاحظة: تُرجع الدالة Concat() قيمة NULL عندما تكون أي وسيطة NULL، وهذا هو سبب ظهور NULL أعلاه في الأفلام التي لا يوجد لها مخرج.

أسماء الحقول البديلة

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

SELECT `column_name|value|expression` [AS] `alias_name`;

هنا

  • "SELECT `column_name|value|expression`" هي عبارة SELECT العادية، والتي يمكن أن تكون اسم عمود أو قيمة أو تعبير.
  • "[مثل]" الكلمة المفتاحية الاختيارية التي تسبق اسم الاسم المستعار.
  • ""الاسم المستعار"" هو الاسم المستعار الذي يتم إرجاعه في مجموعة النتائج كاسم الحقل.

نفس الاستعلام مع اسم عمود أكثر دلالة:

SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;

نحصل على النتيجة التالية.

كونكات year_released
قراصنة الكاريبي 4 (روب مارشال) 2011
نسيان سارة مارشال (نيكولاس ستولر) 2008
اغية 2008
Code الاسم الأسود (إدغار جيمز) 2010
اغية 2007
اغية 2007
اغية 2007
Honey moon(جون شولتز) 2005
اغية 2012

الحصول على قائمة الأعضاء التي توضح سنة الميلاد

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

SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;

هنا

  • "اليسار("تاريخ_الميلاد`,4)" القادم وظيفة السلسلة اليسرى يقبل تاريخ الميلاد كمعامل ويعيد فقط 4 أحرف من اليسار.
  • "مثل "سنة_الميلاد"" هي الاسم المستعار للعمود تم تسجيلها في نتائجنا. الكلمة الأساسية AS اختياريةيمكنك حذفه وسيظل الاستعلام يعمل.

تنفيذ الاستعلام في MySQL يُظهر لنا برنامج Workbench النتائج الموضحة أدناه عند استخدامه مع قاعدة بيانات myflixdb.

رقم العضوية الأسماء الكاملة سنة الميلاد
1 جانيت جونز 1980
2 جانيت سميث جونز 1980
3 روبرت فيل 1989
4 غلوريا ويليامز 1984

لا تُعدّ الاستعلامات المكتوبة يدويًا سوى طريقة واحدة للوصول إلى مجموعة النتائج. كما يمكن لـ Workbench إنشاء الاستعلام نيابةً عنك.

استخدام لغة SQL MySQL طاولة العمل

نحن نذهب الآن للاستخدام MySQL برنامج Workbench لإنشاء البرنامج النصي الذي يعرض جميع أسماء الحقول من جدول الفئات لدينا.

1. انقر بزر الماوس الأيمن على جدول الفئات. انقر على "تحديد الصفوف - الحد الأقصى 1000".

2. MySQL يقوم برنامج Workbench تلقائيًا بإنشاء استعلام SQL ولصقه في المحرر.

3. تظهر نتائج الاستعلام في الشبكة أسفل المحرر.

SQL باستخدام MySQL طاولة العمل

كما يظهر في لقطة الشاشة، لم نقم بكتابة عبارة SELECT بأنفسنا. MySQL قام برنامج Workbench بإنشائه لنا.

لماذا نستخدم أمر SELECT في SQL عندما يكون لدينا MySQL منضدة؟

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

MySQL تندرج ورشة العمل ضمن فئة "الاستعلام عن طريق المثالأدوات (QBE). وهي مصممة لإنشاء عبارات SQL بشكل أسرع وزيادة إنتاجية المستخدم.

يتيح لك تعلم أمر SQL SELECT إنشاء استعلامات معقدة التي لا يمكن إنشاؤها بسهولة بواسطة أدوات الاستعلام عن طريق المثال مثل MySQL منضدة.

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

فهم MySQL اختيار البيان

الأسئلة الشائعة

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

الكلمات المفتاحية مثل SELECT و FROM غير حساسة لحالة الأحرف. تتبع مقارنات السلاسل ترتيب العمود، لذا فإن الترتيب غير الحساس لحالة الأحرف مثل utf8mb4_0900_ai_ci يعامل "Janet" و "janet" على أنهما متساويان.

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

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

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

تلخيص هذه التدوينة بـ: