إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    SQL نسخ البيانات في جدول آخر

    طريقة نسخ البيانات من جدول لآخر

    نسخ البيانات من جدول لآخر أمر سهل للغاية لأنه مجرد دمج للأمر SELECT الذي نستخدمه للحصول على البيانات من الجداول مع الأمر INSERT INTO الذي نستخدمه لإضافة البيانات في أي جدول.

    لنسخ البيانات من جدول لآخر يجب أن يكون نوع الأعمدة التي سيتم النسخ منها متطابق مع نوع الأعمدة التي سيتم النسخ إليها.

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

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


    الشكل العام لتجميع الحقول

    إذا كان الجدولين متطابقين في الشكل, شكل الإستعلام سيكون كالتالي.

    INSERT INTO table2
    SELECT * FROM table1
    WHERE condition;
    	

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

    INSERT INTO table2 (column1, column2, column3, ...)
    SELECT column1, column2, column3, ...
    FROM table1
    WHERE condition;
    	

    • مكان الكلمة table1 نضع إسم الجدول الذي سننسخ البيانات منها.
    • مكان الكلمة table2 نضع إسم الجدول الذي سننسخ البيانات فيه.
    • بعد الكلمة WHERE يمكننا وضع شروط لتحديد القيم التي سيتم نسخها من الجدول table1.

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

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

    • جدول إسمه table1 يحتوي على بيانات 5 أسطر.
    • جدول إسمه table2 شكله مطابق تماماً للجدول table1 و لكنه فارغ.

    الإستعلام

    -- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
    DROP DATABASE IF EXISTS harmash;
    
    -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
    CREATE DATABASE harmash;
    
    -- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات
    USE harmash;
    
    -- يتألف من 5 أعمدة table1 هنا قمنا بإنشاء جدول جديد إسمه
    -- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات
    CREATE TABLE table1 (
        id       INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        username VARCHAR(50) NOT NULL,
        gender   VARCHAR(20),
        country  VARCHAR(50),
        salary   DECIMAL(7,2)
    );
    
    -- table1 أعمدته متطابقة مع أعمدة الجدول table2 هنا قمنا بإنشاء جدول جديد إسمه
    -- أيضاً لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات
    CREATE TABLE table2 (
        id       INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        username VARCHAR(50) NOT NULL,
        gender   VARCHAR(20),
        country  VARCHAR(50),
        salary   DECIMAL(7,2)
    );
    
    -- table1 هنا قمنا بإضافة 5 أسطر في الجدول
    -- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات
    -- مكان كل حقل لن نقوم بوضع قيمة فيه null بما أننا لم نحدد أسماء الأعمدة التي سنملأها لاحظ أننا مجبورين على وضع كلمة
    -- الموضوعة في بداية كل أمر سيتم إستبدالها بترقيم تلقائي من قبل قاعدة البيانات null و لا تنسى أن الكلمة
    INSERT INTO table1 VALUES (null, "rami", "male", "Lebanon", 700);
    INSERT INTO table1 VALUES (null, "ahmad", "male", "Syria", 800);
    INSERT INTO table1 VALUES (null, "hanan", "female", "KSA", 750);
    INSERT INTO table1 VALUES (null, "saly", "female", "Lebanon", 650);
    INSERT INTO table1 VALUES (null, "samir", "male", "Egypt", 600);
    		

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


    البيانات التي قمنا بإضافتها بشكل إفتراضي في الجدول table1.

    id user gender country salary
    1 rami male Lebanon 700.00
    2 ahmad male Syria 800.00
    3 hanan female KSA 750.00
    4 saly female Lebanon 650.00
    5 samir male Egypt 600.00

    شكل الجدول table2 الذي لا يحتوي على أي بيانات.

    id user gender country salary

    أمثلة حول نسخ البيانات من جدول و إضافتها في جدول آخر


    المثال الأول

    الإستعلام التالي يقوم بنسخ كل القيم الموجودة في الجدول table1 و يضيفها في الجدول table2 و من ثم يقوم بعرض البيانات التي وضعها في الجدول table2.

    الإستعلام

    INSERT INTO table2       -- table2 هنا قمنا بتحديد أنه سيتم وضع البيانات المنسوخة في الجدول
    SELECT * FROM table1;    -- table1 هنا قمنا بتحديد أنه سيتم نسخ كل بيانات الجدول
    
    SELECT * FROM table2;    -- table2 هنا قمنا بعرض كل البيانات التي أصبح يحتويها الجدول
    		

    سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
    لاحظ أن الجدول table2 أصبح يحتوي على نفس البيانات الموجودة في الجدول table1.

    id user gender country salary
    1 rami male Lebanon 700.00
    2 ahmad male Syria 800.00
    3 hanan female KSA 750.00
    4 saly female Lebanon 650.00
    5 samir male Egypt 600.00

    إنتبه

    بالنسبة للحقل id فقد تم نسخ قيمه أيضاً لأن الجدول table2 لم يكن يتضمن أي قيمة مشابهة و لو كان يتضمن قيمة واحدة مشابهة لما تنفذ الإستعلام.

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

    إذا قمت بتنفيذ الإستعلام السابق من جديد سيظهر لك الخطأ Duplicate entry '1' for key 'PRIMARY' و الذي يعني ما قلناه بالضبط.



    المثال الثاني

    الإستعلام التالي يقوم بنسخ كل القيم الموجودة في الجدول table1 باستثناء القيم الموضوعة في العمود id.

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

    الإستعلام

    الإستعلام التالي هو ما يجب كتابته بالضبط للحصول على الإحصاء المطلوب.

    INSERT INTO table2(username, gender, country, salary)   -- table2 هنا قمنا بتحديد أنه سيتم وضع البيانات المنسوخة في أعمدة محددة في الجدول
    SELECT username, gender, country, salary FROM table1;   -- table1 هنا قمنا بتحديد أنه سيتم نسخ بيانات أعمدة محددة من الجدول
    
    SELECT * FROM table2;    -- table2 هنا قمنا بعرض كل البيانات التي أصبح يحتويها الجدول
    		

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

    id user gender country salary
    1 rami male Lebanon 700.00
    2 ahmad male Syria 800.00
    3 hanan female KSA 750.00
    4 saly female Lebanon 650.00
    5 samir male Egypt 600.00
    6 rami male Lebanon 700.00
    7 ahmad male Syria 800.00
    8 hanan female KSA 750.00
    9 saly female Lebanon 650.00
    10 samir male Egypt 600.00


    المثال الثالث

    الإستعلام التالي يقوم بنسخ القيم الموجودة في العمودين username و country من الجدول table1 و يضيفها في الجدول table2 و من ثم يقوم بعرض البيانات التي أصبح يحتويها الجدول table2.

    الإستعلام

    INSERT INTO table2(username, country)   -- table2 هنا قمنا بتحديد أنه سيتم وضع البيانات المنسوخة في أعمدة محددة في الجدول
    SELECT username, country FROM table1;   -- table1 هنا قمنا بتحديد أنه سيتم نسخ بيانات أعمدة محددة من الجدول
    
    SELECT * FROM table2;                   -- table2 هنا قمنا بعرض كل البيانات التي أصبح يحتويها الجدول
    		

    سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
    لاحظ أن الجدول table2 أضيف عليه بيانات الأعمدة التي تم تحديدها فقط من الجدول table1 و الأعمدة الأخرى يظهر فيها القيمة NULL.

    id user gender country salary
    1 rami male Lebanon 700.00
    2 ahmad male Syria 800.00
    3 hanan female KSA 750.00
    4 saly female Lebanon 650.00
    5 samir male Egypt 600.00
    6 rami male Lebanon 700.00
    7 ahmad male Syria 800.00
    8 hanan female KSA 750.00
    9 saly female Lebanon 650.00
    10 samir male Egypt 600.00
    11 rami NULL Lebanon NULL
    12 ahmad NULL Syria NULL
    13 hanan NULL KSA NULL
    14 saly NULL Lebanon NULL
    15 samir NULL Egypt NULL
    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب