إنشاء الجداول في SQL: دليل شامل للمبتدئين والمحترفين

دقائق القراءة: 7

مقدمة إلى عالم جداول SQL: الأساس المتين لقواعد البيانات

تُعد لغة الاستعلام الهيكلية SQL (Structured Query Language) واحدة من أكثر لغات الاستعلام موثوقية ووضوحًا في عالم قواعد البيانات. تتميز ببساطة تركيبها وسهولة قراءتها، مما يجعلها أداة لا غنى عنها لإدارة البيانات دون تعقيدات مفرطة. إذا كنت مهتمًا بتاريخ هذه اللغة وحقائقها الشيقة، يمكنك الاطلاع على المقال التمهيدي حول عبارة تحديث البيانات في SQL.

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

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

صورة لمستودع يحتوي على أرفف منظمة، تمثل هيكل قواعد البيانات والجداول

هذا التبسيط يهدف إلى إيصال الفكرة الأساسية، وهناك الكثير لنتعلمه عن جداول SQL يتجاوز نطاق هذا المقال. إذا كنت تتطلع إلى شرح أكثر تعمقًا للجداول، فإنني أشجعك على الغوص في وثائق تصميم قواعد البيانات من مايكروسوفت.

أنواع البيانات في SQL: حجر الزاوية في تصميم الجداول

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

التصنيفات الشاملة لأنواع البيانات:

  • الأرقام التقريبية (Approximate Numerics)
  • السلاسل النصية (Strings)
  • التاريخ والوقت (Date & Time)
  • سلاسل الأحرف الموحدة (Unicode Character Strings)
  • الأرقام الدقيقة (Exact Numerics)
  • أنواع أخرى (Other)

سأدرج أدناه بعض أنواع البيانات الأكثر شيوعًا، ولكن إذا كنت ترغب في معرفة المزيد عن جميع أنواع البيانات، أدعوك للاطلاع على هذا المقال الشامل حول كل نوع من مايكروسوفت. فيما يلي الأنواع الأكثر استخدامًا من تجربتي، بدون ترتيب معين:

  • char(size): سلسلة نصية ذات طول ثابت يمكن أن تحتوي على أحرف، أرقام، وحروف خاصة.
  • varchar(size): سلسلة نصية ذات طول متغير يمكن أن تحتوي على أحرف، أرقام، وحروف خاصة.
  • boolean: قيمة منطقية، حيث الصفر (أو القيم التي تعادل الصفر) تعني false، وأي قيمة غير صفرية تعني true.
  • int(size optional): رقم يصل طوله إلى 10 أحرف، يقبل الأرقام السالبة والموجبة.
  • bigint(size optional): رقم يصل طوله إلى 19 حرفًا، يقبل الأرقام السالبة والموجبة.
  • float(size, d): رقم عشري حيث يمثل size العدد الإجمالي للأرقام، ويمثل d عدد الأرقام بعد الفاصلة العشرية.
  • date: تاريخ بالتنسيق YYYY-MM-DD.
  • datetime: تاريخ ووقت بالتنسيق YYYY-MM-DD hh:mm:ss.
  • time: وقت بالتنسيق hh:mm:ss.

الآن بعد أن عرفنا أنواع البيانات التي يمكن أن تحتويها الصفوف والأعمدة، دعنا ننتقل إلى الجزء الممتع!

إنشاء جدول جديد في SQL: الخطوات الأساسية والقيود المتقدمة

صورة لشخص يعمل على جهاز كمبيوتر، ترمز لعملية إنشاء الجداول البرمجية

قبل أن نبدأ، من المهم ملاحظة أنني سأقدم جميع أمثلتي بشكل مستقل عن أي برنامج. ومع ذلك، إذا كنت ترغب في البدء بكتابة الاستعلامات ولم تكن متأكدًا من أين تبدأ، ألقِ نظرة على SQL Server Management Studio. إنه برنامج مجاني وقوي يستخدم على نطاق واسع ومدعوم في المجتمع. بدلاً من ذلك، هناك العديد من الخيارات بما في ذلك DB Fiddle التي تسمح لك بإنشاء المخططات وكتابة الاستعلامات مباشرة في متصفحك.

لنبدأ بعبارة بسيطة لإنشاء جدول أساسي:

CREATE TABLE table_name (
    column1_name datatype,
    column2_name datatype,
    column3_name datatype,
    column4_name datatype,
    column5_name datatype
);

هناك معلمات أخرى يمكننا إضافتها بعد datatype لتعزيز الأعمدة:

  • NOT NULL: يضمن هذا المعامل أن العمود لا يمكن أن يحتوي على قيمة NULL (فارغة).
  • UNIQUE: يمنع هذا المعامل العمود من الاحتفاظ بنفس القيمة أكثر من مرة.
  • UNIQUE KEY: يحدد هذا المعامل العمود كمُعرف فريد. إنه في الأساس مزيج من المعاملين السابقين (NOT NULL و UNIQUE).

الآن، سنقوم بإنشاء جدول (يُسمى doggo_info، والذي يجب أن يلتزم بمعايير المعرفات لقواعد البيانات) للاحتفاظ بمعلومات عن نزلاء Woof Woof Retreat، وهو مركز رعاية كلاب خيالي خطر ببالي للتو 🙂

CREATE TABLE doggo_info (
    ID int UNIQUE KEY,
    Name varchar(50) NOT NULL,
    Color varchar(50),
    Breed varchar(50),
    Age int,
    Weight int,
    Height int,
    Fav_Food varchar(100),
    Fav_Toy varchar(100),
    Dislikes varchar(500),
    Allergies varchar(500) NOT NULL
);

وهنا الجدول الجديد الذي أنشأناه للتو، مع ملاحظة أنه سيكون فارغًا تمامًا لأننا لم نضف إليه أي بيانات بعد. إضافة البيانات تتجاوز نطاق هذا المقال، ولكن أردت أن تكون على دراية بهذه المعلومة.


Name Color Breed Age Weight Height Fav_Food Fav_Toy Dislikes Allergies

إنشاء جدول من جدول موجود: الاستفادة من البيانات الحالية

من الممكن أيضًا إنشاء جدول جديد بناءً على جدول موجود. هذه العملية سهلة جدًا ولا تتطلب الكثير من التركيب الإضافي. نحتاج إلى تحديد الجدول والأعمدة المراد “نسخها” منه:

CREATE TABLE new_table_name AS
SELECT column1, column2, column3, column4
FROM current_table_name
WHERE conditions_exist;

(استخدم * لتحديد جميع الأعمدة المراد إضافتها إلى new_table_name)

لغرض السرعة، قمت بإضافة بعض البيانات إلى جدول doggo_info الخاص بنا، وهو الآن يبدو كالمثال أدناه:

Name Color Breed Age Weight Height Fav_Food Fav_Toy Dislikes Allergies
daisy red standard dachshund 1 14 6 salmon flavored kibble squeeky ball birds flying over the yard cats, baths, cleanliness
chief black/tan rottweiler 3 41 17 literally anything rope tug staying off the couch listening, behaving, not slobbering on everything
sammie light honey golden retriever 9 46 19 beef flavored kibble her bed rambutcious puppies none known

الآن يمكننا إنشاء جدول آخر بناءً على البيانات الموجودة في جدول doggo_info الخاص بنا عن طريق تشغيل الاستعلام أدناه:

CREATE TABLE puppies_only AS
SELECT * FROM doggo_info
WHERE Age < 4;

نريد إنشاء جدول جديد بجميع الأعمدة من جدول doggo_info ولكن فقط حيث يكون Age (العمر) أقل من 4. بعد تشغيل هذا الاستعلام، سيبدو جدولنا الجديد هكذا:

Name Color Breed Age Weight Height Fav_Food Fav_Toy Dislikes Allergies
daisy red standard dachshund 1 14 6 salmon flavored kibble squeeky ball birds flying over the yard cats, baths, cleanliness
chief black/tan rottweiler 3 41 17 literally anything rope tug staying off the couch listening, behaving, not slobbering on everything

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

خاتمة: إتقان إنشاء الجداول في SQL

الآن بعد أن عرفت كيفية إنشاء (أو نسخ) جدول في SQL بغض النظر عن الموقف الذي تواجهه، يمكنك البدء في ملء الأعمدة والصفوف بالبيانات لتخزينها! عبارة CREATE TABLE مفيدة وقوية للغاية. أنت جاهز للبدء في استخدامها بشكل جيد.

إذا وجدت هذا المقال مفيدًا، فلا تتردد في استكشاف مدونتي حيث أنشر بانتظام مقالات حول تطوير الويب، الحياة، والتعلم. أثناء وجودك هناك، لماذا لا تشترك في نشرتي الإخبارية؟ يمكنك القيام بذلك في الجزء العلوي الأيمن من صفحة المدونة الرئيسية. أحب إرسال مقالات شيقة (خاصة بي ولآخرين)، موارد، وأدوات للمطورين بين الحين والآخر. إذا كانت لديك أسئلة حول هذا المقال أو بشكل عام، فلا تتردد في التواصل معي على تويتر أو أي من حساباتي الأخرى على وسائل التواصل الاجتماعي التي يمكنك العثور عليها أسفل تسجيل النشرة الإخبارية في الصفحة الرئيسية لمدونتي أو في ملفي الشخصي هنا في fCC 🙂

أتمنى لك يومًا رائعًا! تعلم سعيد وبرمجة سعيدة يا صديقي!

الخلاصة التقنية

يُعد إتقان عبارة CREATE TABLE في SQL خطوة أساسية لكل مطور أو مهندس قواعد بيانات. فهي ليست مجرد أمر لإنشاء هيكل، بل هي بوابة لتنظيم البيانات بكفاءة، وتطبيق قيود السلامة مثل NOT NULL و UNIQUE KEY لضمان تكامل البيانات. القدرة على إنشاء جداول جديدة من جداول موجودة باستخدام CREATE TABLE AS SELECT تُظهر مرونة SQL وقدرتها على التعامل مع السيناريوهات المعقدة لإدارة البيانات، مما يوفر وقتًا وجهدًا كبيرين في عمليات ترحيل البيانات أو إنشاء بيئات اختبار. فهم أنواع البيانات المختلفة وكيفية اختيار الأنسب لكل عمود هو مفتاح تصميم قاعدة بيانات قوية وفعالة، تقلل من هدر المساحة وتحسن أداء الاستعلامات. هذه المعرفة تشكل الأساس لبناء أنظمة بيانات قابلة للتطوير وموثوقة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *