شنبه ۲۲ شهریور ۱۴۰۴

Saturday, September 13, 2025 GMT +3:30

ساخت دیتابیس، جدول و ستون با دستور CREATE در MySQL

mysql-create-table

شیوه دستی ایجاد پایگاه داده در برنامه phpMyAdmin به خودی خود روش مناسبی است اما برنامه نویسان وب عموما با کدنویسی و دنیای کدها سر و کار دارند و تمرکز آموزش های پیش رو نیز در همین چارچوب است، برای ساخت دیتابیس، جدول و ستون در برنامه نویسی PHP باید از دستور CREATE استفاده کنیم، CREATE یکی از دستورات آشنا در زبان SQL است که به کمک آن می توانیم دیتابیس، جدول و ستون های مورد نظر را با اجرای کدهای برنامه نویسی در MySQL و به کمک اکستنشن های متداول ایجاد کنیم، دقت کنیم همانطور که قبلا گفتیم پایگاه داده MySQL با اکستنشن MySQL دو مفهوم جداگانه هستند، عبارت اول اشاره به سیستم مدریت پایگاه داده MySQL دارد اما عبارت دوم یک برنامه کوچک نرم افزای در مفسر PHP است که به این زبان قابلیت ارتباط با پایگاه داده را می دهد، اکستنشن MySQL اولین اکستنشن PHP برای این منظور بوده و در حال حاضر منسوخ و قدیمی شده است، لذا بهتر است از اکستنشن های جدید مانند MySQLi یا PDO استفاده کنیم.

ساخت دیتابیس با دستور CREATE DATABASE در MySQL


علاوه بر شیوه دستی ساخت دیتابیس از طریق برنامه phpMyAdmin، کدهای PHP نیز چنین قابلیتی دارند که با برنامه نویسی بتوانیم دیتابیس مورد نیازمان را بسازیم، این کار با دستور CREATE DATABASE صورت می گیرد که در زیر دیتابیس فرضی dbname را به این روش ساخته ایم.
برنامه نویسی رویه ای (Procedural):
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password");
if(!$conn) {
    echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
    exit;
} else {
    echo "PHP & MySQL Connection: Ok!<br>";
    
    //ساخت دیتابیس
    $sql = "CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_persian_ci";
    $query = mysqli_query($conn, $sql);
    if(!$query) {
        echo "Creating Database dbname: Error! " . mysqli_error($conn);
    } else {
        echo "Creating Database dbname: OK!";
    }
}
//پایان اتصال
mysqli_close($conn);
?>
برنامه نویسی شی گرا (Object-oriented):
<?php
//اتصال به دیتابیس
$conn = new mysqli("localhost", "username", "password");
if(!$conn) {
    echo "PHP & MySQL Connection: Error! " . $conn->errno . ' - ' . $conn->error;
    exit;
} else {
    echo "PHP & MySQL Connection: Ok!<br>";
    
    //ساخت دیتابیس
    $sql = "CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_persian_ci";
    $conn->query($sql);
    if(!$conn) {
        echo "Creating Database dbname: Error! " . $conn->error;
    } else {
        echo "Creating Database dbname: OK!";
    }
}
//پایان اتصال
$conn->close();
?>
همان طور که در نمونه کد بالا ملاحظه می کنید دستور CREATE به تنهایی کاربردی ندارد و در کنار پارامترهای دیگر کامل می شود، برای ساخت دیتابیس باید در کنار CREATE از دستور DATABASE استفاده کنیم، همچنین برای اعمال تنظیمات دلخواه پارامترهای دیگری مانند DEFAULT CHARACTER SET و COLLATE استفاده شده که کارکرد مشابهی با حالت دستی در برنامه phpMyAdmin دارند، این دستورات یونیکد پیش فرض دیتابیس را تعیین می کنند که برای سازگاری با زبان فارسی باید مقدار utf8 و utf8_persian_ci برای آنها در نظر گرفته شود، ci در عبارت utf8_persian_ci مخفف case-insensitive و به معنی غیرحساس به حروف بزرگ و کوچک است.
نکته 1: قبل از اجرای دستورات باید اطلاعات مورد نیاز را در قسمت username و password مطابق با حساب کاربری پایگاه داده در کد جایگزین کنیم، در لوکال هاست نام کاربری معمولا root و بدون کلمه عبور است، همچنین در قسمت dbname می توانیم نام دیگری برای پایگاه داده در نظر بگیریم.
نکته 2: تابع mysqli_query و متد query در اکستنشن MySQLi جهت اجرای فرآیند پرس و جو بین کدهای PHP و دیتابیس MySQL کاربرد دارند.

ساخت جدول و ستون با دستور CREATE TABLE


پس از ساختن دیتابیس با دستور CREATE DATABASE نوبت به ایجاد جداول و ستون ها است که این کار با دستور CREATE TABLE انجام می شود، در نمونه کد زیر با استفاده از این دستور جدول فرضی tblname را با چند ستون id، name و status ساخته ایم.
برنامه نویسی رویه ای (Procedural):
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password", "dbname");
if(!$conn) {
    echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
    exit;
} else {
    echo "PHP & MySQL Connection: Ok!<br>";
    
    //ساخت جدول و ستون ها
    $sql = "CREATE TABLE tblname(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    status TINYINT(1) DEFAULT 0)
    ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci"
;
    $query = mysqli_query($conn, $sql);
    if(!$query){
        echo "Creating Table tblname: Error! " . mysqli_error($conn);
    } else{
        echo "Creating Table tblname: OK!";
    }
}
//پایان اتصال
mysqli_close($conn);
?>
برنامه نویسی شی گرا (Object-oriented):
<?php
//اتصال به دیتابیس
$conn = new mysqli("localhost", "username", "password", "dbname");
if(!$conn) {
    echo "PHP & MySQL Connection: Error! " . $conn->errno . ' - ' . $conn->error;
    exit;
} else {
    echo "PHP & MySQL Connection: Ok!<br>";
    
    //ساخت جدول و ستون ها
    $sql = "CREATE TABLE tblname(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    status TINYINT(1) DEFAULT 0)
    ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci"
;
    $conn->query($sql);
    if(!$conn) {
        echo "Creating Table tblname: Error! " . $conn->error;
    } else {
        echo "Creating Table tblname: OK!";
    }
}
//پایان اتصال
$conn->close();
?>
در کد بالا پرس و جوی ساخت یک جدول با سه ستون id، name و status را اجرا کرده ایم و به هر ستون ویژگی هایی را متناسب با نوع و کارکرد آن نسبت داده ایم که در این مرحله از آموزش صرفا جهت آشنایی اولیه به توضیح مختصر آنها می پردازیم، مواردی مانند INT، VARCHAR و TINYINT نشان دهنده نوع داده ای است که در آن ستون ذخیره می شوند، در خصوص انواع داده در MySQL در آموزش های بعدی به طور خاص صحبت خواهیم کرد، پارامتر NOT NULL به این معنی است که ردیف های اطلاعاتی به صورت پیش فرض NULL یا خالی نیستند، AUTO_INCREMENT نیز به این معنی است که مقدار این ستون با هر INSERT اطلاعات به صورت پیش فرض افزایش پیدا می کند و نیازی به مقداردهی آن در هنگام اجرای پرس و جو نیست، پارامتر PRIMARY KEY نیز یک سیستم در MySQL است که کلید اصلی را مشخص می کند، منظور از این عبارت ایجاد کلیدهای منحصر به فرد جهت دسته بندی بهتر و جستجوی سریع تر در بین ردیف های اطلاعاتی است، در این سیستم هر ردیف در هر جدول یک کلید منحصر به فرد خواهد داشت که در هنگام بازیابی اطلاعات کار جستجو بسیار سریع تر خواهد شد، از پارامتر DEFAULT برای درج یک مقدار پیش فرض به صورت خودکار استفاده می شود، در این نمونه کد عدد 0 به عنوان مقدار پیش فرض برای ستون status در نظر گرفته شده است، پارامتر ENGINE=MyISAM برای تنظیم موتور MyISAM به عنوان موتور پیش فرض برای جدولی است که قصد ایجاد آن را داریم (Syntax آن در برخی نسخه ها به صورت TYPE=MyISAM است، در MySQL به طور معمول دو موتور MyISAM و INNODB استفاده می شوند).
نکته 1: تابع mysqli_connect در دستور CREATE TABLE چهار آرگیومنت دارد که مورد آخر نام دیتابیسی است که می خواهیم در آن جدول ساخته شود، در اینجا دیتابیسی که قبلا با دستور CREATE DATABASE ساخته بودیم (dbname) را به عنوان آرگیومنت چهارم درج کرده ایم.
نکته 2: هر درخواستی که از دیتابیس انجام می شود را در اصطلاح پرس و جو یا Query می نامند، MySQL در پرس و جوهای خود از زبانی به نام SQL استفاده می کند که مخفف Structured Query Language است.
دسته بندی: آموزش مقدماتی » MySQL
related مطالب بیشتر:
اتصال PHP به MySQL با اکستنشن MySQLi
نحوه ذخیره کردن اطلاعات با دستور INSERT در MySQL
به روز رسانی ردیف ها در MySQL با UPDATE
محدودسازی، گروه بندی و مرتب سازی نتایج در MySQL
انتخاب ردیف ها با دستور SELECT در MySQL
دیدگاه
more ۷۷ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
۲۱:۱۶ ۱۳۹۱/۰۷/۲۵
با سلام
من یک جدول جدید در دیتام ساختم و ردیف هم اضافه کردم حال اطلاعات به این جدول جدید ارسال نمیشه اما وقتی نام جدولم را عوض میکنم با توجه به یکسان بودن ردیف ها اطلاعات ذخیره میشه علت چیست خیلی خیلی فوری ممنون میشم کمکم کنید.
لطفا پرسش های خود را دقیق تر و همراه جزئیات یا نمونه کد مطرح کنید، صرف بیان مشکل به این شکل کافی نیست، در حد توضیحی که دادید پاسخ این است: نام جدول خود را با نامی که در هنگام پرس و جو در Query قرار می دهید تطابق دهید، در واقع PHP به طور خودکار کاری انجام نمی دهد مگر اینکه دستور آن را نوشته باشید، پس باید ببینید دستور وارد کردن اطلاعات در چه جدولی را نوشته اید.
پگاه
۱۶:۵۰ ۱۳۹۱/۰۶/۰۶
با سلام و تشکر از توضیحات مفیدتان
البته سوال من به نحوه ذخیره سازی در php برمی گرده اما در قسمت php چنین تاپیکی پیدا نکردم نزدیکترین تاپیک بهش همین بود
وقتی می خواهیم دکمه ذخیره سازی رو بسازیم باید از نوع submit بسازیم یا button؟
اگر از نوع submit یسازیم باید حتما فیلدها داخل form باشن و دیتاها به یک صفحه دیگه فرستاده بشن و دستور insert رو در اون صفحه بنویسیم؟
یا میشه فیلدها داخل form نباشن ودستور insert رو در همون صفحه بنویسیم؟و دراین صورت دکمه save نمی تونه از نوع سابمیت باشه ؟ و باید حتما button باشه؟
با تشکر منتظر پاسختون هستم
برای ذخیره اطلاعات یک فرم، شما می توانید فایل مقصد را هر طور که تمایل دارید در قسمت action فرم، آدرس دهی کنید، چه همان فایل و چه فایل دیگری، منتها فایل مقصد باید برای پردازش اطلاعات ارسالی آماده شده باشد، یعنی متغیرها را دریافت، اعتبار سنجی، ایمن سازی و سپس در MySQL ذخیره کند.
برای ارسال فرم، دکمه submit روش استانداردتری است، چون بدون نیاز به جاوا اسکریپت کار می کند، اما button باید حتما با جاوا اسکریپت باشد تا عمل کند، به طور مثال:
<form action="index.php" method="post">
<input type="button" value="ارسال" onclick="submit();" />
<input type="submit" value="ارسال" />
</form>
هر دوی این دکمه ها باید داخل فرم باشند و فرقی نمی کند اطلاعات فرم به چه فایلی ارسال می شود، مهم آدرس قسمت action فرم است.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
4 × 6
20 × 20
=