انتقل إلى محتوى الدرس
الدرس 23
دورة MySQL

استعلام البيانات بأمر SELECT والأسماء المستعارة و DISTINCTMySQL SELECT Statement Column Aliases and DISTINCT

تعلّم استعلام البيانات بأمر SELECT والأسماء المستعارة و DISTINCT بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
8
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يمثل الأمر SELECT عملية «القراءة والاسترجاع» (Read) ضمن عمليات CRUD الأساسية. ويقوم بجلب السجلات من الجدول وعرض الأعمدة المطلوبة بالترتيب الذي تحدده قبل الكلمة المفتاحية FROM:

  • تحديد الأعمدة (SELECT col1, col2): يحدد الحقول أو التعبيرات الحسابية التي ستظهر في جدول النتائج.
  • تحديد المصدر (FROM table_name): يحدد اسم الجدول الذي يقرأ منه محرك InnoDB السجلات.
  • التقييم المباشر بدون جدول: يتيح MySQL أيضاً تنفيذ SELECT لتقييم الدوال والثوابت مباشرةً (مثل SELECT VERSION(), CURRENT_DATE;).
مخطط يوضح استرجاع الأعمدة بأمر SELECT والتعبيرات الحسابية والأسماء المستعارة AS وإزالة التكرار عبر DISTINCT في MySQL 8
SQL
SELECT sku_code, title, unit_price
FROM products;

SELECT VERSION(), CURRENT_DATE;

يُرجع الرمز النجمي SELECT * FROM products; جميع أعمدة الجدول دفعةً واحدة. ورغم فائدته في الاستكشاف السريع عبر الطرفية، يجب في تطبيقات الإنتاج تحديد أسماء الأعمدة صراحةً للأسباب الهندسية التالية:

  • توفير الشبكة والذاكرة: تجنب نقل أعمدة النصوص الضخمة TEXT أو JSON غير المطلوبة في الواجهة.
  • دعم الفهارس المغطية (Covering Indexes): يمكّن محرك InnoDB من قراءة الأعمدة المطلوبة مباشرةً من الفهرس دون قراءة صفحات الجدول الكاملة.
  • استقرار واجهات البرمجة: يمنع ظهور أعمدة جديدة أو حساسة تلقائياً في مخرجات التطبيق عند تعديل الجدول مستقبلاً.
SQL
-- 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 لحظياً لكل صف في النتيجة دون تعديل البيانات المخزنة في الجدول:

SQL
SELECT
    sku_code,
    unit_price,
    stock_qty,
    unit_price * stock_qty,
    ROUND(unit_price * 1.15, 2)
FROM products;

افتراضياً، يظهر التعبير الحسابي نفسه كعنوان للعمود في النتيجة. وتُستخدم الكلمة المفتاحية AS لمنح أي عمود أو معادلة اسماً مستعاراً واضحاً (Column Alias) يسهل قراءته في الواجهة أو في كود التطبيق:

SQL
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 إلى إزالة الصفوف المتطابقة من النتيجة والاكتفاء بعرض القيم الفريدة غير المكررة عبر جميع الأعمدة المحددة في الاستعلام:

SQL
-- 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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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
عمليات قراءة صفحات الذاكرة والقرص التي يتم تقليلها عند تحديد الأعمدة المطلوبة بدلاً من النجمة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. نفّذ أمثلة SQL المشروحة في قسم جلب الأعمدة بأمر SELECT داخل قاعدة بياناتك المحلية وتحقق من النتيجة.

  2. بدّل بين الحالات التفاعلية في قسم الأعمدة الصريحة مقابل النجمة وقارن كيف يعالج محرك MySQL 8 كل أمر.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

4أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي4 أسئلة تنتظرك
01

أي جملة في استعلام SELECT تحدد الجدول المصدر الذي تُقرأ منه السجلات؟

تحدد الجملة FROM اسم الجدول المصدر الذي تُجلب منه البيانات.

02

لماذا يُفضّل تحديد أسماء الأعمدة صراحةً بدلاً من SELECT * في استعلامات التطبيقات الإنتاجية؟

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

03

ما الكلمة المفتاحية المستخدمة لإعطاء اسم مستعار واضح لعمود محسوب داخل استعلام SELECT؟

تُستخدم الكلمة المفتاحية AS لتسمية العمود الناتج (مثل AS price_with_vat).

04

عند تنفيذ SELECT DISTINCT col1, col2، يقوم MySQL بإزالة التكرار بناءً على تركيبة القيمتين (col1, col2) معاً.

صواب؛ تطبق DISTINCT الفردية على مجموعة الأعمدة المحددة في الاستعلام كوحدة واحدة.