إنشاء جدول CREATE TABLE

من موسوعة حسوب
< SQL

يستخدم هذا الأمر لإنشاء جدولٍ جديدٍ في قاعدة البيانات وفق البنية العامّة الآتية:

CREATE TABLE [ IF NOT EXISTS ] tbl_name ( [
  { col_name data_type [ column_constraint [ ... ] | table_constraint }
    [, ... ]
] )

إذ يُنشأ الجدول الجديد باسم tbl_name وتُحدَّد أعمدته ما بين القوسين وذلك بتحديد اسم العمود col_name ونوع بياناته data_type وتحديد القيود على مستوى العمود أو الجدول.

قيود العمود

يُمكن ضبط بعض القيود على العمود مثل:

القيد دلالته
NOT NULL ألا تكون قيمة الحقل NULL
DEFAULT default_expr لتحديد القيمة الافتراضية للحقل
UNIQUE ألا تتكرر القيم ما بين السجلات ضمن نفس الحقل (العمود)
PRIMARY KEY لتحديد العمود كمفتاح أولي للجدول
REFERENCES reftable [ ( refcolumn )]‎ لتحديد العمود refcolum كمفتاح ثانوي بمرجعية للجدول reftable

قيود الجدول

يُمكن تحديد بعض القيود على مستوى الجدول مثل:

القيد دلالته
UNIQUE ( column_name [, ... ] )‎ عدم تكرار القيم ما بين السجلات ضمن الحقل (العمود) المحدد
PRIMARY KEY ( column_name [, ... ] )‎ لتحديد العمود (أو الأعمدة) ما بين القوسين كمفتاح أولي للجدول
FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]‎ لتحديد العمود (أو الأعمدة) ما بين القوسين كمفتاح ثانوي بمرجعية للجدول reftable

مثال

لإنشاء الجدول الآتي باسم students:

StudentID FirstName LastName E-mail CourseID RegDate

والذي يحتوي على 5 أعمدة بأنواع بيانات مختلفة على ألا يتكرر عنوان البريد الالكتروني بين أكثر من طالب وألا يكون حقل تاريخ التسجيل فارغًا، ويكون حقل StudentID مفتاحًا أوليًا وحقل CourseID مفتاحًا ثانويًا يربط هذا الجدول مع جدول آخر (courses)، ولتحقيق ذلك يستخدم الأمر الآتي:

CREATE TABLE students (
    StudentID    INT         PRIMARY KEY,
    FirstName    VARCHAR(20) ,
    LastName     VARCHAR(20) ,
    E-mail       VARCHAR(50) UNIQUE,
    CourseID     INT         REFERENCES courses (courseID),
    RegDate      DATE        NOT NULL      
);

التوافقية

SQLServer SQLite Oracle PostgreSQL MySQL
نعم نعم نعم نعم نعم

مصادر