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

ما هو استعلام SELECT في MySQL?
استعلام تحديد يُستخدم لجلب البيانات من MySQL قاعدة البيانات. تقوم قواعد البيانات بتخزين البيانات لاسترجاعها لاحقًا. الغرض من MySQL تُستخدم عبارة SELECT لإرجاع صف واحد أو أكثر من جداول قاعدة البيانات التي تُطابق معايير مُحددة. يُمكن استخدام استعلام SELECT في لغة برمجة نصية مثل PHP أو Ruby، أو يُمكن تنفيذه من موجه الأوامر.
لأن الأمر 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. تظهر نتائج الاستعلام في الشبكة أسفل المحرر.
كما يظهر في لقطة الشاشة، لم نقم بكتابة عبارة SELECT بأنفسنا. MySQL قام برنامج Workbench بإنشائه لنا.
لماذا نستخدم أمر SELECT في SQL عندما يكون لدينا MySQL منضدة؟
قد تتساءل عن سبب وجوب تعلم أمر SQL SELECT في حين أن أداة مثل MySQL يُعيد برنامج Workbench نفس النتائج دون الحاجة إلى معرفة لغة SQL. هذا الاختصار ممكن، ولكن تعلم أمر SELECT يعطيك المزيد مرونة و مراقبة فوق الخاص بك عبارات SQL SELECT.
MySQL تندرج ورشة العمل ضمن فئة "الاستعلام عن طريق المثالأدوات (QBE). وهي مصممة لإنشاء عبارات SQL بشكل أسرع وزيادة إنتاجية المستخدم.
يتيح لك تعلم أمر SQL SELECT إنشاء استعلامات معقدة التي لا يمكن إنشاؤها بسهولة بواسطة أدوات الاستعلام عن طريق المثال مثل MySQL منضدة.
لتحسين الإنتاجية، يمكنك قم بإنشاء الكود في MySQL طاولة العمل، ثم تصميم إلى تناسب احتياجاتكلا يمكن تحقيق ذلك إلا بعد فهم كيفية عمل عبارات SQL.



