في هذا الدرس 6تصفّح المواضيع
يمثل الأمر SELECT عملية «القراءة والاسترجاع» (Read) ضمن عمليات CRUD الأساسية. ويقوم بجلب السجلات من الجدول وعرض الأعمدة المطلوبة بالترتيب الذي تحدده قبل الكلمة المفتاحية FROM:
- تحديد الأعمدة (
SELECT col1, col2): يحدد الحقول أو التعبيرات الحسابية التي ستظهر في جدول النتائج. - تحديد المصدر (
FROM table_name): يحدد اسم الجدول الذي يقرأ منه محرك InnoDB السجلات. - التقييم المباشر بدون جدول: يتيح MySQL أيضاً تنفيذ
SELECTلتقييم الدوال والثوابت مباشرةً (مثلSELECT VERSION(), CURRENT_DATE;).
SELECT sku_code, title, unit_price
FROM products;
SELECT VERSION(), CURRENT_DATE;
يُرجع الرمز النجمي SELECT * FROM products; جميع أعمدة الجدول دفعةً واحدة. ورغم فائدته في الاستكشاف السريع عبر الطرفية، يجب في تطبيقات الإنتاج تحديد أسماء الأعمدة صراحةً للأسباب الهندسية التالية:
- توفير الشبكة والذاكرة: تجنب نقل أعمدة النصوص الضخمة
TEXTأوJSONغير المطلوبة في الواجهة. - دعم الفهارس المغطية (Covering Indexes): يمكّن محرك InnoDB من قراءة الأعمدة المطلوبة مباشرةً من الفهرس دون قراءة صفحات الجدول الكاملة.
- استقرار واجهات البرمجة: يمنع ظهور أعمدة جديدة أو حساسة تلقائياً في مخرجات التطبيق عند تعديل الجدول مستقبلاً.
-- Ad-hoc inspection only: returns every column
SELECT * FROM products;
-- Production best practice: project only needed columns
SELECT product_id, title, unit_price FROM products;
يمكنك كتابة التعبيرات الحسابية (+، -، *، /) والدوال القياسية (مثل ROUND() للتقريب العشري أو CONCAT() لدمج النصوص) مباشرةً داخل قائمة SELECT؛ حيث يحسبها MySQL لحظياً لكل صف في النتيجة دون تعديل البيانات المخزنة في الجدول:
SELECT
sku_code,
unit_price,
stock_qty,
unit_price * stock_qty,
ROUND(unit_price * 1.15, 2)
FROM products;
افتراضياً، يظهر التعبير الحسابي نفسه كعنوان للعمود في النتيجة. وتُستخدم الكلمة المفتاحية AS لمنح أي عمود أو معادلة اسماً مستعاراً واضحاً (Column Alias) يسهل قراءته في الواجهة أو في كود التطبيق:
SELECT
sku_code AS product_sku,
unit_price * stock_qty AS inventory_value,
ROUND(unit_price * 1.15, 2) AS price_with_vat
FROM products;
توضع الكلمة المفتاحية DISTINCT بعد SELECT مباشرةً لتوجيه MySQL إلى إزالة الصفوف المتطابقة من النتيجة والاكتفاء بعرض القيم الفريدة غير المكررة عبر جميع الأعمدة المحددة في الاستعلام:
-- Unique category codes only
SELECT DISTINCT category_code
FROM products;
-- Unique (category_code, brand_name) pairs
SELECT DISTINCT category_code, brand_name
FROM products;
يقارن الجدول الشامل التالي بين أنماط استعلام وعرض الأعمدة بأمر SELECT في MySQL 8:
| نمط الاستعلام | مثال الصياغة | سلوك النتيجة | التوصية الهندسية |
|---|---|---|---|
| قائمة الأعمدة الصريحة | SELECT sku_code, title FROM products | يعرض الأعمدة المحددة بترتيبها | الخيار القياسي الموصى به في الإنتاج |
| النجمة الشاملة | SELECT * FROM products | يجلب كافة أعمدة الجدول الفيزيائية | للفحص السريع في الطرفية فقط |
| تعبير محسوب مع اسم مستعار | SELECT price * 1.15 AS price_vat | يحسب عموداً مشتقاً بعنوان واضح | اكتب كلمة AS صراحةً دائماً |
| استعلام بدون تكرار | SELECT DISTINCT category_code | يدمج الصفوف المتكررة في قيم فريدة | مثالي لاستخراج قوائم الفئات المتاحة |
ملخص الدرس: أتقنت في هذا الدرس استرجاع الأعمدة المحددة بأمر SELECT ... FROM، ولماذا يتفوق تحديد الأعمدة الصريحة على SELECT *، وكيفية كتابة التعبيرات الحسابية وتسميتها عبر AS، وإزالة التكرار من النتائج باستخدام SELECT DISTINCT.
الخطوة التالية والدرس القادم: انتقل الآن إلى الدرس الختامي للوحدة السادسة «تحديث وحذف السجلات بأمان عبر UPDATE و DELETE في MySQL».
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
حدد الأعمدة المطلوبة صراحةً، واستخدم AS لتسمية الحقول المحسوبة، وDISTINCT لإزالة التكرار. الخطوة التالية: انتقل إلى درس «تحديث وحذف السجلات بأمان عبر UPDATE و DELETE في MySQL».
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات5
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 SELECT Query استعلام البيانات
- تعلّم استعلام البيانات بأمر SELECT والأسماء المستعارة و DISTINCT بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
- للمراجعة
- 02 Retrieving Columns with SELECT جلب الأعمدة بأمر SELECT
- المفهوم الهندسي والصياغة العملية الخاصة بقسم جلب الأعمدة بأمر SELECT في MySQL 8.
- للمراجعة
- 03 Explicit Columns Versus SELECT Star الأعمدة الصريحة مقابل النجمة
- المفهوم الهندسي والصياغة العملية الخاصة بقسم الأعمدة الصريحة مقابل النجمة في MySQL 8.
- للمراجعة
- 04 Calculated Expressions in SELECT التعبيرات الحسابية داخل SELECT
- المفهوم الهندسي والصياغة العملية الخاصة بقسم التعبيرات الحسابية داخل SELECT في MySQL 8.
- للمراجعة
- 05 Renaming Output with AS Aliases الأسماء المستعارة للأعمدة بـ AS
- المفهوم الهندسي والصياغة العملية الخاصة بقسم الأسماء المستعارة للأعمدة بـ AS في MySQL 8.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 DQL DQL
- Data Query Language
- فرع استعلام البيانات في لغة SQL المرتكز على الأمر SELECT لاسترجاع وعرض السجلات.
- للمراجعة
- 02 AS AS
- Column Alias Keyword
- الكلمة المفتاحية المخصصة لإعطاء اسم مستعار واضح للعمود أو المعادلة الحسابية في النتيجة.
- للمراجعة
- 03 CRUD CRUD
- Create, Read, Update, Delete
- العمليات الأربع الأساسية لإدارة البيانات، ويمثل الأمر SELECT فيها عملية القراءة (Read).
- للمراجعة
- 04 IO IO
- Input / Output Pages
- عمليات قراءة صفحات الذاكرة والقرص التي يتم تقليلها عند تحديد الأعمدة المطلوبة بدلاً من النجمة.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
نفّذ أمثلة SQL المشروحة في قسم جلب الأعمدة بأمر SELECT داخل قاعدة بياناتك المحلية وتحقق من النتيجة.
-
بدّل بين الحالات التفاعلية في قسم الأعمدة الصريحة مقابل النجمة وقارن كيف يعالج محرك MySQL 8 كل أمر.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي4 أسئلة تنتظرك +
أي جملة في استعلام SELECT تحدد الجدول المصدر الذي تُقرأ منه السجلات؟
تحدد الجملة FROM اسم الجدول المصدر الذي تُجلب منه البيانات.
لماذا يُفضّل تحديد أسماء الأعمدة صراحةً بدلاً من SELECT * في استعلامات التطبيقات الإنتاجية؟
لتجنب نقل الأعمدة الضخمة غير المطلوبة، والاستفادة من الفهارس المغطية، والحفاظ على ثبات هيكل المخرجات.
ما الكلمة المفتاحية المستخدمة لإعطاء اسم مستعار واضح لعمود محسوب داخل استعلام SELECT؟
تُستخدم الكلمة المفتاحية AS لتسمية العمود الناتج (مثل AS price_with_vat).
عند تنفيذ SELECT DISTINCT col1, col2، يقوم MySQL بإزالة التكرار بناءً على تركيبة القيمتين (col1, col2) معاً.
صواب؛ تطبق DISTINCT الفردية على مجموعة الأعمدة المحددة في الاستعلام كوحدة واحدة.