15.3. الدرس: إضافة البيانات إلى النموذج¶
يجب الآن ملء النماذج التي أنشأناها بالبيانات المقصود أن تحتويها.
هدف هذا الدرس: تعلّم كيفية إدراج بيانات جديدة في نماذج قاعدة البيانات.
15.3.1. عبارة الإدراج Insert¶
كيف تضيف بيانات إلى جدول؟ توفر عبارة INSERT في لغة SQL هذه الوظيفة:
insert into streets (name) values ('High street');
بعض الأمور التي يجب ملاحظتها:
بعد اسم الجدول (
streets)، اذكر أسماء الأعمدة التي ستملؤها (في هذه الحالة عمودnameفقط).بعد الكلمة المفتاحية
values، ضع قائمة قيم الحقول.يجب إحاطة النصوص بعلامات اقتباس مفردة.
لاحظ أننا لم ندرج قيمة للعمود
id؛ ذلك لأنه تسلسل (sequence) وسيُولَّد تلقائيًّا.إذا عيّنت قيمة
idيدويًّا، فقد تسبّب مشكلات خطيرة في سلامة قاعدة بياناتك.
يجب أن ترى INSERT 0 1 إذا نجحت العملية.
يمكنك رؤية نتيجة عملية الإدراج بتحديد جميع البيانات في الجدول:
select * from streets;
النتيجة:
select * from streets;
id | name
----+-------------
1 | High street
(1 row)
جرّب بنفسك: ★☆☆¶
استخدم الأمر INSERT لإضافة شارع جديد إلى الجدول streets.
الإجابة
يبدو أمر SQL الذي يجب أن تستخدمه كما يلي (يمكنك استبدال اسم الشارع باسم من اختيارك):
insert into streets (name) values ('Low Road');
15.3.2. ترتيب إضافة البيانات وفقًا للقيود¶
15.3.3. جرّب بنفسك: ★★☆¶
حاول إضافة كائن شخص إلى الجدول people بالتفاصيل التالية:
Name: Joe Smith
House Number: 55
Street: Main Street
Phone: 072 882 33 21
ملاحظة
تذكّر أننا عرّفنا في هذا المثال أرقام الهواتف على أنها نصوص، لا أعداد صحيحة.
عند هذه النقطة، يُفترض أن تحصل على رسالة خطأ إذا حاولت فعل ذلك دون أن تنشئ أولًا سجلًّا لـ Main Street في الجدول streets.
ويُفترض أيضًا أنك لاحظت ما يلي:
لا يمكنك إضافة الشارع باستخدام اسمه
لا يمكنك إضافة شارع باستخدام
idالشارع قبل إنشاء سجل الشارع أولًا في الجدولstreets
تذكّر أن جدولينا مرتبطان عبر زوج من المفتاح الأساسي والمفتاح الأجنبي (Primary/Foreign Key). وهذا يعني أنه لا يمكن إنشاء شخص صالح دون وجود سجل شارع صالح مقابل له.
مستعينًا بالمعرفة السابقة، أضف الشخص الجديد إلى قاعدة البيانات.
الإجابة
إليك عبارة SQL الصحيحة:
insert into streets (name) values('Main Road');
insert into people (name,house_no, street_id, phone_no)
values ('Joe Smith',55,2,'072 882 33 21');
إذا نظرت إلى جدول الشوارع مرة أخرى (باستخدام عبارة select كما في السابق)، فسترى أن قيمة id للمدخل Main Road هي 2.
لهذا السبب أمكننا إدخال الرقم 2 فقط أعلاه. ومع أننا لا نرى Main Road مكتوبًا كاملًا في المدخل أعلاه، فإن قاعدة البيانات ستتمكن من ربطه بقيمة street_id التي هي 2.
إذا كنت قد أضفت كائن شارع جديدًا من قبل، فقد تجد أن قيمة id للشارع Main Road الجديد هي 3 وليست 2.
15.3.4. تحديد البيانات¶
عرضنا لك من قبل صيغة تحديد السجلات. لنلقِ نظرة على بعض الأمثلة الإضافية:
select name from streets;
select * from streets;
select * from streets where name='Main Road';
سنتناول في الجلسات اللاحقة تفاصيل أكثر حول كيفية تحديد البيانات وتصفيتها.
15.3.5. تحديث البيانات¶
ماذا لو أردت إجراء تغيير على بيانات موجودة؟ مثلًا، تغيّر اسم أحد الشوارع:
update streets set name='New Main Road' where name='Main Road';
كن حذرًا جدًّا عند استخدام عبارات التحديث هذه، فإذا طابق أكثر من سجل شرط WHERE فسيجري تحديثها جميعًا!
الحل الأفضل هو استخدام المفتاح الأساسي للجدول للإشارة إلى السجل المراد تغييره:
update streets set name='New Main Road' where id=2;
يجب أن يُرجع UPDATE 1.
ملاحظة
معايير عبارة WHERE حساسة لحالة الأحرف، فـ Main Road ليس نفسه Main road.
15.3.6. حذف البيانات¶
لحذف كائن من جدول، استخدم الأمر DELETE:
delete from people where name = 'Joe Smith';
لنلقِ نظرة الآن على جدول الأشخاص:
address=# select * from people;
id | name | house_no | street_id | phone_no
----+------+----------+-----------+----------
(0 rows)
15.3.7. جرّب بنفسك: ★★★¶
استخدم المهارات التي تعلمتها لإضافة بعض الأصدقاء الجدد إلى قاعدة بياناتك:
name | house_no | street_id | phone_no
-----------------+----------+-----------+--------------
Joe Bloggs | 3 | 2 | 072 887 23 45
Jane Smith | 55 | 3 | 072 837 33 35
Roger Jones | 33 | 1 | 072 832 31 38
Sally Norman | 83 | 1 | 072 932 31 32
15.3.8. الخلاصة¶
أصبحت تعرف الآن كيف تضيف بيانات جديدة إلى النماذج الموجودة التي أنشأتها سابقًا. تذكّر أنك إذا أردت إضافة أنواع جديدة من البيانات، فقد تحتاج إلى تعديل نماذج و/أو إنشاء نماذج جديدة لاحتواء تلك البيانات.
15.3.9. ما التالي؟¶
بعد أن أضفت بعض البيانات، ستتعلم كيف تستخدم الاستعلامات للوصول إلى هذه البيانات بطرق مختلفة.