القائمة الرئيسية

الصفحات

الدرس السادس SQL

مفهوم الترقيم التلقائي للأسطر

ببساطة فكرته أن يتم وضع رقم موحد لكل سطر يتم إضافته في الجدول و بشكل تلقائي مما يمكنك لاحقاً من العودة إلى هذا السطر بكل سهولة من خلال رقمه.
بشكل عام, كلما أنشأنا جدول جديد نضيف فيه حقل يتم ترقيمه بشكل تلقائي و في العادة نقوم بتسميته id و نقول له باللغة العربية رقم التعرفة.

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


الحصول على ترقيم تلقائي

لإنشاء عامود في الجدول يتم وضع ترقيم لأسطره بشكل تلقائي في قواعد بيانات MySQL يجب أن يتم تعريف نوع هذا العامود كالتالي.

      column_name INT NOT NULL PRIMARY KEY AUTO_INCREMENT
    

  • مكان الكلمة column_name نضع إسم العامود الذي سيتم إنشاؤه في الجدول.

  • INT تعني أن العامود سيوضع فيه أعداد صحيحة.

  • NOT NULL تعني أن العامود لا يمكن أن يكون فارغ و هذا الأمر منطقي لأنه سيتم وضع رقم تلقائي لكل سطر يتم إضافته في الجدول.

  • PRIMARY KEY تعني أن هذا الحقل لا يمكنه أن يحتوي على رقم متكرر و لهذا يعتبر المفتاح الرئيسي للوصول لأي سطر (أو سجل) موجود في الجدول.

  • AUTO_INCREMENT تعني أن الأرقام التي ستزيد قيمتها بشكل تلقائي لكل سطر.



إختلاف الأوامر بين قواعد البيانات

نود الإشارة إلى أن الترقيم التلقائي موجود في كل قواعد البيانات و لكن قد تجد أنهم يستخدموا كلمة أخرى بدلاً من الكلمة AUTO_INCREMENT و إليك بعض الأمثلة:

  • في قواعد بيانات Access و SQLite نكتب AUTOINCREMENT بدلاً منها.

  • في قواعد بيانات SQL Server نكتب IDENTITY(1,1) بدلاً منها.

في النهاية, مهما كان نوع قاعدة البيانات التي ستتعامل معها, فكرة الترقيم التلقائي هي نفسها تماماً.

تجهيز قاعدة البيانات التي سنطبق عليها

بما أننا سنتعلم كيف ننشئ عامود في الجدول يتم إعطاء كل سطر فيه رقم بشكل تلقائي, سنقوم بتجهيز قاعدة البيانات التي سنتعامل معها.
قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash.

الإستعلام

        -- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
        DROP DATABASE IF EXISTS harmash;

        -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
        CREATE DATABASE harmash;
      

بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash و إنشاء الجدول users بداخلها كالتالي.

الآن, قم بالنقر على إسم قاعدة البيانات harmash من القائمة اليسرى حتى تبدأ بالتعامل معها.

إنشاء جدول يعطي ترقيم تلقائي لكل سطر يضاف فيه

قم بتنفيذ الإستعلام التالي لإنشاء جدول جديد إسمهusers و يتألف من 3 أعمدة.
لاحظ أننا قمنا بوضع خاصية AUTO_INCREMENT للعامود الأول لأننا نريد جعل قيمته تزيد بشكل تلقائي في كل سطر نضيفه في الجدول.

الإستعلام

        CREATE TABLE users (
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        username VARCHAR(50),
        email VARCHAR(100)
        );
      

بعد تنفيذ الإستعلام السابق في phpMyAdmin سيظهر الجدول في قاعدة البيانات كالتالي.

إضافة سطر في جدول يعطي ترقيم تلقائي

قم بتنفيذ الإستعلام التالي لإضافة خمسة سطور جديدة في الجدول users.
لاحظ أننا لم نذكر إسم العامود id و لم نمرر له قيمة و ذلك لأن قاعدة البيانات ستضع قيمة في الحقل id لكل سطر يتم إنشاؤه.

الإستعلام

        INSERT INTO users (username, email) VALUES ('mhamad', 'mhamad@example.com');
        INSERT INTO users (username, email) VALUES ('hassan', 'hassan@example.com');
        INSERT INTO users (username, email) VALUES ('sara', 'sara@example.com');
        INSERT INTO users (username, email) VALUES ('rami', 'rami@example.com');
        INSERT INTO users (username, email) VALUES ('maria', 'maria@example.com');
      

الآن, أنقر على إسم الجدول users لرؤية جميع الأسطر التي أضفتها فيه كالتالي.


لاحظ كيف تم إعطاء رقم موحد لكل سطر في الحقل id بشكل تلقائي.
في الدرس التالي سترى كم هو مهم وضع رقم موحد لكل سطر و كيف نتعامل معها.

الأمر SELECT

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


الشكل العام لإستخدامه

      SELECT column1, column2, ...
      FROM table_name;
    

مكان الكلمة table_name نضع إسم الجدول الذي سنجلب البيانات منه.
ملاحظة: يمكنك جلب البيانات من أكثر من جدول في نفس الوقت و لكن هذا الأمر سنتطرق له في دروس متقدمة.

تجهيز قاعدة البيانات التي سنطبق عليها

قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash و تنشئ فيها جدول إسمه employees يحتوي على بيانات 10 موظفين.

الإستعلام

        -- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
        DROP DATABASE IF EXISTS harmash;

        -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
        CREATE DATABASE harmash;

        -- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات
        USE harmash;

        -- يتألف من ستة أعمدة employees هنا قمنا بإنشاء جدول جديد إسمه
        -- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات
        CREATE TABLE employees (
        id         INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        first_name VARCHAR(50),
        last_name  VARCHAR(20),
        is_married BOOLEAN,
        salary     DECIMAL(7,2),
        birthday   Date
        );

        -- هنا قمنا بإضافة 10 أسطر في الجدول, أي أضفنا معلومات 10 موظفين
        -- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات
        -- في البداية هو حتى يكون عدد القيم الموضوعة يساوي عدد أعمدة الجدول null سبب وضع الكلمة
        -- ستقوم قاعدة البيانات بوضع رقم تعرفة مختلف لكل سطر null مكان الكلمة
        INSERT INTO employees VALUES (null, "Ahmad", "Alhazem", false, 800, "1990-10-23");
        INSERT INTO employees VALUES (null, "Rami", "Algharib", false, 750, "1992-05-08");
        INSERT INTO employees VALUES (null, "Said", "Alnaja", true, 900, "1988-07-12");
        INSERT INTO employees VALUES (null, "Noura", "Jamali", false, 845, "1994-12-04");
        INSERT INTO employees VALUES (null, "Amani", "Sarrouf", true, 1000, "1991-10-27");
        INSERT INTO employees VALUES (null, "Mhamad", "Harmush", false, 700, "1993-11-12");
        INSERT INTO employees VALUES (null, "Ahmad", "Asaadi", true, 850, "1995-03-10");
        INSERT INTO employees VALUES (null, "Mostafa", "Shawki", true, 920, "1990-02-14");
        INSERT INTO employees VALUES (null, "Jana", "Alkassem", false, 780, "1991-08-12");
        INSERT INTO employees VALUES (null, "Houssam", "Zahrani", true, 880, "1985-09-20");
      

بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash و إنشاء الجدول employees بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.

جلب جميع البيانات الموجودة في الجدول

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

مثال

قم بتنفيذ الإستعلام التالي لجلب جميع البيانات المخزنة في الجدول employees.
إذاً هذا الإستعلام يعرض جميع المعلومات المتوفرة حول الموظفين.

الإستعلام

        SELECT * FROM employees;
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.

id first_name last_name is_married salary birthday
1 Ahmad Alhazem 0 800.00 1990-10-23
2 Rami Algharib 0 750.00 1992-05-08
3 Said Alnaja 1 900.00 1988-07-12
4 Noura Jamali 0 845.00 1994-12-04
5 Amani Sarrouf 1 1000.00 1991-10-27
6 Mhamad Harmush 0 700.00 1993-11-12
7 Ahmad Asaadi 1 850.00 1995-03-10
8 Mostafa Shawki 1 920.00 1990-02-14
9 Jana Alkassem 0 780.00 1991-08-12
10 Houssam Zahrani 1 880.00 1985-09-20

تحديد أسماء الحقول التي سيتم جلبها من الجدول

قم بتنفيذ الإستعلام التالي لجلب جميع البيانات الموجودة في الحقول first_name و last_name و salary.
إذاً هذا الإستعلام يعرض أسماء جميع الموظفين و رواتبهم.

الإستعلام

        SELECT first_name, last_name, salary
        FROM employees;
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.

first_name last_name salary
Ahmad Alhazem 800.00
Rami Algharib 750.00
Said Alnaja 900.00
Noura Jamali 845.00
Amani Sarrouf 1000.00
Mhamad Harmush 700.00
Ahmad Asaadi 850.00
Mostafa Shawki 920.00
Jana Alkassem 780.00
Houssam Zahrani 880.00

تغيير أسماء الأعمدة عند جلبها من الجدول

لتبديل إسم أي جدول سيتم إرجاعه في النتيجة نضع الكلمة AS بعد إسم أي جدول نريد تبديله و من ثم نضع الكلمة التي سيتم تبديل إسم الجدول بها.
ملاحظة: هناك عدة طرق للتعامل مع الكلمة AS و لكننا سنتطرق لبعضها فقط لأنها ليست موضوع الدرس.


مثال

الإستعلام التالي يجلب نفس المعلومات التي جلبها الإستعلام السابق مع فرق واحد و هو أننا قمنا بتبديل أسماء الأعمدة التي تم إرجاعها.

  • إسم العامود first_name قمنا بتبديله إلى First Name

  • إسم العامود last_name قمنا بتبديله إلى Last Name

  • إسم العامود salary قمنا بتبديله إلى Salary

الإستعلام

        SELECT first_name AS 'First Name', last_name AS 'Last Name', salary AS 'Salary'
        FROM employees;
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.

First Name Last Name Salary
Ahmad Alhazem 800.00
Rami Algharib 750.00
Said Alnaja 900.00
Noura Jamali 845.00
Amani Sarrouf 1000.00
Mhamad Harmush 700.00
Ahmad Asaadi 850.00
Mostafa Shawki 920.00
Jana Alkassem 780.00
Houssam Zahrani 880.00