Theme
Primary Color

الدرس 16

المفتاح الأساسي و منع القيم الناقصة

ال Primary Key هو المفتاح الأساسي اللي بنستخدمه للوصول لصف محدد 

اختيار الاسم كمفتاح ممكن يسبب مشكلة لأن شخصين ممكن يكون عندهم نفس الاسم

لكن ال ID مثلا عامل زي رقم الهوية مينفعش اتنين يكون عندهم نفس رقم الهوية 

الفكرة و طريقة الاستخدام

في SQLite التعريف INTEGER PRIMARY KEY يسمح بتوليد المعرف لما منكتبوش 

ال NOT NULL يعني بيانات لازم تكون موجودة مينفعش تتساب فاضية


هنطبق الفكرة على موظفين المتجر في جدول store_staff 

وكل موظف ليه معرف مستقل واسم مطلوب

-- Create The Table
CREATE TABLE store_staff (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL
);

-- Insert Data
INSERT INTO store_staff (name)
VALUES ('Ali'), ('Mona');

-- Display Staff Ordered By ID
SELECT id, name
FROM store_staff
ORDER BY id;

النتيجة المتوقعة

id | name
1 | Ali
2 | Mona

افهم النتيجة

المعرفات اللي هي ال ID's اتولدت تلقائيا 

المعرف هدفه يميز كل صف مش يحسب عدد الصفوف 

تخيل عندك 3 موظفين بمعرفات 1 و 2 و 3 وحذفت الموظف رقم 2 

هيبقى عندك موظفين بس بمعرفات 1 و 3

كده أكبر معرف هو 3 لكن عدد الموظفين 2 ورقم 2 بقى فجوة بين المعرفات 

علشان كده منستخدمش آخر ID لمعرفة عدد الصفوف

جرب تضيف موظف من غير اسم

شغل الأمر ده لوحده بعد المثال الأساسي هنا بنحدد المعرف بس ومش بنبعت قيمة لعمود name

INSERT INTO store_staff (id)
VALUES (3);

رسالة الخطأ

NOT NULL constraint failed: store_staff.name

ليه ظهر الخطأ

عمود name ملوش قيمة افتراضية ولما سيبناه من غير قيمة كان هياخد NULL 

لكن إحنا محددينه NOT NULL فقاعدة البيانات رفضت إضافة الصف

الخطأ هنا مقصود علشان نشوف الشرط شغال 

والموظفين Ali و Mona فضلوا زي ما هم والموظف رقم 3 متضافش

تقدر تشغل أمر العرض الموجود فوق تاني وتتأكد إن الجدول لسه فيه نفس الصفين

جرب بنفسك

أنشئ categories بمعرف و اسم مطلوب و أضف Books

حل للمراجعة

CREATE TABLE categories (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL
);
INSERT INTO categories (name) VALUES ('Books');
SELECT id, name FROM categories;
id | name
1 | Books
آخر تعديل للدرس: