الدرس 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