parsgreen.com
article

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

mysql-create-table

در بخش آموزش مقدماتی MySQL و در مطلب گذشته با کلیاتی از پرکاربرد ترین سیستم مدیریت پایگاه داده یعنی MySQL آشنا شدیم، گفتیم که دستورات مربوط به پایگاه داده از طریق برنامه phpMyAdmin به طور مستقیم قابل اعمال هستند و از طرفی کدهای php قابلیت های فراوانی برای مدیریت و اعمال همان دستورات در اختیارمان می گذارند، از آنجایی که یک برنامه خوب بیشتر تکیه بر کدها و ابزار های داینامیک دارد، لذا ما از طرح مباحث مربوط به phpMyAdmin می گذریم و به نحوه اجرای دستورات در php می پردازیم، در این مطلب نیز می خواهیم در رابطه با آموزش ساخت دیتابیس، جدول و ردیف با دستور CREATE در MySQL صحبت کنیم.

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


اگر چه ساخت دستی دیتابیس با برنامه phpMyAdmin بیشتر کاربرد دارد، اما کدهای PHP نیز این قابلیت را با دستور CREATE DATABASE دارا هستند.
<?php
$con = mysql_connect("localhost","username","password");
if (!$con){
    die('اتصال برقرار نشد: ' . mysql_error());
}
if (mysql_query("CREATE DATABASE db_name",$con)){
    echo "دیتابیس ساخته شد!";
}
else{
    echo "خطایی رخ داده است: " . mysql_error();
}
mysql_close($con);
?>
توضیح:
- پیش از اجرای هر دستوری، ابتدا باید به MySQL متصل شویم.
- mysql_connect، mysql_error، mysql_query و mysql_close از توابع درونی php هستند که برای کار با پایگاه داده مورد استفاده قرار می گیرند.

ساخت جدول و چند ردیف (ستون) با دستور CREATE


پس از ساختن دیتابیس نوبت به ایجاد جداول و ردیف ها است که این کار با دستور CREATE TABLE انجام می شود.
<?php
$con = mysql_connect("localhost","username","password");
if (!$con){
    die('اتصال برقرار نشد: ' . mysql_error());
}
mysql_select_db("db_name", $con);
mysql_query("CREATE TABLE tb_name(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
name VARCHAR(255)) ENGINE=MyISAM ")
or die(mysql_error());
echo "جدول با موفقیت ساخته شد!";
mysql_close($con);
?>
توضیح:
- در کد بالا ما query ساخت یک جدول با دو ردیف (ستون) id و table را اجرا کردیم و به هر کدام ویژگی هایی را نسبت دادیم.
- INT و VARCHAR نشان دهنده نوع داده ای است که در آن ردیف (ستون) ذخیره می شود.
- ENGINE=MyISAM برای قرار دادن موتور MyISAM به صورت پیش فرض برای جدولی است که ایجاد می کنیم (در برخی نسخه ها به صورت TYPE=MyISAM قابل قبول است)، برخی نسخه های MySQL به جای MyISAM از موتور INNODB به صورت پیش فرض استفاده می کنند.

تغییر یونیکد به UTF8 برای کار با داده های زبان فارسی با دستور ALTER TABLE


برای اینکه بتوانیم داده های خود را به زبان فارسی به درستی در دیتابیس ذخیره و بازیابی کنیم، توصیه می شود همواره از یونیکد استاندارد UTF8 استفاده کنید، لذا بعد از ایجاد جدول تکه کد زیر را هم در ادامه، برای آن جدول اجرا نمائید.
<?php
$con = mysql_connect("localhost","username","password");
if (!$con){
    die('اتصال برقرار نشد: ' . mysql_error());
}
mysql_select_db("db_name", $con);
mysql_query("ALTER TABLE tb_name
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci;")
or die(mysql_error());
mysql_close($con);
?>
توضیح:
- ALTER TABLE یک دستور ثانویه است که می توانید به کمک آن روی جداول موجود تغییراتی اعمال نمائید یا به فرض آنها را حذف کنید.
- DEFAULT CHARACTER SET به همراه COLLATE utf8_general_ci، یونیکد پیش فرض یک جدول و ستون های زیر مجموعه آن را تغییر می دهد.
- پس از اینکه یونیکد را بر روی UTF8 تنظیم کردیم برای ارتباط صحیح و مقایسه یکسان کاراکترها باید از COLLATE و قانون utf8_general_ci استفاده کنیم که در مثال بالا این کار انجام شده است.
sectionدسته بندی: آموزش مقدماتی » MySQL
related مطالب بیشتر:
» نحوه استفاده از WHERE در MySQL
» انتخاب ردیف ها با دستور SELECT FROM در MySQL
» استفاده از ORDER و GROUP در MySQL
» استفاده از JOIN و ساخت پرس و جوی ترکیبی در MySQL
» نگاهی به MySQL، پرکاربردترین سیستم مدیریت پایگاه داده
commentنظرات (۳۳ یادداشت برای این مطلب ارسال شده است)
نویسنده: طراحی سایت
زمان: ۱۸:۳۱:۲۳ - تاریخ: ۱۳۹۱/۰۸/۲۴
خوب بود ممنون
نویسنده: نیما
زمان: ۰۱:۰۳:۱۳ - تاریخ: ۱۳۹۱/۰۹/۱۳
عالی
نویسنده: علی
زمان: ۲۲:۰۲:۵۵ - تاریخ: ۱۳۹۱/۰۹/۱۹
سلام این کد که کار نمیکنه!...
میگه باید دیتابیس رو سلکت کنیم این کار رو هم که انجام میدم باز نمیشه
از این کد ها استفاده کردم
mysql_select_db("mahdi");
mysql_select_db("mahdi",$con);
con متغیری هست که به mysql کانکت شده
پاسخ: 
سلام
ممنون از یادآوری شما، قسمت mysql_select_db در هنگام منتشر کردن مطلب از قلم افتاده بود که آموزش به طور کامل مجددا تست و تصحیح شد، می توانید از الگوی فعلی استفاده کنید، اگر خطایی دریافت کردید بررسی کنید که دیتابیس را از قبل ساخته باشید و نام آن به درستی درج شده باشد.
نویسنده: web developer
زمان: ۱۴:۰۶:۲۳ - تاریخ: ۱۳۹۱/۱۲/۲۶
درود
ممنون از آموزش های خوب شما
دوست گرامی
آموزش یو تی اف کردن را در کنار آموزش ساخت فرم ثبت نام انجام می دهم.
زمانی که یو تی اف می کند، تنها تیبل اصلی یو تی اف می شود و ستون های زیر مجموعه را یو تی اف نمی کند.
ممنون می شوم راهنمایی کنید
پاسخ: 
سلام
ابتدا یونیکد دیتابیس را در هنگام ایجاد کردن، بر روی utf8_general_ci تنظیم کنید، سپس در هنگام ایجاد جداول و در همان صفحه کد، از دستور ALTER TABLE در انتهای دستور CREATE TABLE استفاده کنید (پیش از اینکه اتصال را خاتمه دهید).
مثال:
mysql_query("CREATE TABLE tb_name(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
name VARCHAR(255)) ENGINE=MyISAM ")
or die(mysql_error());
echo "جدول با موفقیت ساخته شد!";

mysql_query("ALTER TABLE tb_name
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci;")
or die(mysql_error());
echo "یونیکد با موفقیت تنظیم شد!";
نویسنده: ansherli
زمان: ۱۶:۰۲:۰۷ - تاریخ: ۱۳۹۱/۱۲/۲۸
سلام
ببخشید من متوجه نشدم چطوری با دستور ALTER TABLE کارکنم؟
من دیتابیس و جداولم رو دستی ایجاد کردم
الان چطوری این کد رو بهش اضافه کنم ؟
پاسخ: 
سلام
برای حالت دستی، در برنامه phpMyAdmin بر روی جدول مربوطه کلیک کنید و در منوهای بالایی، گزینه SQL را انتخاب نمائید، سپس از نمونه دستور زیر استفاده کنید:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;
روش توضیح داده شده در آموزش مربوط به حالتی است که جداول را با اجرای فایل های PHP می سازید.
نویسنده: ansherli
زمان: ۱۹:۳۹:۰۵ - تاریخ: ۱۳۹۱/۱۲/۲۸
خیلی ممنونم از راهنماییتون
مسیری که گفتید رفتم ولی توی sql چند تا تب هست که مربوط به کدهای delete , clear, update,select,select * ,insert هستش و توی هر کدوم کدهای مربوطه به اون !
مثلا توی insert:
INSERT INTO `akhbar`(`id`, `onvan_khabar`, `aks_khabar`, `matn_khabar`, `datetime`) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5])
نوشته شده من کدی گفتید رو کجا اضافه کنم؟ در ضمن گزینه save توی این صفحه نیست! این کد رو که اضافه میکنم دوباره که برمیگردم به این صفحه چیزی save نشده!
ممنون میشم بگید چیکار کنم ؟
پاسخ: 
وقتی یک جدول را انتخاب کردید و وارد قسمت sql شدید، نیازی نیست سایر دکمه ها را انتخاب کنید، در فیلد متنی Run SQL query/queries on database مقادیر پیش فرض را حذف و پرس و جوی گفته شده را قرار دهید، سپس در پائین صفحه سمت راست بر روی دکمه GO کلیک کنید!
نویسنده: ansherli
زمان: ۲۲:۴۴:۴۳ - تاریخ: ۱۳۹۱/۱۲/۲۸
ببخشید من دقیقا مسیری که شما میگید رو رفتم و کدی که گفتید رو وارد کردم ولی بازم هیچ تغییری توی داده ها ایجاد نشد حتی داده جدیدم وارد کردم ولی بازم فارسی نیست! :(
پاسخ: 
اگر یونیکد ستون های شما utf8_general_ci باشد، داده ها به شکل فارسی ذخیره می شوند (البته در حالت وارد کردن به صورت دستی) اگر هم به شکل کاراکترهای ناخوانا وارد شوند باز مشکلی نیست و در هنگام نمایش در صفحات utf8 به صورت فارسی نمایش داده می شوند، اما برای اطمینان بهتر است داده ها را با دستورات php در دیتابیس ذخیره کنید و پس از اتصال و انتخاب دیتابیس، پرس و جوی زیر را هم اجرا کنید تا تمام فرآیند ها به صورت فارسی ذخیره یا بازیابی شوند:
mysql_query ("SET NAMES 'utf8' ");
نویسنده: صادق
زمان: ۲۰:۱۶:۵۸ - تاریخ: ۱۳۹۲/۰۳/۱۵
سلام یه سوال داشتم که شاید خیلی به این مطلب مربوط نباشه من میخوام یک عکس رو در mysql ذخیره کنم و سپس اون عکس رو دوباره مشاهده کنم اولا نوع داده دیتابیسم چی باید باشه و چگونه ببینم
پاسخ: 
سلام
ذخیره تصاویر در دیتابیس در وب چندان توصیه نمی شود، چون برای نمایش آن (در برخی مرورگرها) ممکن است با مشکلاتی روبرو شوید و از طرفی حجم کلی پایگاه داده به میزان زیادی افزایش می یابد، بهتر است تصاویر را به صورت معمول در هارددیسک سرور ذخیره و تنها آدرس یا نام آنها را در دیتابیس ثبت کنید.
اما جهت اطلاعات بیشتر، نوع داده برای ذخیره تصاویر در MySQL نوع BLOB به معنی Binary Large OBject است که برای نمایش تصویر باید یک دستور header تنظیم کنید:
header("Content-type: image/jpeg");
echo $row['image_column'];
توجه کنید که قبل از این دستورات هیچ خروجی نباید به مرورگر ارسال شود (شامل کاراکترهای نامرئی BOM نیز می شود)، روش دیگر نمایش، استفاده از data:image و base64_encode است:
<?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row['image_column']) . '">'; ?>
نویسنده: صادق
زمان: ۱۰:۱۴:۵۱ - تاریخ: ۱۳۹۲/۰۳/۱۶
خیلی ممنون
نویسنده: صبا
زمان: ۱۳:۱۲:۴۲ - تاریخ: ۱۳۹۲/۰۳/۲۸
سلام، به خاطر مطالب خيلي خوبتون ممنونم. يه سوال وقتي دستور ساخت دیتابیس با دستور CREATE رو مينويسم اين خطا رو ميده در ضمن من از wampserver استفاده ميكنم.مشكل از كجاست
اتصال برقرار نشد: Access denied for user 'username'@'localhost' (using password: YES)
پاسخ: 
سلام
به احتمال زیاد در هنگام اتصال به دیتابیس در لوکال هاست، قسمت مربوط به کلمه عبور را نیز مقداردهی می کنید، در حالی که معمولا در لوکال هاست با نام کاربری root و بدون پسورد باید به دیتابیس متصل شد (البته با توجه به تنظیمات پیش فرض).
نویسنده: pietra grey marble
زمان: ۱۰:۴۱:۱۵ - تاریخ: ۱۳۹۲/۰۴/۲۷
ممنون
نویسنده: yahya
زمان: ۰۹:۳۵:۴۱ - تاریخ: ۱۳۹۲/۰۵/۰۲
با سلام و تشکر از زحمات شما
یک سوال داشتم آیا امکان افزودن ستون به جدول بعد از ایجاد جدول وجود دارد . اگر این امکان وجود دارد دستور مربوط به آن چیست؟
پاسخ: 
سلام
بله با ALTER می توانید تغیرات بعدی را در جدول ایجاد کنید، به طور مثال:
mysql_query("ALTER TABLE tbl_name ADD COLUMN new_col_name INT(11) NOT NULL DEFAULT 0 AFTER col_name")
or die(mysql_error());
کد بالا یک ستون فرضی از نوع INT بعد از ستون col_name می سازد.
نویسنده: علی
زمان: ۱۹:۵۷:۴۸ - تاریخ: ۱۳۹۲/۰۶/۳۱
سلام. ببخشید برای ساخت جدول در mysql محدودیت تعداد کارکتر رو باید بدیم. چطوری این مقدار رو نامحدود کنم که تعداد کاراکتر مهم نباشه.
پاسخ: 
سلام
تا آنجا که اطلاع داریم، امکان ساخت ستون بدون محدودیت کاراکتر در MySQL وجود ندارد، اما می توانید از data type های زیر استفاده کنید:
TINYTEXT - 255 bytes
TEXT - 65535 bytes
MEDIUMTEXT - 16,777,215 bytes (2^24 - 1)
LONGTEXT - 4G bytes (2^32 – 1)
که برای متن های خیلی خیلی طولانی (در حد حجم 4 گیگابایت)، LONGTEXT انتخاب مناسبی است.
نویسنده: حراج
زمان: ۱۸:۲۷:۵۸ - تاریخ: ۱۳۹۲/۰۸/۰۱
عالی و ممنون
نویسنده: یاسمن
زمان: ۱۱:۰۷:۰۸ - تاریخ: ۱۳۹۲/۱۰/۲۰
وقتی دستور ایجاد دیتا بیس رو می زنم این پیغام رو میده:
خطایی رخ داده است:
Access denied for user ''@'localhost' to database 'db_name
پاسخ: 
به نظر کدهای شما اشکالی دارد و اطلاعات مورد نیاز برای اتصال به پایگاه داده (نام کاربری، کلمه عبور، نام دیتابیس و...) به درستی تنظیم نشده است.
paged صفحه 1 از 3




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

7 × 2
 refresh
آگهی
seonab.com
طراحی نرم افزار اندروید
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...