My_SQL
در این قسمت به طور خیلی مختصر و مفید مطالبی درباره MySQL شرح داده شده است.
Mysqlپرطرفدارترین سیستم پایگاه داده متن باز است.
Mysqlچیست؟
سیستم پایگاه داده متن باز
مانند بیشتر سیستم های مدیریت پایگاه داده مدرن مبتنی بر مدل رابطه ای،RDBMS، است.
روی لینوکس، ویندوز،Netware،AIXو غیره اجرا می شود.
با زبانهایی مانندPHPبه اسانی در دسترس است.
چراMysql؟
پایگاه داده متن باز است.
کارایی و درجه اطمینان بالا
سهولت استفاده
دسترس پذیری زیاد(high-availability)
طراحی برنامه جامع
سهولت مدیریت
هزینه خیلی پایین خرید
نحوه دریافت
برای دانلود به سایت رسمی انmysql.comمراجعه کنید
اتصال به پایگاه داده
در این بخش با تابعmysql_connect()آشنا می شویم. از این تابع برای اتصال به پایگاه دادهMysqlاستفاده می شود.
ساختار تابع:
۱ |
mysql_connect(host name, user name, password) |
mysql_connect()در صورت موفقیتtrueرا بر می گرداند در غیر این صورتfalseرا. مثال:
۰۱ |
<? |
|
۰۲ |
//the example of MySQL database connection |
۰۳ |
//connect.php |
|
۰۴ |
$continued= mysql_connect("localhost","root","admin"); |
۰۵ |
if($continued) { |
|
۰۶ |
echo("Connection is succeed") |
۰۷ |
} else{ |
|
۰۸ |
echo("Connection is fail") |
۰۹ |
} |
|
۱۰ |
?> |
ساخت پایگاه داده
از تابعMysql_create_db()برای ساخت پایگاه داده استفاده می کنیم. معمولا، پایگاه داده را در برنامه استفاده می کنیم و دارای یک یا چند جدول است.
ساختارMysql_create_db()
۱ |
mysql_create_db("database") |
فایلی به نامCreate.phpداخل پوشهwwwبسازید و کد زیر را وارد کنید:
۰۱ |
<? |
|
۰۲ |
//the example of making MySQL database |
۰۳ |
//create.php |
|
۰۴ |
$continued= mysql_connect("localhost","root","admin"); |
۰۵ |
if($continued){ |
|
۰۶ |
echo("Connection is succeed"); |
۰۷ |
}else{ |
|
۰۸ |
echo("Connection is fail"); |
۰۹ |
} |
|
۱۰ |
$make= mysql_create_db("data_root"); |
۱۱ |
if($make){ |
|
۱۲ |
echo("<br><br>Database data_root succeeds in making"); |
۱۳ |
}else{ |
|
۱۴ |
echo("<br><br>Database data_root fails in making"); |
۱۵ |
} |
|
۱۶ |
?> |
ساخت جدول
PHPتابع مخصوصی برای ساخت جدول با فیلدهای معین ندارد. بنابراین برای ساخت جدول داده، از دستور برنامه پایگاه داده مانندMySQLاستفاده می شود، این دستور با تابعmysql_query()اجرا می شود.
برای مثال، پایگاه دادهEmployeeبرای یک دفتر را ساخته، یک جدول با ستون هایemployee number،employee nameوemployee addressمی سازیم.
فایلی به نامCreate_table.phpداخلwwwبسازید. کد زیر را در ان کپی کنید:
۰۱ |
<? |
|
۰۲ |
//the example of making MySQL database table |
۰۳ |
//create_table.php |
|
۰۴ |
$continued= mysql_connect("localhost","root","admin"); |
۰۵ |
if($continued){ |
|
۰۶ |
echo("Connection is succeed"); |
۰۷ |
}else{ |
|
۰۸ |
echo("Connection is fail"); |
۰۹ |
} |
|
۱۰ |
$make= mysql_create_db("employees"); |
۱۱ |
if($make){ |
|
۱۲ |
echo("<br><br>Employees database succeeds in making"); |
۱۳ |
}else{ |
|
۱۴ |
echo("<br><br>Employees database fails in making"); |
۱۵ |
} |
|
۱۶ |
$order1= "CREATE TABLE data_employees |
۱۷ |
( |
|
۱۸ |
employees_number int(10)AUTO_INCREMENT PRIMARY KEY, |
۱۹ |
name char(100), |
|
۲۰ |
address varchar(255) |
۲۱ |
)"; |
|
۲۲ |
$make_table= mysql_db_query("employees",$order1); |
۲۳ |
if($make_table){ |
|
۲۴ |
echo("<br><br>Table data_employees succeeds in making"); |
۲۵ |
}else{ |
|
۲۶ |
echo("<br><br>Table data_employees fails in making"); |
۲۷ |
} |
|
۲۸ |
?> |
نوع داده فیلد ها
نوع داده عددی
نوع داده |
Gyration assess |
TINYINT |
(-۱۲۸) – ۱۲۷ or 0 – 255 |
SMALLINT |
(-۳۲۷۶۸) – ۳۲۷۶۷ or 0 – 65535 |
MEDIUMINT |
(-۸۳۸۸۶۰۸) – ۸۳۸۸۶۰۷ or 0 – 16777215 |
INT |
(-۲۱۴۷۶۸۳۶۴۸) – ۲۱۴۷۶۸۳۶۴۷ or 0 – 4294967295 |
BIGINT |
(-۹۲۲۳۳۷۲۰۳۶۸۵۴۷۷۵۸۰۸) – ۹۲۲۳۳۷۲۰۳۶۸۵۴۷۷۵۸۰۷ or 0 – 18446744073709551615 |
FLOAT(X) |
(-۳٫۴۰۲۸۲۳۴۶۶E+38) – (-1.175494351E-38), 0, and 1.175494351E-38 – 3.402823466E+38. |
FLOAT |
The same as above |
DOUBLE |
(-۱٫۷۹۷۶۹۳۱۳۴۸۶۲۳۱۵۷E+308) – (-2.2250738585072014E-308), 0, and 2.2250738585072014E-308 – 1.7976931348623157E+308 |
میزان حافظه مورد نیاز متغیر ها در جدول زیر امده است:
نوع داده |
حافظه مورد نیاز |
TINYINT |
۱ byte |
SMALLINT |
۲ bytes |
MEDIUMINT |
۳ bytes |
INT |
۴ bytes |
INTEGER |
۴ bytes |
BIGINT |
۸ bytes |
FLOAT(X) |
۴ ifX <=24 or 8 if 25 <=X <=53 |
FLOAT |
۴ bytes |
DOUBLE |
۸ bytes |
DOUBLE PRECISION |
۸ bytes |
REAL |
۸ bytes |
DECIMAL(M,D) |
M+2 bytes if D>0, M+1 bytes if D=0(D+2, if M<d)< td=""></d)<> |
NUMERIC(M,D) |
M+2 bytes if D>0, M+1 bytes if D=0(D+2, if M<d)< td=""></d)<> |
نوع داده رشته ای
نوع داده |
Gyration assess |
CHAR |
۱-۲۵۵ character |
VARCHAR |
۱-۲۵۵ character |
TINYLOB, TINYTEXT |
۱-۲۵۵ character |
BLOB, TEXT |
۱-۶۵۵۳۵ character |
MEDIUMLOB, MEDIUMTEXT |
۱-۱۶۷۷۷۲۱۵ character |
LONGLOB, LONGTEXT |
۱-۴۲۹۴۹۶۷۲۹۵ character |
ENUM('element1','element2',…) |
Maximal 65535 character |
SET('element1','element2',…) |
Maximal 64 element |
میزان حافظه مورد نیاز:
نوع داده |
حافظه مورد نیاز |
CHAR(M) |
M bytes, 1 <=M <=255 |
VARCHAR(M) |
L+1 bytes, L <=M and 1 <=M <=255 |
TINYLOB, TINYTEXT |
L+1 bytes, L <2^8 |
BLOB, TEXT |
L+2 bytes, L<2^16 |
MEDIUMLOB, MEDIUMTEXT |
L+3 bytes, L<2^24 |
LONGBLOB, LONGTEXT |
L+4 bytes, L<2^32 |
ENUM('element1','element2',…) |
۱ or 2 bytes, depend to the number of element |
SET('element1','element2',…) |
۱, ۲, ۳, ۴ or 8 bytes, depend to the number of element |
نوع داده تاریخ
نوع داده |
Gyration assess |
DATETIME |
'۱۰۰۰-۰۱-۰۱ ۰۰:۰۰:۰۰' to '9999-12-31 23:59:59' |
DATE |
'۱۰۰۰-۰۱-۰۱' to '9999-12-31' |
TIMESTAMP |
'۱۹۷۰-۰۱-۰۱ ۰۰:۰۰:۰۰' – ۲۰۳۷ |
TIME |
'-۸۳۸:۵۹:۵۹' to '838:59:59' |
YEAR |
۱۹۰۱ – ۲۱۵۵ |
میزان حافظه مورد نیاز:
نوع داده |
حافظه مورد نیاز |
DATE |
۳ bytes |
DATETIME |
۸ bytes |
TIMESTAMP |
۴ bytes |
TIME |
۳ bytes |
YEAR |
۱ bytes |
درخواست هایMysql
PHPبرای کار با داده پایگاه داده تابع خاصی را ارائه نداده است. بنابراین باید از دستوراتMysqlاستفاده کرد. برای انجام عملیات های داده ای این کارها را باید انجام دهید:
۱٫به پایگاه داده متصل شوید.
۲٫با استفاده از تابعmysql_query()دستورMysqlرا اجرا کنید. با استفاده از توابعmysql_fetch_array()،mysql_fetch_row()وmysql_num_rowsنتیجه را پردازش کنید.
افزودن داده
برای افزودن داده به پایگاه داده از این دستور استفاده کنید:
INSERT INTO nama_table (field1,field2,…) VALUES ('data1','data2',…)
اگر پارامتر های فیلد مشخص نشود، تعداد داده های ورودی باید با تعداد ستون های جدول یکی باشد.
مثال
۰۱ |
<? |
|
۰۲ |
//the example of inserting data |
۰۳ |
//data_insert.php |
|
۰۴ |
mysql_connect("localhost","root","admin");//database connection |
۰۵ |
mysql_select_db("employees"); |
|
۰۶ |
$order= "INSERT INTO data_employees |
۰۷ |
(name, address) |
|
۰۸ |
VALUES |
۰۹ |
('H.R. Dian', |
|
۱۰ |
'Jl. Raya Baru KOTABARU')"; |
۱۱ |
//inserting data order |
|
۱۲ |
|
۱۳ |
//declare in the order variable |
|
۱۴ |
$result= mysql_query($order); |
۱۵ |
if($result){ |
|
۱۶ |
echo("<br>Input data is succeed"); |
۱۷ |
}else{ |
|
۱۸ |
echo("<br>Input data is fail"); |
۱۹ |
} |
|
۲۰ |
?> |
تابعmysql_fetch_row()
تابعmysql_fetch_row()داده را از متغیر$resultخط به خط می گیرد. اولین خروجی بالاترین خط است. داده ای که این تابع بر می گرداند به صورت آرایه است به طوری که عناصر آرایه همان فیلد های جدول داده هستند.
تابعmysql_fetch_array()
علاوه بر تابعmysql_fetch_row()، می توان از تابعmysql_fetch_array()هم استفاده کرد. همانند تابعmysql_fetch_row()این تابع هم یک خط داده را می خواند.
تفاوت دو تابع در این است که نتایج بازگشتی باmysql_fetch_array()به صورت آرایهassociativeاست.
ویرایش داده
برای ویرایش داده از دستور زیر می توان استفاده کرد:
۱ |
UPDATE name_table SET field1=new_value, field2=new_value, … |
|
۲ |
WHERE condition1,condition2, … |
حذف داده
برای حذف داده از دستور زیر استفاده می شود:
DELETE FROM name_table WHERE condition1,condition2,…
اضافه کردن ستون به جدول
با دستور زیر می توان ستون هایی را به جدول اضافه کرد:
ALTER TABLE table_name ADD field_name field_type field_attribute
ویرایش ستون ها جدول
گاهی نیاز است مثلا ستون از نوعcharبهvarcharتبدیل شود و یا طول ستونی با اندازه ۵۰ باید به ۱۰۰ تغییر کند. برای این منظور از دستور زیر استفاده می شود:
ALTER TABLE table_name MODIFY field_name field_type field_attribute
مثال: نوع داده ستونpositionرا تغییر می دهیم:
۰۱ |
<? |
|
۰۲ |
//the example of changing MySQL database field table |
۰۳ |
//change_field.php |
|
۰۴ |
|
۰۵ |
//database connection |
|
۰۶ |
mysql_connect("localhost","root","admin"); |
۰۷ |
mysql_select_db("employees"); |
|
۰۸ |
|
۰۹ |