المحــ البرمجى ــتوى
11-27-2006, 11:41 AM
عنوان الدرس: استخدام التعليمة Insert في MySQL - الجزء الأول
الآن و بعد أن دخلت المرحلة المتوسطة من تعلم MySQL سيكون هذا أول درس فعلي لك, لنبدأ على بركة الله.
إن قاعدة البيانات Movie_Store التي قمت بإنشائها سابقا خالية من البيانات لذلك ستتعلم كيفية إدراج البيانات أو حذفها أو التعديل عليها بإذن الله.
# التعليمة Insert :
تخولك هذه التعليمة من إدراج البيانات في الجداول, و إليك الصيغة القواعدية لهذا الأمر:
insert into Table_name(col_1,col_2,…,col_n) values('val_1' , 'val_2' , … , 'val_n');
أعتقد أنك تقول بأن الصيغة سهلة لكنها غير واضحة تقريبا, حسننا سنوضحها بتطبيق عملي:
سنقوم بإدراج معلومات عن فيلم ما في الجدول movies , طبعا يجب أن تعرف ما هي الأعمدة الموجودة في هذا الجدول, والأعمدة هي:
1. mov_no : و هذا العمود هو عمود ترقيم تلقائي, و طبعا هذا العمود لن ندرج به قيمة لأنه يأخذ أرقاما تسلسلية تلقائية (راجع درس بناء الجداول في MySQL - الجزء الثالث) .
2. mov_name : سنضع فيه اسم الفيلم المراد إدراجه و ليكن هذا الفيلم هو فيلم assassins .
3. Star_1 : سنضع فيه اسم البطل الأول للفيلم و ليكن Sylvester stallone .
4. Star_2 : سنضع فيه اسم البطل الثاني للفيلم إن وجد بطل ثاني. أدخل إلى بنية هذا الجدول باستخدام التعليمة show columns from movies و لاحظ أن هذا العمود يقبل القيمة null , و هنا البطل الثاني اسمه Antonio Banderas.
5. Kind : سنضع فيه نوع الفيلم و المقصود بنوع الفيلم إما رعب أو عنف أو بوليسي أو رومنسي الخ من أنواع الأفلام التي تعرفها, لاحظ القيمة الافتراضية هي violence باعتبار أن معظم الأفلام هي أفلام عنف, لذلك دائما اجعل القيمة الافتراضية هي القيمة الأكثر استخداما, و في حالتنا هذه فإن فيلم assassins هو فيلم عنف أي violence .
6. price : و هنا سنضع سعر الفيلم و ليكن 250 .
و بالعودة إلى التعليمة insert سنقوم بإدراج قيم في الأعمدة التالية فقط: mov_name , star_1 , star_2 , price
سأكتب الآن تعليمة الإدراج و قارن بينها و بين الصيغة القواعدية لها:
insert into movies(mov_name,star_1,star_2,price) values('assassins' , 'sylvester stallone' , 'A. banderas' , 250 );
لاحظ أن القيم المحرفية يتم إحاطتها بعلامة اقتباس مفرده single quote أما القيم الرقمية و العددية فلا يتم ذلك.
قم بكتابة الاستعلام التالي:
select * from movies;
ستظهر لك إن شاء الله النتيجة التالية:
+-----------+-------------------+-------------------+----------------------+-----------+---------------+
| mov_no | mov_name | star_1 | star_2 | kind | price |
+-----------+-------------------+-------------------+----------------------+-----------+---------------+
| 1 | assassins | sylvester stalon | antonio banderas | violence | 250.00 |
+-----------+-------------------+-------------------+----------------------+-----------+---------------+
1 row in set (0.06 sec)
لاحظ كيف أن mov_no قد أخذ القيمة واحد تلقائيا علما بأننا لم ندرج قيمة, و هناك صفة سيئة للأعمدة التي من النوع auto_increment إذ أنه يمكنك أن تدرج رقماً عن طريق تعليمة insert حتى لو لم يكن متسلسل.
و لاحظ أيضا كيف أن العمود kind أخذ تلقائيا القيمة الافتراضية violence عندما لم يتم إدراج قيمة.
و لاحظ أيضا أن العمود price قد أخذ الرقم الذي أعطيته إياه و وضع له فاصلة ثم صفرين و ذلك لأن نوع هذا العمود من النوع float مع دقة بمقدار رقمين بعد الفاصلة.
و هناك خاصية حلوة في MySQL هي أنه يمكنك أن تدرج عدة صفوف مع وضع فاصلة بين كل صف, و يتم ذلك كما يلي:
insert into table_name(col_1 , … , col_n) values('val_1' , … , 'val_n') , ('another_val' , … , 'another_n');
و بهذه التعليمة تكون قد قمت بإدراج صفين معا.
و أعود و أذكر بأنه في حال أردت أن أدرج محارف خاصة في عمود ما مثل علامة الاقتباس المفردة Single quote أو علامة الاقتباس المزدوجة Double quotation أو علامة الهروب back slash فإنني سأستخدم علامة الهروب لذلك:
insert into my_table(col_1) values ('it's for you');
insert into my_table(col_1) values ('c:windows');
و بذلك نكون قد انتهينا من التعليمة Insert
الآن و بعد أن دخلت المرحلة المتوسطة من تعلم MySQL سيكون هذا أول درس فعلي لك, لنبدأ على بركة الله.
إن قاعدة البيانات Movie_Store التي قمت بإنشائها سابقا خالية من البيانات لذلك ستتعلم كيفية إدراج البيانات أو حذفها أو التعديل عليها بإذن الله.
# التعليمة Insert :
تخولك هذه التعليمة من إدراج البيانات في الجداول, و إليك الصيغة القواعدية لهذا الأمر:
insert into Table_name(col_1,col_2,…,col_n) values('val_1' , 'val_2' , … , 'val_n');
أعتقد أنك تقول بأن الصيغة سهلة لكنها غير واضحة تقريبا, حسننا سنوضحها بتطبيق عملي:
سنقوم بإدراج معلومات عن فيلم ما في الجدول movies , طبعا يجب أن تعرف ما هي الأعمدة الموجودة في هذا الجدول, والأعمدة هي:
1. mov_no : و هذا العمود هو عمود ترقيم تلقائي, و طبعا هذا العمود لن ندرج به قيمة لأنه يأخذ أرقاما تسلسلية تلقائية (راجع درس بناء الجداول في MySQL - الجزء الثالث) .
2. mov_name : سنضع فيه اسم الفيلم المراد إدراجه و ليكن هذا الفيلم هو فيلم assassins .
3. Star_1 : سنضع فيه اسم البطل الأول للفيلم و ليكن Sylvester stallone .
4. Star_2 : سنضع فيه اسم البطل الثاني للفيلم إن وجد بطل ثاني. أدخل إلى بنية هذا الجدول باستخدام التعليمة show columns from movies و لاحظ أن هذا العمود يقبل القيمة null , و هنا البطل الثاني اسمه Antonio Banderas.
5. Kind : سنضع فيه نوع الفيلم و المقصود بنوع الفيلم إما رعب أو عنف أو بوليسي أو رومنسي الخ من أنواع الأفلام التي تعرفها, لاحظ القيمة الافتراضية هي violence باعتبار أن معظم الأفلام هي أفلام عنف, لذلك دائما اجعل القيمة الافتراضية هي القيمة الأكثر استخداما, و في حالتنا هذه فإن فيلم assassins هو فيلم عنف أي violence .
6. price : و هنا سنضع سعر الفيلم و ليكن 250 .
و بالعودة إلى التعليمة insert سنقوم بإدراج قيم في الأعمدة التالية فقط: mov_name , star_1 , star_2 , price
سأكتب الآن تعليمة الإدراج و قارن بينها و بين الصيغة القواعدية لها:
insert into movies(mov_name,star_1,star_2,price) values('assassins' , 'sylvester stallone' , 'A. banderas' , 250 );
لاحظ أن القيم المحرفية يتم إحاطتها بعلامة اقتباس مفرده single quote أما القيم الرقمية و العددية فلا يتم ذلك.
قم بكتابة الاستعلام التالي:
select * from movies;
ستظهر لك إن شاء الله النتيجة التالية:
+-----------+-------------------+-------------------+----------------------+-----------+---------------+
| mov_no | mov_name | star_1 | star_2 | kind | price |
+-----------+-------------------+-------------------+----------------------+-----------+---------------+
| 1 | assassins | sylvester stalon | antonio banderas | violence | 250.00 |
+-----------+-------------------+-------------------+----------------------+-----------+---------------+
1 row in set (0.06 sec)
لاحظ كيف أن mov_no قد أخذ القيمة واحد تلقائيا علما بأننا لم ندرج قيمة, و هناك صفة سيئة للأعمدة التي من النوع auto_increment إذ أنه يمكنك أن تدرج رقماً عن طريق تعليمة insert حتى لو لم يكن متسلسل.
و لاحظ أيضا كيف أن العمود kind أخذ تلقائيا القيمة الافتراضية violence عندما لم يتم إدراج قيمة.
و لاحظ أيضا أن العمود price قد أخذ الرقم الذي أعطيته إياه و وضع له فاصلة ثم صفرين و ذلك لأن نوع هذا العمود من النوع float مع دقة بمقدار رقمين بعد الفاصلة.
و هناك خاصية حلوة في MySQL هي أنه يمكنك أن تدرج عدة صفوف مع وضع فاصلة بين كل صف, و يتم ذلك كما يلي:
insert into table_name(col_1 , … , col_n) values('val_1' , … , 'val_n') , ('another_val' , … , 'another_n');
و بهذه التعليمة تكون قد قمت بإدراج صفين معا.
و أعود و أذكر بأنه في حال أردت أن أدرج محارف خاصة في عمود ما مثل علامة الاقتباس المفردة Single quote أو علامة الاقتباس المزدوجة Double quotation أو علامة الهروب back slash فإنني سأستخدم علامة الهروب لذلك:
insert into my_table(col_1) values ('it's for you');
insert into my_table(col_1) values ('c:windows');
و بذلك نكون قد انتهينا من التعليمة Insert