كيفية إنشاء وإدارة الجداول في 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. فهمك لهذه الأوامر هو خطوتك الأولى والأساسية في التعامل مع قواعد البيانات. تدرب عليها، وجرب بنفسك، وراح تشوف كيف الموضوع يصير سهل وممتع!