SQLوضع قيم إفتراضية للحقول
- مفهوم القيم الإفتراضية
- تجهيز قاعدة البيانات التي سنطبق عليها
- متى يتم إضافة القيم الإفتراضية الموضوعة للأعمدة
- طريقة وضع قيمة إفتراضية لعمود معرف مسبقاً في الجدول
- طريقة إلغاء القيمة إفتراضية التي وضعناها للعمود
مفهوم القيم الإفتراضية
عند إضافة سطر جديد في الجدول، فإن الحقول التي لا يوضع فيها قيم يتم إظهار القيمة Null
فيها للإشارة إلى أنها فارغة.
يمكنك تعيين قيمة إفتراضية للعمود ليتم إعطاءها للحقل في حال لم يتم وضع قيمة فيه.
عند تعيين قيمة إفتراضية للعمود يجب مراعاة نوع القيم التي يمكن تخزينها فيه، فمثلاً إن كان نوع العمود هو INT
يمكن تعيين عدد صحيح مثل الرقم 0
و ليس قيمة من نوع آخر مثل الكلمة 'Empty'
لأنه بالمنطق لا يمكنك تخزين نص في حقل مخصص لتخزين عدد.
طريقة تعيين قيمة إفتراضية
القيمة الإفتراضية يمكن تعيينها في العمود لحظة إنشاء الجدول كما يلي.
CREATE TABLE table_name ( column_name datatype DEFAULT default_value );
- مكان الكلمة
table_name
نضع إسم الجدول الذي نريد إجراء تعديلات عليه. - مكان الكلمة
column_name
نحدد إسم العمود. - مكان الكلمة
datatype
نحدد نوع البيانات التي يمكن تخيزنها في العمود. - بعد الكلمة
DEFAULT
نضع القيمة الإفتراضية التي نريد وضعها للحقول الموضوعة تحت هذا العمود.
تجهيز قاعدة البيانات التي سنطبق عليها
قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash
و تنشئ فيها جدول إسمه users
.
ملاحظة: العمود country
وضعنا فيه الكلمة 'Unknown'
كقيمة إفتراضية.
مثال
-- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها DROP DATABASE IF EXISTS harmash; -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها CREATE DATABASE harmash; -- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات USE harmash; -- يتألف من 4 أعمدة users هنا قمنا بإنشاء جدول جديد إسمه -- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات CREATE TABLE users ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(50), last_name VARCHAR(50), country VARCHAR(50) DEFAULT 'Unknown' );
متى يتم إضافة القيم الإفتراضية الموضوعة للأعمدة
الإستعلام التالي يضيف 4 مستخدمين في الجدول users
.
بعدها يعرض كل الأسطر التي تم إضافتها.
مثال
-- فقط first_name مع إدخال قيمة في الحقل users هنا قمنا بإضافة سطر في الجدول INSERT INTO users (first_name) VALUES ("Mhamad"); -- last_name و قيمة في الحقل first_name مع إدخال قيمة في الحقل users هنا قمنا بإضافة سطر في الجدول INSERT INTO users (first_name, last_name) VALUES ("Ayman", "Mostafa"); -- مع إدخال قيم لكل الحقول الموجودة في السطر users هنا قمنا بإضافة سطر في الجدول INSERT INTO users (first_name, last_name, country) VALUES ("Ahmad", "Naji", "Syria"); -- مع إدخال قيم لكل الحقول الموجودة في السطر users هنا قمنا بإضافة سطر في الجدول INSERT INTO users (first_name, last_name, country) VALUES ("Saly", "Harmush", null); -- users هنا قمنا بعرض جميع البيانات الموجودة في الجدول SELECT * FROM users;
النتيجة
id | first_name | last_name | country |
---|---|---|---|
1 | Mhamad | NULL | Unknown |
2 | Ayman | Mostafa | Unknown |
3 | Ahmad | Naji | Syria |
4 | Saly | Harmush | NULL |
نلاحظ أن العمود country
يظهر فيه عدة قيم من بينها القيمة NULL
و القيمة الإفتراضية Unknown
و سنضع قراءة تحليلة لكل سطر تم إدخاله حتى تعرف السبب.
السطر الأول
تم وضع القيمة NULL
في الحقل last_name
لأننا لم ندخل قيمة فيه.
تم وضع القيمة Unknown
في الحقل country
لأنها القيمة الإفتراضية التي حددنا أنه يتم وضعها في حال لم ندخل قيمة فيه.
السطر الثاني
تم وضع القيمة Unknown
في الحقل country
لأنها القيمة الإفتراضية التي حددنا أنه يتم وضعها في حال لم ندخل قيمة فيه.
السطر الثالث
لم يتم وضع القيمة الإفتراضية Unknown
في الحقل country
لأنه تم تمرير قيمة له.
السطر الرابع
لم يتم وضع القيمة الإفتراضية Unknown
في الحقل country
لأنه تم عمداً تمرير القيمة NULL
في الإستعلام.
طريقة وضع قيمة إفتراضية لعمود معرف مسبقاً في الجدول
في حال أردت وضع قيمة إفتراضية لعمود موجود مسبقاً في الجدول، يمكنك تعديل العمود بواسطة الأمر ALTER
.
طريقة وضع القيمة الإفتراضية لعمود تم تعريفه مسبقاً، تختلف من قاعدة بيانات لأخرى و لكن الفكرة هي نفسها تماماً.
أسلوب قواعد بيانات SQL Server
ALTER TABLE table_name ADD CONSTRAINT df_column_name DEFAULT 'default_value' FOR column_name;
أسلوب قواعد بيانات Oracle
ALTER TABLE table_name MODIFY column_name DEFAULT 'default_value';
أسلوب قواعد بيانات Access
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 'default_value';
أسلوب قواعد بيانات MySQL
ALTER TABLE table_name MODIFY column_name datatype DEFAULT 'default_value';
في هذه الدورة سنعتمد أسلوب قواعد بيانات MySQL في تعديل أنواع أعمدة الجداول.
الإستعلام التالي يقوم بتعديل القيمة الإفتراضية للحقل last_name
لأي سطر جديد يتم إضافته لتصبح الكلمة 'Missed'
كقيمة إفتراضية.
مثال
ALTER TABLE users -- users هنا قمنا بتحديد أننا نريد إجراء تعديل على بنية الجدول MODIFY last_name VARCHAR(50) DEFAULT 'Missed'; -- 'Missed' الإفتراضية إلى last_name هنا قمنا بتحديد أننا نريد تغيير قيم العامود
طريقة إلغاء القيمة إفتراضية التي وضعناها للعمود
في حال أردت إلغاء القيمة الإفتراضية الموضوعة للعمود، يمكنك تعديل العمود بواسطة الأمر ALTER
.
طريقة لإلغاء القيمة الإفتراضية للعمود، تختلف من قاعدة بيانات لأخرى و لكن الفكرة هي نفسها تماماً.
أسلوب قواعد بيانات MySQL
ALTER TABLE table_name ALTER column_name DROP DEFAULT;
أسلوب قواعد بيانات SQL Server / Oracle / Access
ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT;
الإستعلام التالي يقوم بإلغاء وضع الكلمة 'Missed'
كقيمة إفتراضية في العمود country
.
مثال
ALTER TABLE users -- users هنا قمنا بتحديد أننا نريد إجراء تعديل على بنية الجدول ALTER country DROP DEFAULT; -- country هنا قمنا بتحديد أننا نريد إزالة القيمة الإفتراضية الموضوعة على العامود