آشنایی با دستور CREATE جهت ساخت پایگاه داده و جدول


در این آموزش به معرفی دستور CREATE می‌پردازیم که جهت ساخت پایگاه داده و جدول به کار می‌رود. به طور کلی، از این دستور به منظور ایجاد یک دیتابیس جدید و یا آبجکت‌های مربوط به دیتابیس مانند جداول، ایندکس‌ها، فانکشن‌ها، ویوها، تریگِرها و غیره استفاده می‌شود که سینتکسی به صورت زیر دارا است:

CREATE DATABASE database_name;

به عنوان مثال، برای ایجاد دیتابیسی جدید تحت عنوان sokanacademy به صورت زیر از دستور CREATE استفاده خواهیم کرد:

CREATE DATABASE sokanacademy;

پس از ایجاد یک دیتابیس جدید، جهت ذخیره‌سازی دیتای مد نظر خود نیاز به یکسری جداول داریم که برای ساخت آن‌ها هم می‌توان از دستور CREATE TABLE استفاده کرد. نیاز به توضیح نیست که هر جدولی از تعدادی سطر و ستون‌ تشکیل شده است و از همین روی در حین ایجاد جداول می‌باید تمامی اطلاعات مربوطه شامل نام هر ستون، دیتا تایپ و اندازهٔ دیتایی که قرار است در هر ستون ذخیره شود به علاوهٔ دیگر اطلاعات مربوطه را نیز مشخص کنیم. بدین ترتیب، جهت ساخت یک جدول می‌توان از سینتَکس زیر استفاده کرد:

CREATE TABLE table_name (
    column_name1 datatype(size),
    column_name2 datatype(size),
    column_name3 datatype(size),
    ...
);

همان‌طور که مشاهده می‌کنید، هر ستون از جدول حداقل دارای یک نام و دیتا تایپ است. به طور کلی، از پرکاربردترین دیتا تایپ‌ها می‌توان به موارد زیر اشاره کرد:

دیتاتایپ توضیح
CHAR جهت نگهداری اِسترینگ با طول ثابت استفاده می‌شود که مقدار ثابت آن باید داخل پرانتز مشخص گردد و این در حالی است که این نوع دیتا تایپت می‌تواند تا ۲۵۵ کاراکتر را درخود ذخیره سازد.
VARCHAR جهت نگهداری اِسترینگ با طول متغیر استفاده می‌شود بدین ترتیب که حداکثر طول اِسترینگ باید داخل پرانتز مشخص شود به طوری که این نوع دیتا تایپت می‌تواند تا ۲۵۵ کاراکتر را ذخیره کند.
TEXT جهت نگهداری اِسترینگ با حداکثر طول ۶۵۵۳۵ کاراکتر استفاده می‌شود.
INT به صورت پیش‌فرض جهت نگهداری اعداد در بازهٔ ۲۱۴۷۴۸۳۶۴۸- تا ۲۱۴۷۴۸۳۶۴۸ استفاده می‌شود ولی در صورت ذکر کیورد UNSIGNED هنگام تعریف یک فیلد، اعداد در دامنهٔ ۰ تا ۴۲۹۴۹۶۷۲۹۵ را نگهداری می‌کند (نیاز به توضیح است که حداکثر تعداد ارقام قابل‌نگهداری باید در داخل پرانتز مشخص شود.)

TINYINT

به صورت پیش‌فرض جهت نگهداری اعداد در دامنهٔ ۱۲۸- تا ۱۲۷ استفاده می‌شود ولی در صورت ذکر کیورد UNSIGNED هنگام تعریف یک فیلد، اعدادی در دامنهٔ ۰ تا ۲۵۵ را نگهداری می‌کند (نیاز به توضیح است که حداکثر تعداد ارقام قابل‌نگهداری باید در داخل پرانتز مشخص شود.)
FLOAT  جهت نگهداری اعداد اعشاری نه چندان بزرگ استفاده می‌شود.
DATE جهت نگهداری تاریخ با فرمت YYYY-MM-DD (سال-ماه-روز) استفاده می‌شود.
DATETIME جهت نگهداری ترکیبی از تاریخ و زمان با فرمت YYYY-MM-DD HH:MI:SS (سال-ماه-روز ساعت-دقیقه-ثانیه) استفاده می‌شود.

حال با توجه به توضیحات فوق قصد داریم جدولی به نام articles در دیتابیس sokanacademy ایجاد کنیم که برای انجام این کار می‌توان از دستور CREATE TABLE به صورت زیر استفاده کرد:

CREATE TABLE articles (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    content TEXT,
    published DATETIME
);

به عنوان خروجی دستور فوق، یک جدول با نام articles که دارای چهار فیلد content ،title ،id و published است در دیتابیس sokanacademy ایجاد خواهد شد (همان‌طور که مشاهده می‌کنید فیلد id در جدول articles دارای دو اصطلاحاً Constraint است که عبارتند از PRIMARY KEY و AUTO_INCREMENT که در ادامه به معرفی این دو مورد خواهیم پرداخت.) همچنین استفاده از کلیدواژگان NOT NULL برای فیلد title به این معنی است که هنگام ایجاد یک رکورد جدید، مقدار این فیلد نمی‌تواند خالی باشد.

آشنایی با مفهوم Auto Increment 
معمولاً در هر جدولی فیلد id به صورت AUTO_INCREMENT تعریف می‌شود که این کار باعث مقداردهی اتوماتیک این فیلد توسط سیستم مدیریت پایگاه داده در حین ایجاد یک رکورد جدید می‌گردد. به طور معمول، مقداردهی به این فیلد از عدد ۱ شروع می‌شود و با هر بار افزودن یک رکورد جدید به جدول، مقدار فیلد id رکورد جدید یک واحد از مقدار رکورد قبلی بیشتر است. به عنوان مثال، فرض کنید می‌خواهیم دو مقاله به صورت زیر به جدول articles اضافه کنیم:

INSERT INTO articles (title, content, published)
VALUES ('What is a DataBase', 'This is a sample content.', NOW());

INSERT INTO articles (title, content, published)
VALUES ('SQL For Beginners', 'This is an other sample content.', NOW());

نتیجهٔ دو دستور فوق موجب می‌شود تا دو رکورد به شکل زیر به این جدول اضافه گردد:

+----+--------------------+----------------------------------+---------------------+
| id |        title       |             content              |      published      |
+----+--------------------+----------------------------------+---------------------+
|  1 | What is a DataBase | This is a sample content.        | 2018-08-21 03:04:18 |
|  2 | SQL For Beginners  | This is an other sample content. | 2018-08-21 03:14:29 |
+----+--------------------+----------------------------------+---------------------+

همان‌طور که مشاهده می‌کنید، مقدار فیلد id هر رکورد که به صورت خودکار مقداردهی شده است به اندازهٔ یک واحد از رکورد قبلی خود بیشتر است (دقت داشته باشید که در کوئری فوق از فانکشن از پیش تعریف شده در مای‌اس‌کیو‌ال به نام ()NOW استفاده کرده‌ایم که تاریخ و زمان فعلی سیستم را ریترن می‌کند که جهت مقداردهی به فیلد published استفاده شده است.)

آشنایی با مفهوم Primary Key 
کلید اصلی یا اصطلاحاً Primary Key یک شناسهٔ منحصربه‌فرد مانند شمارهٔ ملی و یا شماره تلفن در برخی جداول دیتابیس‌های رابطه‌ای است به طوری که مقدار فیلدی که به عنوان کلید اصلی انتخاب شده است نمی‌تواند تکراری و یا خالی باشد که معمولاً در دیتابیس‌های رابطه‌ای فیلد id را به عنوان Primary Key هر جدول در نظر می‌گیرند تا بتوان با استفاده از این فیلد، هر موجودیت از جدول را برای انجام تَسک‌هایی همچون آپدیت، حذف و ... شناسایی کرد.


لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
عبدالحمید ارجمند
عبدالحمید ارجمندتوسعه دهنده ی اندروید با زبان جاوا
۱۳۹۸/۱۲/۰۱
با سلام ، انتظار داشتم این دوره ، برای مبتدیان باشه ، یا این که حداقل از ابتدای دوره ذکر می‌شد که بریا مبتدیان نیست. از این جهت میگم که من این مقاله رو از مقدمه دنبال کرده ام تا به اینجا رسیده ام ، میبنیم که نمیتونم با دستورات بالا کار کنم ؟ نیت خیری که نویسنده داشته را تحسین میکنم ، اما کاش 2 در قبل از این وجود داشت که توضیح میداد انی دستورات را درکجا باید پیاده سازی کنم ؟ مطمئنا شما از من نمیخواهید که در محیط CMD دستورات را وارد کنم. خیلی دور از انتظار بود برام. این مقاله از صفر شروع کرده اما در میانه ی راه دچار یک پرش شده. بنظرم دتسورات موجود میتونه برای شخصی که قبلا دوره‌ای رو گذرونده مفید واقع بشه ، طوری که بیاد به کدها و عملکرد هر کد نگاه بندازه ، در این صورت میتونید کدها را در یک صفحه جمع‌آوری کنید و تحت یک مقاله وارد کنید ، چون دیگه دوره ی آموزشی نخواهد بود. از طرفی اگر مرجعی باشد برای کسانی که دوره دیده اند ، نیاز هست تا مقدمه و سایر توضیحات را حذف کنید. امیدوارم آموزشی چند قسمتی هرچند کوتاه درست کنید تا توضیح دهد که این دستورات را در کجا و چگونه وارد کنیم ؟ سکان آکادمی پایدار
Milad khaghanirad
Milad khaghanirad
۱۳۹۸/۰۴/۰۵
ممنون از جناب آقای اسدی.

نکته قابل‌توجه اینه که حتی در صورت حذف یک id در حالت Auto_Increment ، اون مقدار قابل استفاده مجدد نخواهد بود.