أوامر DDL: دليل شامل ومفصل
في عالم قواعد البيانات، تُعد أوامر DDL (Data Definition Language) من الركائز الأساسية التي تُمكّن المطورين ومديري قواعد البيانات من إنشاء وتعديل وحذف هيكل قاعدة البيانات. تُستخدم أوامر DDL لتعريف بنية البيانات، مثل إنشاء الجداول، تحديد الأعمدة وأنواع البيانات، وتعيين المفاتيح الأساسية والخارجية، وغيرها من العناصر الهيكلية.
في هذا المقال، سنستعرض أوامر DDL بشكل شامل، موضحين كل أمر بالتفصيل مع أمثلة تطبيقية لتوضيح كيفية استخدامها في بيئات قواعد البيانات المختلفة مثل MySQL وPostgreSQL وSQL Server.
ما هو DDL؟
DDL هي اختصار لـ Data Definition Language، وهي مجموعة من أوامر SQL تُستخدم لتعريف وتعديل بنية قاعدة البيانات. تختلف أوامر DDL عن أوامر DML (Data Manipulation Language) التي تُستخدم لإدخال واسترجاع وتحديث وحذف البيانات داخل الجداول.
أوامر DDL تشمل:
- CREATE: لإنشاء قواعد بيانات وجداول وأشياء أخرى.
- ALTER: لتعديل بنية الجداول الموجودة.
- DROP: لحذف قواعد البيانات والجداول والعناصر الأخرى.
- TRUNCATE: لحذف جميع البيانات من جدول مع الاحتفاظ ببنيته.
- RENAME: لإعادة تسمية الجداول أو الأعمدة.
أوامر DDL الأساسية
1. CREATE
يُستخدم أمر CREATE لإنشاء كائنات جديدة في قاعدة البيانات، مثل قواعد البيانات نفسها، الجداول، الفهارس، والإجراءات المخزنة.
إنشاء قاعدة بيانات
CREATE DATABASE اسم_قاعدة_البيانات;
مثال:
CREATE DATABASE مدرسة;
إنشاء جدول
CREATE TABLE اسم_الجدول (
عمود1 نوع_البيانات [قيود],
عمود2 نوع_البيانات [قيود],
...
);
مثال:
CREATE TABLE الطلاب (
معرف INT PRIMARY KEY AUTO_INCREMENT,
الاسم VARCHAR(100) NOT NULL,
العمر INT,
تاريخ_الانضمام DATE
);
2. ALTER
يُستخدم أمر ALTER لتعديل بنية الكائنات الموجودة في قاعدة البيانات. يمكن استخدامه لإضافة أو حذف أو تعديل الأعمدة، أو لإضافة قيود جديدة.
إضافة عمود جديد
ALTER TABLE اسم_الجدول
ADD عمود_جديد نوع_البيانات [قيود];
مثال:
ALTER TABLE الطلاب
ADD البريد_الإلكتروني VARCHAR(100);
تعديل نوع بيانات عمود
ALTER TABLE اسم_الجدول
MODIFY عمود نوع_البيانات_الجديد;
مثال:
ALTER TABLE الطلاب
MODIFY العمر SMALLINT;
حذف عمود
ALTER TABLE اسم_الجدول
DROP COLUMN عمود;
مثال:
ALTER TABLE الطلاب
DROP COLUMN تاريخ_الانضمام;
3. DROP
يُستخدم أمر DROP لحذف كائنات كاملة من قاعدة البيانات، مثل الجداول أو قواعد البيانات نفسها. يجب استخدام هذا الأمر بحذر لأنه يؤدي إلى فقدان البيانات بشكل دائم.
حذف جدول
DROP TABLE اسم_الجدول;
مثال:
DROP TABLE الطلاب;
حذف قاعدة بيانات
DROP DATABASE اسم_قاعدة_البيانات;
مثال:
DROP DATABASE مدرسة;
4. TRUNCATE
يُستخدم أمر TRUNCATE لحذف جميع البيانات من جدول معين مع الاحتفاظ ببنية الجدول والمفاتيح والقيود. يُعتبر أسرع من استخدام أمر DELETE بدون شرط WHERE لأنه لا يسجل عمليات الحذف بشكل فردي.
TRUNCATE TABLE اسم_الجدول;
مثال:
TRUNCATE TABLE الطلاب;
5. RENAME
يُستخدم أمر RENAME لإعادة تسمية كائن موجود في قاعدة البيانات مثل الجدول أو العمود.
إعادة تسمية جدول
RENAME TABLE الاسم_الحالي TO الاسم_الجديد;
مثال:
RENAME TABLE الطلاب TO المتدربين;
إعادة تسمية عمود (في بعض أنظمة إدارة قواعد البيانات)
في MySQL:
ALTER TABLE اسم_الجدول
CHANGE COLUMN الاسم_الحالي الاسم_الجديد نوع_البيانات;
مثال:
ALTER TABLE المتدربين
CHANGE COLUMN العمر سن INT;
في PostgreSQL:
ALTER TABLE اسم_الجدول
RENAME COLUMN الاسم_الحالي TO الاسم_الجديد;
مثال:
ALTER TABLE المتدربين
RENAME COLUMN سن TO العمر;
مزايا استخدام أوامر DDL
- تحكم كامل في بنية قاعدة البيانات: تمكن أوامر DDL من إنشاء وتعديل الهياكل التنظيمية لقاعدة البيانات بما يتناسب مع احتياجات التطبيق.
- تحسين الأداء: من خلال إنشاء الفهارس والجداول بشكل صحيح، يمكن تحسين أداء عمليات الاستعلام.
- تطبيق القيود: تساعد أوامر DDL في تطبيق القيود على البيانات مثل المفاتيح الأساسية والخارجية، مما يحافظ على سلامة البيانات.
- الصيانة والتنظيم: تسهل عملية صيانة قاعدة البيانات وتنظيمها من خلال تعديل الجداول والأعمدة حسب الحاجة.
ممارسات جيدة عند استخدام أوامر DDL
- النسخ الاحتياطي: قبل تنفيذ أوامر DDL التي قد تؤدي إلى فقدان البيانات مثل DROP أو TRUNCATE، يجب دائمًا أخذ نسخة احتياطية من قاعدة البيانات.
- استخدام بيئات التطوير: يُفضل تجربة أوامر DDL في بيئة تطوير أو اختبار قبل تنفيذها في بيئة الإنتاج.
- توثيق التغييرات: تسجيل التغييرات التي تتم على هيكل قاعدة البيانات يساعد في تتبع التعديلات وحل المشكلات المستقبلية.
- استخدام القيود بفعالية: تطبيق القيود بشكل صحيح يحافظ على سلامة البيانات ويمنع إدخال بيانات غير صحيحة أو متضاربة.
أمثلة تطبيقية على أوامر DDL
إنشاء قاعدة بيانات وجداول متعددة مع علاقات
-- إنشاء قاعدة بيانات
CREATE DATABASE مكتبة;
-- استخدام قاعدة البيانات
USE مكتبة;
-- إنشاء جدول المؤلفين
CREATE TABLE المؤلفين (
معرف_المؤلف INT PRIMARY KEY AUTO_INCREMENT,
الاسم VARCHAR(100) NOT NULL,
تاريخ_الميلاد DATE
);
-- إنشاء جدول الكتب
CREATE TABLE الكتب (
معرف_الكتاب INT PRIMARY KEY AUTO_INCREMENT,
عنوان VARCHAR(200) NOT NULL,
معرف_المؤلف INT,
سنة_النشر INT,
FOREIGN KEY (معرف_المؤلف) REFERENCES المؤلفين(معرف_المؤلف)
);
تعديل جدول بإضافة عمود جديد وتغيير نوع بيانات
-- إضافة عمود جديد إلى جدول الكتب
ALTER TABLE الكتب
ADD عدد_الصفحات INT;
-- تغيير نوع بيانات عمود سنة النشر
ALTER TABLE الكتب
MODIFY سنة_النشر SMALLINT;
حذف جدول وإعادة إنشاءه
-- حذف جدول المؤلفين
DROP TABLE المؤلفين;
-- إعادة إنشاء جدول المؤلفين مع عمود جديد
CREATE TABLE المؤلفين (
معرف_المؤلف INT PRIMARY KEY AUTO_INCREMENT,
الاسم VARCHAR(100) NOT NULL,
تاريخ_الميلاد DATE,
الجنسية VARCHAR(50)
);
إعادة تسمية جدول وعمود
-- إعادة تسمية جدول الكتب إلى المؤلفات
RENAME TABLE الكتب TO المؤلفات;
-- إعادة تسمية عمود عدد الصفحات إلى صفحات
ALTER TABLE المؤلفات
CHANGE COLUMN عدد_الصفحات صفحات INT;
الفرق بين DDL و DML و DCL
لفهم أوامر DDL بشكل أفضل، من المهم تمييزها عن أنواع أخرى من أوامر SQL:
- DDL (Data Definition Language): تُستخدم لتعريف وتعديل بنية قاعدة البيانات (مثل CREATE، ALTER، DROP).
- DML (Data Manipulation Language): تُستخدم لإدارة البيانات داخل الجداول (مثل INSERT، UPDATE، DELETE، SELECT).
- DCL (Data Control Language): تُستخدم للتحكم في صلاحيات الوصول إلى قاعدة البيانات (مثل GRANT، REVOKE).
التعامل مع DDL في بيئات متعددة
تختلف بعض أوامر DDL باختلاف أنظمة إدارة قواعد البيانات (DBMS)، لذا من المهم معرفة الاختلافات عند العمل في بيئات متعددة.
MySQL
- يدعم معظم أوامر DDL القياسية.
- يستخدم
AUTO_INCREMENT
لتوليد القيم التلقائية للأعمدة. - لإعادة تسمية الأعمدة، يستخدم
CHANGE COLUMN
.
PostgreSQL
- يدعم أوامر DDL القياسية مع بعض الإضافات.
- يستخدم
SERIAL
لتوليد القيم التلقائية للأعمدة. - لإعادة تسمية الأعمدة، يستخدم
RENAME COLUMN
.
SQL Server
- يدعم أوامر DDL القياسية مع بعض الفروق.
- يستخدم
IDENTITY
لتوليد القيم التلقائية للأعمدة. - لإعادة تسمية الأعمدة، يستخدم
sp_rename
.
مثال لإعادة تسمية عمود في SQL Server:
EXEC sp_rename 'المؤلفات.صفحات', 'عدد_الصفحات', 'COLUMN';
ملخص
أوامر DDL وهى أختصار Data Definition Language اتكلمنا فى الدرس الاول على كيفية انشاء قاعدة بيانات وقمنا بانشاء قاعدة بيانات باسم firstdb
وذلك بالكود كالاتى
create database firstdb;
وعرفنا الكود الخاص بحذف قاعدة البيانات وهو
drop database firstdb;
النهاردة هنتكلم على كيفية انشاء الجدول :
لانشاء جدول ايضا نستخدم الامر create كالتالى :
يجب اولا تحديد العناصر التالية قبل البدء فى انشاء الجدول .
١_اسم الجدول table name واسم الجدول يجب الا يتكرر فى نفس قاعدة البيانات .
٢_اسماء الاعمدة columns name واسماء الاعمدة يجب الا تتكرر فى نفس الجدول .
٣_نوع البيانات data type وهنا هنوضح بس اهم انواع البيانات
Varchar نوع البيانات نصى بس متغير بمعنى لوكان حجم البيانات مثلا ١٠ بينما تم ادخال حجم بيانات ٥ يتم حجز ٥ فقط .
char : نوع البيانات نصى بس ثابت بمعنى لوكان حجم البيانات ١٠ بينما تم ادخال حجم بيانات ٥ يتم حجز مساحة ١٠ بالكامل .
int : نوع البيانات رقمى Float,double نوع البيانات عشرى
date : نوع البيانات تاريخ
صيغة انشاء الجداول
create table tableName
( column1 data type (size),
column2 data type (size),
نلاحظ ان صيغة انشاء الجدول هى نفس عناصر الجدول السابق ذكرها .
نبداء بالامر create يليها نوع عنصر قاعدة البيانات المراد انشائة وهو هنا table ثم اسم الجدول وبعدة نفتح قوسين ونكتب بداخلهم عناصر الجدول وهى اسماء الاعمدة ونوع البيانات وحجمها يفصلها coma .
وتنتهى عبارة الانشاء ب semicolon .
مثال : لو اردنا انشاء جدول الادارات departments يحتوى على حقل لرقم الادارة dept_no وحقل اسم الادارة dept_name
create table departments
(dept_no int (5),
dept_name varchar(20)
);
و عندما نريد عرض الهيكل الخاص بالجدول نستخدم الامر
describe tableName;
describe departments;
ولحذف الجدول نستخدم الامر
drop table tableName;
الخاتمة
تُعتبر أوامر DDL جزءًا لا يتجزأ من إدارة قواعد البيانات، حيث تُمكّن المطورين ومديري قواعد البيانات من بناء وصيانة الهياكل التنظيمية للبيانات بشكل فعال. فهم كيفية استخدام هذه الأوامر بعمق يُعد مهارة أساسية لأي متخصص في مجال قواعد البيانات.
من خلال هذا الدليل، حاولنا تقديم نظرة شاملة ومفصلة على أوامر DDL المختلفة، موضحين كيفية استخدامها مع أمثلة عملية. نأمل أن يكون هذا المقال قد ساعدك في تعزيز فهمك لأوامر DDL وكيفية تطبيقها في مشاريعك الخاصة.
مراجع إضافية
- وثائق MySQL: https://dev.mysql.com/doc/
- وثائق PostgreSQL: https://www.postgresql.org/docs/
- وثائق SQL Server: https://docs.microsoft.com/sql/
- كتاب “SQL: The Complete Reference”: دليل شامل لتعلم SQL وأوامره المختلفة.
drop table departments;