Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

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 هنا قمنا بتحديد أننا نريد إزالة القيمة الإفتراضية الموضوعة على العامود