در این آموزش به معرفی دستور 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 هر جدول در نظر میگیرند تا بتوان با استفاده از این فیلد، هر موجودیت از جدول را برای انجام تَسکهایی همچون آپدیت، حذف و ... شناسایی کرد.