آموزش ایجاد جدول در mysql
یک جدول در پایگاه داده شامل یک نام منحصر بفرد می باشد و شامل تعدادی ستون و ردیف است.
ایجاد یک جدول در MySQL با استفاده از MySQLi و PDO
دستور CREATE TABLE برای ایجاد یک جدول در MySQL استفاده می شود.
در اینجا قصد داریم یک جدول با نام "MyGuests" که شامل 5 فیلد "id" و "firstname" و "lastname" و "email" و "reg_date" است را ایجاد نماییم:
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)
نکاتی درباره جدول بالا:
نوع داده مشخص می کند که چه داده هایی در فیلدها نگهداری شوند، اگر مایلید در این زمینه اطلاعات بیشتری کسب کنید به لینک آموزش SQL-انواع داده مراجعه نمایید. در مثال بالا، موقعی که نوع فیلدها را varchar در نظر می گیرید باید حداکثر طول آنرا در پرانتز مشخص کنید(تا 255 کاراکتر)، اگر به اندازه ای بزرگتر از 255 نیاز دارید از نوع text استفاده کنید(تا 65,535 کاراکتر).
بعد از مشخص کردن نوع داده یا Data Type، گزینه های اختیاری دیگری نیز برای هر ستون وجود دارد:
- NOT NULL - محدودیت NOT NULL یک ستون را مجبور می کند که مقدار خالی را قبول نکند.
- مقدار DEFAULT - محدودیت DEFAULT برای وارد کردن مقداری به صورت پیش فرض در یک ستون استفاده می شود.
- UNSIGNED - این محدودیت تنها برای نوع عددی استفاده می شود و زمان اضافه کردن رکورد تنها اجازه وارد کردن صفر و اعداد مثبت وجود دارد.
- AUTO INCREMENT - مقدار فیلد بصورت اتوماتیک به ازای هر رکورد جدید 1 واحد اضافه می شود. (خود افزا)
- PRIMARY KEY - هر جدول می تواند یک کلید اصلی (PRIMARY KEY) داشته باشد، کلید اصلی برای منحصر به فرد کردن ردیفهای یک جدول استفاده می شود، بنابراین مقدار فیلدی را که کلید در نظر می گیرد در کل نباید تکراری باشد. کلید اصلی معمولاً از نوع عددی و خودافزا است، همچنین باید با مقدار NOT NULL تنظیم شود.
مثال های زیر، نشان می دهد که چگونه می تون در PHP یک جدول را ایجاد کرد:
مثال(MySQLi Object-oriented)
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// sql to create table
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "Table MyGuests created successfully";
} else {
echo "Error creating table: " . $conn->error;
}
$conn->close();
?>
مثال(MySQLi Procedural)
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// sql to create table
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
if (mysqli_query($conn, $sql)) {
echo "Table MyGuests created successfully";
} else {
echo "Error creating table: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
مثال(PDO)
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// sql to create table
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
// use exec() because no results are returned
$conn->exec($sql);
echo "Table MyGuests created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 25398
دیدگاهها
با سلام و وقت بخیر
آموزش ایجاد جدول در mysql عالی بود.
با تشکر
با سلام . چگونه collation رو تعریف کنیم؟ و روی utf-8 بزاریم؟
سلام.
میتونید از کد زیر استفاده کنید:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
سلام
reg_date TIMESTAMP به چه کاری میاد؟ میخوام تو جدول این رکورد نباشه ولی حذفش که میکنم جدول دیگه ساخنه نمیشه
سلام.
وقتی جدولی با یک نام خاص در دیتابیس باشه، دیگه نمیشه جدولی با همون نام در اون دیتابیس ساخت.
شما احیانا این مشکل رو دارید.
چرا در phpmyadmin وقتی کد ایجاد جدول رو وارد میکنیم دقیقا مثل کد شما ،این خطا رو میده
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
کوئری زیر بدون هیچ خطایی در PHPMyAdmin اجرا شد:CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)
اما بصورت کلی خطای 1064 به یکی از دلایل زیر ممکن است اتفاق بیافتد:
1- استفاده از کلمات رزرو شده در کوئری:
بعنوان مثال در کوئری زیر، کلمه کلیدی alter جزو کلمات رزرو شده محسوب می شود:CREATE TABLE alter (first_day DATE, last_day DATE); اما راه حل این است که کلمه مورد نظر را بین تک کوتیشن محصور نمایید:CREATE TABLE `alter` (first_day DATE, last_day DATE);2- از دست رفتن داده:
بعنوان مثال کوئری زیر را تصور فرمایید که قرار است پارامتر id در طول برنامه مقدار دهی شود:SELECT * from students WHERE studentID = $id اما بدلایلی پارامتر id مقدار دهی نمی شود و کوئری ارسال شده به پایگاه داده بصورت زیر خواهد شد، که باعث بروز خطای 1064 می شود:SELECT * from students WHERE studentID =3- اشتباه تایپی:
یکی از دلایل معمول اتفاق افتادن خطای 1064، اشتباهات تایپی است، بعنوان مثال در کوئری زیر کلمه UPDATE درست تایپ نشده است:UDPATE table1 SET id = 0;
(INT(6 ب چ معناست؟
میزان فضایی که نوع INT اشغال می کند، 4 بایت خواهد بود و عدد داخل پرانتز هیچ تأثیری در این موضوع ندارد...!
TINYINT = 1 byte (8 bit)
SMALLINT = 2 bytes (16 bit)
MEDIUMINT = 3 bytes (24 bit)
INT = 4 bytes (32 bit)
BIGINT = 8 bytes (64 bit).
عدد داخل پرانتز، زمانی که می خواهیم با استفاده از دستورات MySQL داده ها را نمایش دهیم استفاده می شود و در واقع تعداد کاراکترهای نمایشی را مشخص می کند.
فرقش با VARCHAR چيه؟
در مورد (VARCHAR(30 : حداکثر طول رشته، در پرانتز مشخص می شود و حداکثر 255 کاراکتر است.