كيفية إنشاء وإدارة الجداول في SQL


كيفية إنشاء وإدارة الجداول في SQL

أهلاً بك! الجداول هي أساس أي قاعدة بيانات علائقية. تخيلها كأوراق العمل في Excel، لكنها أقوى بكثير ومنظمة بطريقة تسمح لك بالتعامل مع كميات هائلة من البيانات بكفاءة. يلا بينا نشوف كيف ننشئ وندير هذه الجداول.

1. إنشاء جدول جديد (CREATE TABLE)

لإنشاء جدول، نستخدم الأمر CREATE TABLE. لازم نحدد اسم للجدول، وبعدين نحدد كل عمود (Column) بالاسم ونوع البيانات (Data Type) الخاص به، وأي قيود (Constraints) نحتاجها.

أنواع البيانات الشائعة:

  • INT: للأعداد الصحيحة.
  • VARCHAR(طول): للنصوص ذات الطول المتغير (مثلاً، VARCHAR(255)).
  • TEXT: للنصوص الطويلة.
  • DATE: للتواريخ فقط.
  • DATETIME أو TIMESTAMP: للتواريخ والأوقات.
  • DECIMAL(P, S): للأرقام العشرية (P هو إجمالي عدد الأرقام، S هو عدد الأرقام بعد الفاصلة).
  • BOOLEAN أو TINYINT(1): للقيم المنطقية (صحيح/خطأ).

القيود (Constraints) المهمة:

  • PRIMARY KEY: مفتاح أساسي. يضمن أن كل قيمة في هذا العمود فريدة ولا يمكن أن تكون NULL. كل جدول لازم يكون عنده مفتاح أساسي واحد.
  • NOT NULL: يضمن أن هذا العمود لا يمكن أن يحتوي على قيم NULL. لازم يكون فيه قيمة دايماً.
  • UNIQUE: يضمن أن كل القيم في هذا العمود فريدة، لكن ممكن تكون NULL (مرة واحدة فقط).
  • DEFAULT قيمة: يحدد قيمة افتراضية للعمود إذا لم يتم تحديد قيمة عند إدخال صف جديد.
  • FOREIGN KEY: مفتاح خارجي. يربط بين جدولين عن طريق الإشارة إلى PRIMARY KEY في جدول آخر. هذا أساس العلاقات بين الجداول.

مثال على إنشاء جدول للموظفين:

CREATE TABLE Employees (
    employee_id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    phone_number VARCHAR(20),
    hire_date DATE DEFAULT CURRENT_DATE,
    salary DECIMAL(10, 2) NOT NULL,
    department_id INT,
    FOREIGN KEY (department_id) REFERENCES Departments(department_id)
);

ملاحظة سريعة: AUTO_INCREMENT (في MySQL) أو IDENTITY (في SQL Server) أو SERIAL (في PostgreSQL) بيخلي العمود يزيد تلقائياً مع كل صف جديد، وده مثالي للمفاتيح الأساسية.

2. تعديل هيكل الجدول (ALTER TABLE)

مع الوقت، ممكن تحتاج تعدل على هيكل الجدول بعد ما أنشأته. هنا يجي دور الأمر ALTER TABLE.

إضافة عمود جديد:

لو حبيت تضيف عمود جديد، مثلاً عمود لتاريخ الميلاد:

ALTER TABLE Employees
ADD COLUMN date_of_birth DATE;

حذف عمود:

لو عمود معين ما عدت تحتاجه، تقدر تحذفه:

ALTER TABLE Employees
DROP COLUMN phone_number;

تعديل نوع بيانات عمود أو قيوده:

ممكن تحتاج تغير نوع البيانات لعمود أو تضيف عليه قيد (ملاحظة: الصياغة تختلف قليلاً بين قواعد البيانات):

مثال لـ MySQL:

ALTER TABLE Employees
MODIFY COLUMN email VARCHAR(150) NOT NULL; -- تغيير الطول وإضافة قيد NOT NULL

مثال لـ SQL Server/PostgreSQL:

ALTER TABLE Employees
ALTER COLUMN email TYPE VARCHAR(150); -- تغيير نوع البيانات (PostgreSQL)

ALTER TABLE Employees
ALTER COLUMN email VARCHAR(150) NOT NULL; -- إضافة قيد NOT NULL (SQL Server)

إعادة تسمية عمود:

لو حبيت تغير اسم عمود (الصياغة تختلف):

مثال لـ MySQL/PostgreSQL:

ALTER TABLE Employees
RENAME COLUMN date_of_birth TO birth_date;

مثال لـ SQL Server:

EXEC sp_rename 'Employees.date_of_birth', 'birth_date', 'COLUMN';

إعادة تسمية جدول:

لو حبيت تغير اسم الجدول بالكامل:

مثال لـ MySQL/PostgreSQL:

ALTER TABLE Employees
RENAME TO Staff;

مثال لـ SQL Server:

EXEC sp_rename 'Employees', 'Staff';

3. حذف الجداول والبيانات

أحياناً تحتاج تحذف جدول بالكامل أو تمسح كل البيانات اللي فيه.

حذف جدول بالكامل (DROP TABLE):

الأمر DROP TABLE يحذف الجدول وهيكله وكل البيانات اللي فيه بشكل دائم. استخدمه بحذر شديد!

DROP TABLE Staff;

تنبيه: لو الجدول اللي بتحذفه مرتبط بجداول تانية عن طريق FOREIGN KEY، ممكن تحتاج تحذف القيود الأول أو تستخدم CASCADE (حسب قاعدة البيانات) عشان تقدر تحذفه.

حذف كل البيانات من الجدول (TRUNCATE TABLE):

لو عايز تمسح كل الصفوف من الجدول لكن تخلي هيكل الجدول موجود، استخدم TRUNCATE TABLE. هذا أسرع من DELETE FROM بدون شرط WHERE، وعادةً ما يعيد عداد AUTO_INCREMENT للصفر.

TRUNCATE TABLE Staff;

خاتمة

وبكده نكون غطينا أساسيات إنشاء وإدارة الجداول في SQL. فهمك لهذه الأوامر هو خطوتك الأولى والأساسية في التعامل مع قواعد البيانات. تدرب عليها، وجرب بنفسك، وراح تشوف كيف الموضوع يصير سهل وممتع!