في الدرس السابق، قمنا بإنشاء جداول البيانات. لدينا جدول Workspace وجدول Project مرتبطين مع بعضهما البعض عن طريق Foreign Key.
إذا لم تشاهد الدرس السابق، ننصحك بمشاهدته أولاً لفهم أفضل للعلاقات بين الجداول.
لاسترجاع كل البيانات من جدول معين بكل بساطة، نكتب:
SELECT * FROM Workspace;
هذا يسترجع جميع الأعمدة من جدول Workspace بما فيها ID و Name.
من الأفضل دائماً عدم استرجاع كل البيانات. بدلاً من ذلك، حدد الأعمدة التي تحتاجها:
SELECT ID, Name FROM Project;
لماذا هذا أفضل؟ لأنه يقلل كمية البيانات المنقولة ويحسّن الأداء.
عند إدراج بيانات جديدة، يجب أن تتبع هذا الترتيب:
INSERT INTO Workspace (Name) VALUES ('Alpha');
ملاحظة مهمة: استخدم الفاصلة المفردة ' وليس الفاصلة المزدوجة ".
يمكنك إدراج أكثر من صف واحد في أمر واحد:
اشترك في النشرة البريدية
دروس جديدة، مقالات، وأدوات مباشرة لبريدك.
لأن Project يحتوي على Workspace ID كمفتاح أجنبي، يجب أن تنشئ Workspace أولاً قبل إنشاء أي Project.
المنطق: لا يمكنك إنشاء Project مرتبط بـ Workspace إذا لم يكن هذا الـ Workspace موجوداً بالفعل.
INSERT INTO Project (Name, WorkspaceID) VALUES ('Project X', 1);في هذا المثال، استخدمنا Workspace ID = 1 و 2 لأنهما موجودان فعلاً. جميع المعرّفات التسلسلية (Serial) تنشأ تلقائياً.
إذا حاولت إدراج Project مع WorkspaceID غير موجود:
INSERT INTO Project (Name, WorkspaceID) VALUES ('Invalid Project', 9);ستحصل على خطأ لأن Workspace رقم 9 غير موجود.
SELECT * FROM Workspace;id | name
---+------
1 | Alpha
2 | Beta
الآن أدرج بعض المشاريع:
INSERT INTO Project (Name, WorkspaceID) VALUES ('Project X', 1), ('Project Y', 2);INSERT 0 2
لاحظ أن المعرّفات قد لا تكون متتالية تماماً. إذا فشل الإدراج مرتين، سيتم استهلاك تلك الأرقام:
SELECT * FROM Project;id | name | workspace_id
---+----------+--------------
1 | Project X | 1
4 | Project Y | 2
حدث هذا لأن المتسلسل زاد قيمته حتى مع فشل المحاولات. هذا السلوك طبيعي ولا يؤثر على عمل قاعدة البيانات.
تحذير: إذا لم تحدد WHERE، سيتم تعديل جميع الصفوف!
UPDATE Project SET Name = 'Project V';هذا الأمر السابق سيعدل كل صفوف الجدول. تجنب هذا الخطأ الشائع!
استخدم دائماً عمود فريد في شرط WHERE، مثل ID:
UPDATE Project SET Name = 'New Name' WHERE ID = 5;النتيجة:
UPDATE 1
يعني تم تعديل صف واحد بنجاح.
DELETE FROM Project WHERE ID = 5;DELETE 1
كما هو الحال مع UPDATE، إذا لم تحدد WHERE، ستحذف جميع البيانات:
DELETE FROM Project;هذا سيحذف كل المشاريع! كن حذراً جداً.
تذكر من الدرس السابق أننا لم نحدد ON DELETE في العلاقة. شاهد الدرس السابق لفهم الفرق بين الخيارات المختلفة:
ON DELETE CASCADE - حذف جميع المشاريع المرتبطةON DELETE RESTRICT - منع حذف Workspace إذا كان مرتبطاًفي الدروس القادمة، سنتعلم كيفية:
Workspace معين