شما عضو این انجمن نبوده یا وارد نشده اید. لطفا برای مشاهده کامل انجمن و استفاده از آن وارد شوید یا ثبت نام کنید .

مهمان گرامی، خوش‌آمدید!
شما قبل از این که بتوانید در این انجمن مطلبی ارسال کنید باید ثبت نام کنید.

نام کاربری
  

گذرواژه‌
  





جستجوی انجمن‌ها

(جستجوی پیشرفته)

آمار انجمن
» اعضا: 3,490
» آخرین عضو: tima9852
» موضوعات انجمن: 10,295
» ارسال‌های انجمن: 14,466

آمار کامل

کاربران آنلاین
در حال حاضر 380 کاربر آنلاین وجود دارد.
» 0 عضو | 380 مهمان

آخرین موضوع‌ها
چرا کردان بهترین مقصد برا...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۲/۱۷، ۰۱:۵۶ عصر
» پاسخ: 0
» بازدید: 33
ویلاهای استخردار: انتخابی...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۲/۱۷، ۰۱:۵۵ عصر
» پاسخ: 0
» بازدید: 36
راهنمای کامل رزرو ویلا بر...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۲/۱۷، ۰۱:۵۲ عصر
» پاسخ: 0
» بازدید: 37
ویلا؛ انتخاب اول برای اقا...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۲/۱۰، ۰۶:۰۷ عصر
» پاسخ: 0
» بازدید: 45
اجاره ویلا در رشت؛ شهری ب...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۲/۱۰، ۰۶:۰۲ عصر
» پاسخ: 0
» بازدید: 50
سوئیت در اصفهان؛ اقامتی ر...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۲/۱۰، ۰۵:۵۸ عصر
» پاسخ: 0
» بازدید: 44
آشنایی با انواع تیغه برف ...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: tehranyekta
۰۴/۲/۸، ۰۵:۵۴ عصر
» پاسخ: 0
» بازدید: 48
دلیل ضرورت اعتقاد به جهان...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: سارینا افخمی
۰۴/۲/۶، ۱۱:۲۴ صبح
» پاسخ: 0
» بازدید: 51
آیا در قیامت با همین بدن ...
انجمن: گفتگوی آزاد
آخرین ارسال توسط: سارینا افخمی
۰۴/۲/۶، ۱۱:۱۹ صبح
» پاسخ: 0
» بازدید: 32
[EZG.com] Selling Cheap/S...
انجمن: موبایل و تبلت
آخرین ارسال توسط: RyujiSaeki
۰۴/۲/۳، ۰۱:۵۸ عصر
» پاسخ: 0
» بازدید: 71
تفاوت کولر گازی، اسپلیت و...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: webcade
۰۴/۲/۲، ۰۵:۴۱ عصر
» پاسخ: 0
» بازدید: 45
انواع سیم جوش‌های مخصوص ج...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: webcade
۰۴/۲/۱، ۰۶:۲۸ عصر
» پاسخ: 0
» بازدید: 48
اقامت در ویلایی آرام در د...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۲/۱، ۰۱:۲۲ عصر
» پاسخ: 0
» بازدید: 63
رزرو اقامتگاه بومگردی در ...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۲/۱، ۱۲:۴۹ عصر
» پاسخ: 0
» بازدید: 68
لذت اقامت در دل جنگل های ...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۲/۱، ۱۲:۳۰ عصر
» پاسخ: 0
» بازدید: 47

 
  حذف مقادیر از MySQL با دستور DELETE
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۵۹ عصر - انجمن: MySql - بدون پاسخ

مدیریت اطلاعات پایگاه داده به ذخیره (INSERT)، انتخاب (SELECT) و به روزرسانی (UPDATE) ختم نمی شود، دیر یا زود و به دلایل مختلف، سیستم ما نیاز خواهد داشت که مواردی را از دیتابیس حذف نماید، از این رو یکی دیگر از پرس و جوهای (query های) MySQL، دستور حذف ردیف ها با استفاده از DELETE است که در ادامه با آن آشنا خواهیم شد، آشنایی دقیق با این دستور از این لحاظ حائز اهمیت است که اگر در تعیین پارامترهای آن اشتباهی انجام دهیم، ممکن است موجب حذف مواردی ناخواسته شویم.

شیوه نگارش (syntax) دستور DELETE


نحوه استفاده از دستور DELETE در MySQL شباهت زیادی با سایر دستوراتی که تا این لحظه بررسی کرده ایم (مانند SELECT، UPDATE و...) دارد و البته رعایت نکات خاص آن نیز ضروری است، به مثال زیر توجه کنید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
با این دستور ساده، ردیف یا ردیف هایی در دیتابیس که مقادیر ستون id آنها برابر عدد 1 باشد حذف خواهند شد، ملاحظه می کنید که اگر به فرض پارامتر WHERE استفاده نشود یا اینکه به اشتباه تعیین گردد، موجب حذف موارد ناخواسته خواهد شد، لذا در استفاده از دستور DELETE باید دقت نمود و قبل از هر چیز از اطلاعات حساس دیتابیس پشتیبان تهیه کرده و دستورات را نیز قبل از استفاده نهایی، حتی الامکان تست کرد.
یک مثال کاربردی با دستور DELETE

برای آشنایی بیشتر با دستور DELETE، یک مثال کاربردی را با هم مرور می کنیم، فرض کنید در دیتابیس خود در جدول users اسامی و مشخصات کاربران را در ستون های id، name، pass، age و... ذخیره کرده ایم، حال می خواهیم کاربرانی که نام آنها با حرف ب فارسی یا B لاتین شروع می شود را حذف کنیم، بدین منظور خواهیم نوشت:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

توضیح:
- همان طور که ملاحظه می کنید، در دستور DELETE می توانیم از WHERE و پارامترهای وابسته به آن مانند OR ، AND ، LIKE و... استفاده کنیم.
- هنگامی که در کنار دستور DELETE از WHERE و LIKE استفاده می کنیم، باید دقت کنیم که علامت % در ابتدا، انتها یا در هر دو سمت پارامتر، نقشی تعیین کننده در نحوه تفسیر دستورمان خواهد داشت که البته در این مورد در مباحث قبلی صحبت کرده ایم.

حذف مقادیر چندگانه با دستور DELETE

در پایان این آموزش بد نیست یک مثال پیشرفته تر را نیز با هم بررسی کنیم، حتما تا به حال صفحات و سایت هایی را دیده اید که با انتخاب چند مورد، می توان تمام آنها را در یک بار و هم زمان حذف نمود، برای این کار ابتدا یک فرم HTML در نظر می گیریم که مقادیر را به صورت آرایه ارسال کند.
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

نکته: علامت [] در قسمت نام فیلدها باعث می شود موارد به صورت یک آرایه به سرور ارسال شوند.

سپس در سرور از حلقه های for یا foreach می توانیم استفاده کنیم، به مثال زیر توجه کنید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- برای دریافت متغیر ارسال شده از طرف فرم HTML کافی است از روش های معمول (متد GET یا POST) استفاده کنید.
- اکنون اگر از متغیر delete_array با دستور print_r خروجی بگیرید، کلیدها و مقادیر آرایه به صورت زیر خواهد بود.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

به این ترتیب می توان در یک دستور foreach از کلید و مقدار آرایه ارسال شده در query مربوط به DELETE استفاده کرد.

چاپ این مطلب

  به روز رسانی ردیف ها در MySQL با UPDATE
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۵۳ عصر - انجمن: MySql - بدون پاسخ

یکی دیگر از دستورات مربوط به مدیریت اطلاعات در MySQL، دستور UPDATE است که پس از INSERT INTO و SELECT FROM می تواند بیشترین کاربرد را داشته باشد، فلسفه پیدایش و تعریف این دستور نیز به این جهت است که بتوانیم بدون حذف ردیف های موجود، اطلاعات آنها را به روز کنیم، به طور مثال فرض کنید اسامی افرادی را در یک جدول به همراه شماره تلفن آنها ذخیره کرده ایم و اکنون می خواهیم بدون اینکه ردیف مورد نظر حذف شود، تنها شماره تماس فرد را تغییر دهیم، یعنی اطلاعات قبلی مربوط به شماره تماس را حذف و اطلاعات جدید را جایگزین آن کنیم، در این گونه موارد است که دستور UPDATE کاربرد دارد، در ادامه به صورت جزئی تری با این دستور آشنا خواهیم شد.
شیوه نگارش (syntax) دستور UPDATE

شیوه نگارش (syntax) و نحوه استفاده از دستور UPDATE در MySQL بسیار ساده و کاربردی است، در واقع مانند سایر دستورهای مربوط به پایگاه داده، از جمله INSERT INTO و SELECT FROM، دستور UPDATE نیز از عناصر تعریف شده و خاص خود پیروی می کند که عبارتند از SET،UPDATE و WHERE، عنصر UPDATE بخش کلیدی پرس و جو، SET عملیات مورد نظر و WHERE ردیف هایی است که تحت تاثیر قرار می گیرند، به مثال زیر توجه کنید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در مثال بالا، از جدول فرضی tb_name، ستون های tel_column و age_column را به روز رسانی کردیم در جایی که ردیف یا ردیف های ستون user_column برابر مقدار فرضی ali باشد، به این ترتیب اطلاعات قبلی ذخیره شده در ردیف ها حذف و با مقادیر جدید به روز رسانی می گردند، بدون اینکه خود آن ردیف ها حذف شوند.
نکته: برای به روز رسانی چندین ستون با یک دستور UPDATE و جداسازی آنها، از علامت , به صورتی که در مثال آمده است استفاده کنید.

یک مثال کاربردی با دستور UPDATE

برای آشنایی بیشتر با کاربرد دستور UPDATE در MySQL، این قسمت از آموزش را با یک مثال کاربردی به پایان می بریم؛ فرض کنید اسامی کاربران سایت خود را در جدولی به نام users ذخیره کرده ایم که این جدول دارای چند ستون با نام های username، password، status و ... است، حال می خواهیم این امکان را به کاربران بدهیم تا بتوانند کلمه عبور خود را تغییر دهند، در چنین شرایطی می توان با استفاده از دستور UPDATE این کار را به راحتی انجام داد که در زیر یک نمونه از آن را ملاحظه می کنید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- دقت کنید، دستورات MySQL در اکثر مواقع، قبل از هر چیز باید توسط کدهای php کنترل شده و با هدف مشخصی استفاده گردند، به این معنی که هیچ زبان برنامه نویسی خود به خود نباید کاری انجام دهد بلکه تنها باید به عنوان یک ابزار در اختیار برنامه نویس باشد تا منظور او را به مفسر سیستم تفهیم کند، از این رو باید بدانید که کی و کجا از چه دستوری می توانید استفاده کنید، البته این موضوع تا حدود زیادی به تمرین و تجربه نیز بستگی دارد.
- پرس و جوی فرضی بالا اطلاعات کلمه عبور یک کاربر را به روز رسانی می کند، همان طور که ملاحظه می کنید از WHERE و AND برای اطمینان و محدودسازی ردیف های مورد نظرمان استفاده کرده ایم، همچنین از متغیرهایی برای مقادیر در دستور استفاده شده است که می توانند به فرض از یک فرم HTML و با متد POST دریافت شده باشند.
- همان طور که گفتیم، قبل از اجرای پرس و جوهای مربوط به دیتابیس، می توانید عملیات کاربر را با برنامه نویسی php کنترل و مدیریت کنید، به فرض از اعتبار سنجی با if و else یا isset استفاده کرده و سپس اجازه اجرای پرس و جو را بدهید، یا از دیگر قابلیت های php با توجه به هدف و برنامه خود استفاده کنید.

چاپ این مطلب

  توابع تجمعی (Aggregate Functions) در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۴۳ عصر - انجمن: MySql - بدون پاسخ

اگر آموزش های مقدماتی بخش MySQL را دنبال کرده باشید، حتما به خاطر دارید در مبحث گذشته که در مورد استفاده از GROUP BY صحبت کردیم، گفتیم که توابع مربوط به GROUP BY را در اصطلاح توابع تجمعی یا aggregate functions می گویند (شامل COUNT، MAX، MIN، SUM، AVG و...) و قرار شد که در آموزش های بعد به آن بپردازیم، از این رو طبق روال، این مطلب را اختصاص داده ایم به مبحث مذکور تا با فراگیری آن، بیش از پیش و با تسلط بیشتر بتوانیم به نحو دلخواه با php، اطلاعات موجود در دیتابیس MySQL را مدیریت کنیم، ذکر این نکته نیز لازم است که استفاده از این توابع همیشه هم ضروری نیست و بستگی به نوع نیاز شما دارد، اما در کل یک برنامه نویس خوب کسی است که از همه ظرفیت های موجود آگاه باشد، حتی اگر از آنها هرگز استفاده نکند.
توابع تجمعی (Aggregate Functions) به چه معنی است؟

شاید این سوال به ذهن شما رسیده باشد که در کل توابع تجمعی (Aggregate Functions) به چه معنی است؟ پاسخ این سوال را اینگونه می توان داد که در PHP و MySQL برای گروه بندی در هنگام کار با اطلاعات عددی و آماری و بدست آوردن نتایج، بعد از یک سری محاسبات ریاضی (در حد معمولی یا پیشرفته)، توابعی از پیش تعریف شده که با تنظیم آنها در هنگام پرس و جو از پایگاه داده، طبق نیاز ما عملیات مورد نظر انجام شده و نتایج برگردانده می شوند، به فرض در مثالی که در ادامه خواهیم دید، اطلاعات خودروهایی با قیمت ها و رنگ های مختلف در دیتابیس موجود است، حال اگر بخواهیم خودرو ها را بر اساس رنگ گروه بندی کرده و در عین حال، ارزان ترین قیمت آن رنگ ها را انتخاب کنیم، ناچاریم از تابع MIN که جزء Aggregate Functions است استفاده نمائیم (در ادامه خواهیم دید).

ساخت جدول و وارد کردن اطلاعات نمونه در MySQL

اجازه بدهید برای یادآوری هم که شده، ابتدا با استفاده از کد زیر، اطلاعات نمونه ای را در دیتابیس فرضی test ایجاد کنیم، این اطلاعات شامل جدول tb_cars و شش ردیف پنج ستونه از اسامی، مدل، رنگ و قیمت خودروها است (به اضافه ستون id که با خاصیت AUTO_INCREMENT است و به صورت خودکار ایجاد شده و افزایش می یابد).

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- برای ذخیره این اطلاعات نمونه در پایگاه داده، کافی است یک دیتابیس با نام test، ترجیحا در لوکال هاست بسازید و کد بالا را در یک فایل php ذخیره کرده و اجرا کنید.
- در کد بالا، ابتدا با دستور CREATE TABLE جدول فرضی tb_cars را ساخته ایم که درون خود ستون هایی با نام id (از نوع INT) و name، model، color و price (همگی از نوع VARCHAR) را دارد.
- در قسمت ALTER TABLE یک دستور اضافه برای کار با حروف فارسی قرار داده ایم تا یونیکد جداول به صورت استاندار utf8 تبدیل شود که برای کار با داده های زبان فارسی در MySQL مناسب است (البته در این مثال تنها از حروف انگلیسی استفاده شده است).
- در بخش بعد از کد بالا، اطلاعات خودروها در یک آرایه چند بعدی یا (Multidimensional) ذخیره شده است تا با یک حلقه for مقادیر با دستور INSERT INTO وارد دیتابیس شوند (برای درک صحیح این بخش به آموزش های php در مبحث حلقه و آرایه مراجعه کنید).

استفاده از تابع MIN

اولین تابعی که قصد بررسی آن را داریم، تابع MIN در MySQL است، به کاربردن این تابع باعث می شود که کم ترین مقادیر از موارد مورد نظر انتخاب شوند، به طور مثال در کد زیر، از خودروهای با رنگ همسان، ارزان ترین (رنگ ها) را انتخاب کرده ایم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

خروجی پرس و جوی بالا از پایگاه داده به صورت زیر خواهد بود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

همانطور که ملاحظه می کنید، رسم الخط یا همان syntax این تابع به گونه ای است که باید هم در query و هم در تابع mysql_fetch_array از آن در ستون مورد نظر استفاده شود، نکته دیگری که باید به آن توجه شود این است، ستونی که به عنوان گروه بندی از آن استفاده می شود به عنوان مبنای کار و ستونی که پائین ترین مقادیر از آن انتخاب می شود به عنوان پارامتر دوم دارای اهمیت است.

استفاده از تابع MAX

تابع دیگری که جزء خانواده توابع تجمعی یا Aggregate Functions است، تابع MAX است که دقیقا کارکردی شبیه MIN دارد، با این تفاوت که در اینجا بزرگ ترین مقادیر انتخاب می  شوند.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی پرس و جوی بالا از پایگاه داده به صورت زیر خواهد بود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
استفاده از تابع AVG

بعد از آشنایی با تابع MIN و MAX نوبت به بررسی تابعی دیگر از این خانواده است، این تابع AVG نام دارد که در واقع مخفف عبارت average یا میانگین است، با استفاده از تابع AVG می توانیم حد متوسط مقادیر مورد نظر را از ستون های گروهی، محاسبه کرده و نشان دهیم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی پرس و جوی بالا از پایگاه داده به صورت زیر خواهد بود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

استفاده از تابع SUM

تابع دیگری که در خانواده توابع تجمعی (Aggregate Functions) دسته بندی می شود، تابع SUM یا حاصل جمع است، این تابع در واقع مقادیر مجموع ستون هایی که با هم گروه بندی می شوند را نشان می دهد.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی پرس و جوی بالا از پایگاه داده به صورت زیر خواهد بود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
استفاده از تابع COUNT

آخرین تابعی که در این آموزش قصد معرفی آن را داریم، تابع COUNT است که در واقع نمایانگر تعداد آیتم های هر گروه است، به فرض اگر 5 خودرو مشکی رنگ داشته باشیم، در هنگامی که از ستون color برای GROUP BY استفاده کنیم، تابع COUNT مقادیر 5 را برای این ستون برمی گرداند.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

خروجی پرس و جوی بالا از پایگاه داده به صورت زیر خواهد بود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
لیست توابع تجمعی به MIN MAX AVG SUM و COUNT محدود نمی شود، MySQL توابع دیگری نیز برای محاسبات آماری پیچیده تر در نظر گرفته است که البته معمولا در برنامه های عادی، کم تر مورد استفاده قرار می گیرند، برای کسب اطلاعات بیشتر در این خصوص، می توانید به سایت رسمی MySQL در آدرس زیر مراجعه کنید:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

چاپ این مطلب

  استفاده از ORDER و GROUP در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۳۶ عصر - انجمن: MySql - بدون پاسخ

در ادامه آموزش مقدماتی کار با php و mysql، نوبت به آشنایی با نحوه استفاده از دستورات  ORDER BY و GROUP BY رسیده است، با ذکر این مقدمه که دستورات ذکر شده در واقع با هدف دسته بندی و مرتب سازی دقیق تر نتایج و به دست آوردن مقادیر مورد نظر در هنگام کار با php و mysql ایجاد شده اند، به عبارتی دیگر، در برنامه نویسی کاربردی، مواردی پیش می آید که ناگزیریم اطلاعات را به صورت مرتب شده نشان دهیم، یا نتایج مشابه را در یک مورد خلاصه کنیم، اینجاست که کاربرد ORDER BY و GROUP BY رهگشای ما خواهد بود که در ادامه آموزش به آن خواهیم پرداخت.

دستور ORDER BY

همانطور که در مباحث گذشته از آموزش  مقدماتی MySQL به طور مختصر دیدیم، از ORDER BY در یک دستور SELECT * FROM استفاده می شود، هدف از به کاربردن آن، تفهیم نحوه مرتب سازی و چینش سلیقه ای و سفارشی نتایج و ردیف های درخواست شده از mysql است، به فرض اگر کاربرانی با مقادیر سنی متفاوت در سایت خود داشته باشیم و بخواهیم اسامی آنها را بر اساس سن مرتب کنیم، خواهیم نوشت:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی کد بالا می تواند به فرض به شکل زیر باشد.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

همانطور که ملاحظه می کنید، در مثال بالا از جدول table و دو ستون فرضی name و age استفاده کرده ایم.

استفاده از DESC، ASC و تابع rand

در حالت پیش فرض، mysql نتایج را به صورت صعودی (از کوچک به بزرگ یا Ascending) مرتب سازی می کند، اما مرتب سازی به صورت نزولی (از بزرگ به کوچک یا Descending) و همچنین مرتب سازی اتفاقی یا رندوم (Random) با افزودن عباراتی که در زیر مشاهده می کنید، امکان پذیر است.
DESC: مرتب سازی پیش فرض یا صعودی (از کوچک به بزرگ)
ASC: مرتب سازی نزولی (از بزرگ به کوچک)
rand: مرتب سازی به صورت اتفاقی (رندوم)
به مثال های زیر توجه کنید.
نحوه استفاده از DESC برای مرتب سازی و نمایش نتایج به صورت چینش صعودی:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

نحوه استفاده از ASC برای مرتب سازی و نمایش نتایج به صورت چینش نزولی:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
نحوه استفاده از تابع rand برای مرتب سازی و نمایش نتایج به صورت چینش اتفاقی:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
استفاده از LIMIT

استفاده از دستور ORDER BY به تنهایی و بدون محدود کردن تعداد نتایج، می تواند منجر به نمایش تعداد خیلی زیادی از اطلاعات با یک درخواست از دیتابیس شود، از این رو یک پارامتر دیگر به نام LIMIT را می توانیم به دستور خود اضافه کنیم، LIMIT تعداد ردیف هایی را که به عنوان نتایج یک پرس و جو از دیتابیس به دست می آید، محدود می کند، به فرض دستور زیر:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
تنها 5 کاربر را به صورت اتفاقی انتخاب می کند، همچنین می توان نقطه شروع انتخاب ردیف ها را نیز به mysql تفهیم کرد، بدین منظور برای LIMIT از دو عدد استفاده می کنیم، عدد اول مقادیر ردیفی است که با توجه به ORDER BY آن را انتخاب کرده ایم (به فرض شروع از سن 35 سال) و عدد دوم تعداد نتایجی است که پرس و جو را به آن محدود کرده ایم (به فرض 5 عدد).
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
با استفاده از این شیوه به صورت داینامیک، می توان قابلیت هایی مثل نمایش صفحه به صفحه مطالب را ایجاد نمود که در بحث آموزش های کاربردی در این باره خواهیم گفت.

استفاده از AND و OR

شیوه نگارش (syntax) دستورات php در هنگام کار با mysql این اجازه را به ما می دهد که همانند علامت های && و || از دو عبارت AND و OR در یک query استفاده کنیم، البته نحوه کاربرد آنها در اینجا کمی متفاوت است اما هدف از به کارگیریشان یکی است، از AND برای محدودتر و دقیق تر کردن نتایج و از OR برای وسیع تر کردن شمول نتایج یک پرس و جو استفاده می شود، به فرض اگر بخواهیم فقط کاربران دارای سن بالاتر از 40 و پائین تر از 20 را نمایش دهیم، می نویسیم:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
دستور بالا، کاربرانی را که سن آنها بالاتر از 40 یا پائین تر از 20 باشد، در لیست نتایج پرس و جو از پایگاه داده نمایش می دهد.

استفاده از GROUP BY

یک قابلیت کاربردی دیگر که در دسته بندی و نمایش بهتر نتایج حاصل از پرس و جوی پایگاه داده می توان از آن استفاده کرد، قابلیت گروه بندی نتایج دارای وجه مشترک در یک نتیجه است، این قابلیت توسط پارامتر GROUP BY به دست می آید، به فرض اگر بخواهیم گروه بندی را بر اساس شهر کاربران داشته باشیم، خواهیم نوشت:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
به این صورت از بین کاربران یک شهر، تنها یک عضو با توجه به نحوه چینش دستور ORDER BY انتخاب شده و در نتایج نشان داده می شود.

مثال دیگر از کاربرد GROUP BY در mysql:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

در هنگام استفاده از قابلیت GROUP BY و ORDER BY باید دقت کنید که از آنها به ترتیب استفاده شود، در غیر اینصورت mysql خطای syntax را نمایش خواهد داد.

توابع مربوط به GROUP BY را در اصطلاح توابع تجمعی یا aggregate functions می گویند (شامل COUNT، MAX، MIN، SUM، AVG و...) که در آموزش های بعدی به تفصیل راجب آنها خواهیم گفت.

چاپ این مطلب

  نحوه استفاده از WHERE در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۳۰ عصر - انجمن: MySql - بدون پاسخ

همان طور که پیش تر در آموزش های مقدماتی MySQL گفتیم، هنگامی که با دستور SELECT FROM در MySQL کار می کنیم، نیاز به ایجاد محدودیت هایی داریم تا اطلاعات دقیق تری بدست آوریم، به عنوان مثال اگر لیست اسامی ده هزار نفر را در دیتابیس خود به صورت نام، نام خانوادگی و سن داشته باشیم و بخواهیم به فرض تنها افرادی را که اسم آنها بهرام است، در خروجی داشته باشیم، باید از WHERE و پارامترهای آن استفاده کنیم، WHERE در واقع نشانی دقیق ستون و سطرهایی که ما از MySQL پرس و جو می کنیم را تعریف می کند، از اینرو در کار با پایگاه داده و کدهای php اهمیت و کاربرد زیادی دارد، در ادامه آموزش، خواهیم دید که این عنصر تا چه میزان می تواند دقت و سرعت کار ما را افزایش دهد.

چگونه از WHERE استفاده کنیم؟

شیوه نگارش یا همان syntax عنصر WHERE و پارامترهای آن چندان سخت نیست، کافی است آن را در ادامه دستور SELECT FROM قرار دهید، مثال زیر یک نمونه از آن را نشان می دهد.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

در مثال بالا از جدول فرضی table جایی که ستون id برابر یک است را انتخاب کرده ایم، با این کار اطلاعات کل یک ردیف که آی دی آن برابر یک است، در دسترس قرار می گیرد، مثلا ممکن است در آن ردیف اطلاعات دیگری نظیر نام، نام خانوادگی، سن و... را (از قبل) ذخیره کرده باشیم.

استفاده از علامت بزرگتر، کوچکتر و مساوی در WHERE

عبارت WHERE در یک دستور SELECT FROM، تعیین کننده منظور دقیق ما در انتخاب اطلاعات است، درست مثل اینکه در یک کتابخانه به کتابدار بگوییم ازمیان قفسه ها، بخش تاریخ، کتاب تاریخ جهان، انتشارات فلان و... را بیاورد، تمام جزئیات در درخواست ما باید با عباراتی بیان شوند، این کار در MySQL با پارامترهای WHERE صورت می گیرد، یکی از این پارامترها علامت های بزرگتر، کوچکتر و مساوی (<=>) هستند، با این علامت ها مثلا می توانیم به دیتابیس بگوییم ردیف هایی را انتخاب کند که به فرض سن کاربر از 25 سال بیشتر باشد، این کار را به صورت زیر به پایگاه داده تفهیم می کنیم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در واقع عبارت بالا به این معنی است: از جدول فرضی table ستون age، تنها ردیف هایی را انتخاب کن که مقادیر سن کمتر از 25 باشد.

همین کار در مثال زیر، این بار با علامت نا مساوی انجام شده است.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
مفهوم عبارت بالا به این معنی است: از جدول فرضی table ستون age، ردیف هایی را انتخاب کن که مقادیر سن برابر 20 نباشد.
به خاطر داشته باشید، عبارات بزرگتر و کوچکتر، تنها در مقایسه اعداد کاربرد دارند و بهتر است نوع داده ها به صورت INT یا عددی باشند، اما از علامت مساوی (و نامساوی)، هم برای اعداد و هم برای مقادیر رشته ای (متنی) می توان استفاده کرد.

استفاده از عبارت LIKE در WHERE

استفاده از علامت بزرگتر، کوچکتر و مساوی در WHERE به تنهایی تمام خواسته های ما را پوشش نمی دهد، فرض کنید اسامی چند نفر جهت نمونه به صورت زیر در جداول ما ذخیره شده اند.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

اکنون می خواهیم تنها کسانی که دو حرف اول نام آنها با حروف A و R شروع شده را انتخاب کنیم، واضح است که این کار با علامت هایی که پیشتر گفتیم ممکن نیست، چرا که آنها یک عدد یا یک مقدار صحیح را مقایسه می کنند، مثلا با عبارت مساوی تنها می توانیم بنویسیم:
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
این دستور فقط ردیف یا ردیف هایی را که مقادیر نام در آن Arman باشد، انتخاب می کند، اما با استفاده از عبارتی دیگر در WHERE، این مشکل قابل حل است، این عبارت نیز LIKE و علامت  % (percent Wildcard) است، در مثال زیر با کاربرد آن بیشتر آشنا می شوید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

وقتی پس از دو حرف Ar علامت % را قرار می دهیم، در واقع به دیتابیس می گوییم که فقط دو حرف اول برایمان اهمیت دارد و بقیه عبارت، هر چیزی می تواند باشد، دستور بالا اسامی زیر را برایمان انتخاب می کند.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

حال تصور کنید کاربری با نام فرضی PHPArmin نیز در بین کاربران خود داریم، دستور بالا این کاربر را انتخاب نمی کند، چرا که حروف ابتدایی عبارت  PHPArmin با Ar شروع نشده است، اما تغییر آن به صورت زیر، شامل این نوع اسامی نیز می شود.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

در واقع با افزودن یک % در ابتدا و انتهای عبارت مورد پرس و جو، دیتابیس چنین برداشت می کند که تنها برایمان وجود عبارت Ar در بین یک اسم مهم است و به ابتدا یا انتهای آن کاری ندارد.
ذکر این نکته ضروری است که در کار با  عبارت LIKE و علامت  %، باید دقت کنید که دامنه انتخاب ردیف ها را بیش از حد مورد انتظار، توسعه ندهید، برای اعداد نیز بهتر است از علامت های <=> به جای LIKE استفاده کنید.
در مباحث بعدی در رابطه با تکمیل WHERE با پارامترهای بیشتر و نحوه نمایش و دسته بندی اطلاعات، صحبت خواهیم کرد.

چاپ این مطلب

  انتخاب ردیف ها با دستور SELECT FROM در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۲۵ عصر - انجمن: MySql - بدون پاسخ

تا این قسمت از آموزش مقدماتی کار با mysql و کدهای php، دیدیم که چگونه با دستورات مربوط به پایگاه داده در mysql، php را مدیریت کنیم، نحوه اتصال، ساخت دیتابیس، جدول و ردیف با دستور CREATE را فرا گرفتیم و اطلاعات را با INSERT INTO در پایگاه داده خود ذخیره کردیم، همچنین در آموزش قبلی به طور مختصر کلیاتی در رابطه با mysql_query گفتیم و وعده دادیم که در ادامه در این خصوص بیشتر خواهیم گفت، اکنون می خواهیم به وعده خود جامع عمل بپوشانیم و در مورد دستور SELECT FROM در MySQL صحبت کنیم.

کاربرد SELECT FROM در MySQL چیست؟

اگر خاطرتان باشد، پیش تر گفتیم که صرف ساخت دیتابیس، جدول و ردیف و وارد کردن اطلاعات در آن، تمام نیازهایمان (و شاید خیلی از نیازهایمان) را پوشش نمی دهد، با این کار، صرفا اطلاعات را دریافت می کنیم، اما اگر بخواهیم از آنها مجددا استفاده نمائیم، نیاز داریم که به کمک PHP موارد را فراخوانی کنیم، این کار در تعامل بین PHP و MySQL توسط SELECT FROM و پارامترهای آن انجام می شود که وظیفه دارد با توجه به نیاز شما و تنظیماتی که انجام داده اید، اطلاعات خاصی را از ردیف های موجود در جداول، فراخوانی کند، تا پردازش روی آنها صورت گرفته و به خروجی ارسال شوند.

شیوه نگارش (syntax) دستور SELECT FROM در MySQL

شیوه نگارش یا syntax دستور SELECT FROM در MySQL به صورت زیر است.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- در مورد mysql_query، قبلا گفته ایم که یک تابع درونی php برای کار با پایگاه داده است و در واقع یک پُرس و جو و عملیات را بین php و mysql مدیریت می کند.
- دستور SELECT FROM با پارامترهای دیگری از جمه WHERE تکمیل می شود که در بحث های بعدی به طور مفصل در این خصوص خواهیم گفت.
- پس از اینکه یک mysql_query با SELECT FROM اجرا شد، بر اساس نوع درخواست و تنظیمات شما، مقادیری برگردانده می شود (این مقادیر می تواند اطلاعات موجود در دیتابیس یا مثلا تعداد ردیف ها و ... باشد)، برای استفاده از این مقادیر بهتر است mysql_query را با یک متغیر فراخوانی کنیم تا اطلاعات در متغیر قابل دسترسی باشد (در ادامه خواهیم دید).

پارامترهای دستور SELECT FROM در MySQL

SELECT FROM در حالت عادی و بدون وجود پارامترهای محدود کننده، معمولا تمام موارد را از یک جدول برمی گرداند، لذا برای اینکه بتوانیم به دنبال محتوای مخصوصی بگردیم، باید از پارامترهای اضافه استفاده کنیم، یکی از این پارامترها WHERE است که خود زیرمجموعه های دیگری دارد (مثلا استفاده از LIKE و علامت های <،=،> و...)، چون بحث ما به دستور SELECT FROM محدود می شود، موارد پیشرفته تر را که نیاز به دانستن مقدمات بیشتر است، به آینده موکول و در اینجا به ذکر چند مثال بسنده می کنیم.
در مثال های زیر ما با پارامترهای بیشتر، اطلاعاتی دقیق تر از پایگاه داده به دست می آوریم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

توضیح:
- مقادیر در مثال های بالا کاملا فرضی هستند و صرفا برای آشنایی شما با نحوه نگارش دستورات و پارامترهای SELECT FROM تعریف شده اند.
- همانطور که می بینید برای سه متغیر فرضی name، family و age سه query متفاوت (صرفا جهت مثال) تنظیم کرده ایم.
- به پارامترهایی که بعد از قسمت WHERE آمده اند دقت کنید، در متغیر اول از مقایسه برابری (=) ستون user با مقادیر your name استفاده کرده ایم (یعنی تنها ردیف هایی انتخاب می شوند که نام کاربر your name باشد)، در متغیر دوم از LIKE و LIMIT و در متغیر سوم از علامت های کوچکتر بزرگتر به همراه ORDER BY استفاده کرده ایم (بحث تفصیلی در این خصوص را به آینده موکول می کنیم).
- ملاحظه می کنید که دستورات مربوط به mysql_query در پایگاه داده، بی شباهت به حالت معمول برنامه نویسی با php نیستند.
- دقت کنید که در ارتباط با پایگاه داده توسط php، قبل از همه چیز باید اطلاعات اتصال را فراهم کرده باشید.
نمایش اطلاعات با mysql_fetch_array

پس از اینکه اطلاعات ستون ها و ردیف های مورد نظر را به متغیر خود نسبت دادیم، باید در یک حلقه while در php با کمک تابع mysql_fetch_array، مقادیر موجود را جایگزین کرده و خروجی دهیم، یا پردازش های دیگری روی آنها صورت دهیم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- وظیفه تابع mysql_fetch_array این است که مقادیر برگردانده شده توسط mysql_query که در یک متغیر نگهداری می شود را به صورت آرایه هایی قابل استفاده در php در آورد.
- سپس این آرایه ها با کلید ها و مقادیری در دسترس هستند که در قسمت {} درون حلقه while ملاحظه می کنید.
- در مثال بالا درون قسمت {} در حلقه while، مقادیر داخل [] در واقع همان نام ستون های موجود در پایگاه داده هستند که در هر دور حلقه while تا زمانی که مقادیری برای خروجی دادن وجود داشته باشد، تکرار می شوند.
- به طور ساده کد بالا این طور تفسیر می شود: ابتدا مقادیر query با SELECT * FROM و محدود شده با WHERE به متغیر result تعلق می گیرد، سپس mysql_fetch_array مقادیر موجود در result را به متغیر row اختصاص می دهد، در هر دور حلقه while تا زمانی که آرایه ای وجود داشته باشد (true باشد)، ردیف به ردیف (سطر به سطر) به صورت داینامیک مقادیر موجود در ستون ها با عناوین آنها جایگزین می شود و در قسمت خروجی با دستور echo چاپ می گردند.

چاپ این مطلب

  آشنایی با mysql_query در php و دیتابیس
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۲۳ عصر - انجمن: MySql - پاسخ (2)

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

انتخاب اطلاعات از دیتابیس با php و mysql

در کار با سیستم مدیریت پایگاه داده، انتخاب اطلاعات از دیتابیس امری عادی و پرکاربرد است، مثلا اگر بخواهید مطالب خود را به کاربران نشان دهید، باید آنها را از دیتابیس انتخاب و به صفحه مرورگر انتقال دهید، این کار در php و mysql به کمک عنصری به نام SELECT انجام می شود، به همراه این عنصر، باید از FROM نیز استفاده کنیم، به اینصورت به سیستم خواهیم گفت که ما قصد انتخاب از چه جدولی را داریم، برای مثال کد زیر شیوه نگارش یک درخواست از پایگاه داده به کمک SELECT و FROM را نشان می دهید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی اطلاعات از دیتابیس با php و mysql

برای اینکه بتوانیم اطلاعات ارسالی از دیتابیس را در کد php خروجی دهیم به تابع mysql_fetch_array نیاز داریم، ردیف های (سطرهای) انتخاب شده با SELECT و FROM به کمک mysql_fetch_array به صورت آرایه ای از اطلاعات درمی آیند که می توان با شیوه نگارشی زیر از آنها خروجی گرفت.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در مثال بالا از جدولی فرضی با دو ردیف (ستون) نام و نام خانوادگی، اطلاعات را انتخاب و خروجی داده ایم، درک نحوه کارکرد mysql_fetch_array چندان سخت نیست (در بحث های آینده در این خصوص بیشتر خواهیم گفت)، به طور ساده این تابع اطلاعات ردیف ها را بر اساس SELECT * FROM در خود نگهداری می کند و با متغیر row (عنوانی دلخواه است)، با توجه به مقادیر داخل [] خروجی می دهد.

اگر موضوع به نظر پیچیده می رسد، عجله نکنید!، این یادداشت صرفا مقدمه ای بود تا شما را با کلیات کار آشنا کند، در آموزش های بعدی با جزئیات بیشتری خواهیم دید که چگونه می توان اطلاعات را از دیتابیس انتخاب و خروجی گرفت.

چاپ این مطلب

  نحوه ذخیره کردن اطلاعات با دستور INSERT در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۲۱ عصر - انجمن: MySql - بدون پاسخ

پس از آشنایی با نحوه ساخت دیتابیس، جدول و ردیف با دستور CREATE در MySQL، اکنون نوبت به فراگیری قابلیتی دیگر از این سیستم مدیریت پایگاه داده است، هدف این آموزش آشنایی شما با نحوه ورود اطلاعات از کدهای PHP به وسلیه دستور INSERT INTO در جداول و ردیف های MySQL است، چرا که صرف ساختن پایگاه داده، جدول و ردیف، کاربردی ندارد و همه ی این مقدمات برای فراهم کردن شرایطی است که بتوانیم اطلاعاتمان را ذخیره سازی و در مواقع لزوم از آنها استفاده نمائیم.

گفتیم که قبل از انجام هر کاری، ابتدا باید به پایگاه داده متصل شویم، برای این کار از کدی شبیه به مثال زیر استفاده می کنیم:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
حال فرض کنید در پایگاه داده خود، جدولی داریم با نام cars که می خواهیم لیست چند خودرو و رنگ آنها را در ردیف های (ستون های) car و color ذخیره کنیم، ابتدا با دستور CREATE جدول و ردیف هایمان را ایجاد می کنیم:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- اطلاعات اتصال را باید با توجه به نام کاربری و کلمه عبور پایگاه داده خود تعریف کنید.
- در مثال بالا جدولی با نام cars ساخته ایم و سه ردیف (ستون) در آن ایجاد کرده ایم (id,car,color).
- INT و VARCHAR نوع داده (Data Types) ای هستند که در ردیف ها ذخیره می شوند، این امکان در MySQL وجود دارد که از مقادیری مثل INT برای اعداد، VARCHAR و CHAR برای متن های کوتاه با مقادیر مشخص (که می توانند حاوی اعداد هم باشند)، یا TEXT، MEDIUMTEXT، LONGTEXT برای متن های طولانی و... استفاده کنید.
- مقادیر NOT NULL و AUTO_INCREMENT جزء ویژگی هایی هستند که هر نوع از داده (Data Types)، مقادیر بخصوص خود را می تواند داشته باشد، مثلا برای INT که یک مقدار عددی است خاصیت AUTO_INCREMENT به معنی افزایش خودکار است، یعنی با هر بار Insert اطلاعات در آن جدول، یک مقدار به id ما به طور خودکار اضافه خواهد شد (1، 2، 3 و...).

افزودن مقادیر با دستور INSERT INTO در دیتابیس

پس از ساختن جدول و ردیف، اکنون می خواهیم نام سه خودرو پیکان سفید رنگ، پژو مشکی و پراید نقره ای را به لیست خود اضافه کنیم، بدین منظور از کدی شبیه به مثال زیر استفاده می کنیم:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- دستور INSERT INTO مقادیر را در ردیف های تعیین شده ذخیره می کند (به شیوه نگارش آن دقت کنید).
- در عمل، برنامه نویسان وب معمولا به جای نوشتن مجزای دستور INSERT INTO برای هر مقدار، آن را در حلقه های while یا for قرار می دهند و برای هر مقدار، مقادیر را جایگزین می کنند (درک این مطلب نیاز به دانستن نحوه عملکرد for و while در php است).
- در صورت بروز خطا، ادامه کد با die اجرا نخواهد شد و mysql_error علت خطا را نشان خواهد داد.
- فراموش نکنید که پس از پایان کار، حتما با تابع mysql_close، اتصال به پایگاه داده را خاتمه دهید.

چاپ این مطلب

  نگاهی به MySQL، پرکاربردترین سیستم مدیریت پایگاه داده
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۱۸ عصر - انجمن: MySql - بدون پاسخ

نگاهی به MySQL، پرکاربردترین سیستم مدیریت پایگاه داده

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

شیوه کلی دسته بندی اطلاعات در پایگاه داده بر اساس جداول و فیلد هاست، به عنوان مثال فرض کنید می خواهیم اسامی دانش آموزان یک مدرسه را بر اساس سن در جداول مختلف نگهداری  و در صورت نیاز به آنها دسترسی پیدا کنیم، در یک بیان ساده می توانیم چند جدول کلی ایجاد کنیم با عناوینی مربوط به سن آنها (مثلا ردیف سنی 8 تا 10 سال و...) حال در هر جدول اطلاعات مربوط به هر دانش آموز را در ردیف های مشخصی وارد می کنیم (مثلا در جدول 8 تا 10 سال برای هر دانش آموز یک ردیف می سازیم و اطلاعات را وارد می کنیم، فرضا نام: احمد، سن: 8 سال، محل سکونت: تهران و...)؛ پس از ثبت اطلاعات بعدها می توانیم بر اساس نیازمان آنها را فراخوانی کنیم یا دسته بندی کرده و به نمایش دربیاوریم و یا پردازش کنیم.

مدیریت پایگاه داده با PHPMyAdmin و PHP

خوشبختانه در اکثر سرورها به همراه MySQL برنامه ی PHPMyAdmin نیز وجود دارد که به کمک آن به راحتی می توانید دستورات مروبط به پایگاه داده را اجرا کنید، به فرض پایگاه جدیدی ایجاد کنید، جداول بسازید، جداول را ستون بندی کرده، ردیف های دلخواه ایجاد و مدیریت کنید، یونیکدها را تغییر دهید و... نکته مهم تر از این، قابلیت کنترل پایگاه داده از طریق دستورات PHP است، خوشبختانه php تقریبا امکانات کاملی را در این خصوص در اختیارمان قرار می دهد، نتیجه اینکه برنامه PHPMyAdmin کار مدیریت مستقیم (با محیط کاربری) پایگاه داده را تسهیل می کند، اما در کدنویسی و برنامه های کاربردی، باید از php استفاده کنیم؛ برای آشنایی بیشتر از بحث تئوری می گذریم و برای شروع، توجه شما را به چند مثال جلب می کنیم.

ارتباط پایگاه داده با php

برای اینکه بتوانیم با پایگاه داده ارتباط بر قرار کنیم قبل از هر چیز باید یوزر و پسورد (نام کاربری و کلمه عبور) و همچنین پایگاه داده ایجاد کنیم، انجام این کار در قسمت مربوط به پایگاه داده و برنامه PHPMyAdmin یا به صورت کدهای php ممکن است (در سرور یا در لوکال هاست)  اکنون همه چیز آماده است تا با کد php پایگاه داده را مدیریت نمائیم.
کد زیر مثالی برای ایجاد ارتباط با پایگاه داده است:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
اطلاعات پایگاه خود را در مقادیر مشخص شده وارد می کنیم، به جای یوزر نام کاربری، در قسمت پسورد کلمه عبور و در قسمت db نام پایگاه داده (دیتابیس) را می نویسیم، اگر همه چیز درست باشد پیام "ارتباط برقرار شد" و "ارتباط با پایگاه داده برقرار شد" را در خروجی خواهیم داشت در غیر این صورت قسمت or die اجرا شده و خطای مربوطه نشان داده می شود؛ نهایتا نیز با دستور mysql_close به ارتباط پایان می دهیم.

اکنون فرض کنید قصد داریم جدولی با نام school و سه فیلد (ستون) ایجاد کنیم، برای این کار از کد زیر استفاده می نمائیم:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- mysql_query یک دستور مربوط به پایگاه داده را برایمان اجرا می کند.
- CREATE TABLE یکی از query های mysql است که یک جدول و ستون های آن را ایجاد می نماید.
- در کد بالا ردیف (ستون) id با مقادیر INT (عدد صحيح) و NOT NULL (در صورت خالی بودن، بی مصرف نیست) و AUTO_INCREMENT (عملکرد افزایش خودکار) ایجاد می شود و ویژگی کلید اولیه را به آن می دهیم (در این باره بعدا بیشتر خواهیم گفت).
- دو فیلد name و age با خاصیت VARCHAR ایجاد شده اند که مقدار حداکثر مجاز کاراکتر را در خود دارند.
تا اینجا صرفا جهت آشنایی با شیوه نگارش دستوارت mysql و نحوه ارتباط آن با php مثال هایی را ذکر کردیم، درک کامل نحوه عملکرد mysql، نیاز به بررسی مثال ها و مباحث آموزشی بیشتری دارد که در مطالب بعدی به جزئیات و قابلیت های گوناگون آن خواهیم پرداخت.

چاپ این مطلب

  ساخت دیتابیس، جدول و ردیف با دستور CREATE در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۱۵ عصر - انجمن: MySql - بدون پاسخ

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

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

اگر چه ساخت دستی دیتابیس با برنامه phpMyAdmin بیشتر کاربرد دارد، اما کدهای PHP نیز این قابلیت را با دستور CREATE DATABASE دارا هستند.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- پیش از اجرای هر دستوری، ابتدا باید به MySQL متصل شویم.
- mysql_connect، mysql_error، mysql_query و mysql_close از توابع درونی php هستند که برای کار با پایگاه داده مورد استفاده قرار می گیرند.

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

پس از ساختن دیتابیس نوبت به ایجاد جداول و ردیف ها است که این کار با دستور CREATE TABLE انجام می شود.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- در کد بالا ما query ساخت یک جدول با دو ردیف (ستون) id و table را اجرا کردیم و به هر کدام ویژگی هایی را نسبت دادیم.
- INT و VARCHAR نشان دهنده نوع داده ای است که در آن ردیف (ستون) ذخیره می شود.
- ENGINE=MyISAM برای قرار دادن موتور MyISAM به صورت پیش فرض برای جدولی است که ایجاد می کنیم (در برخی نسخه ها به صورت TYPE=MyISAM قابل قبول است)، برخی نسخه های MySQL به جای MyISAM از موتور INNODB به صورت پیش فرض استفاده می کنند.

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

برای اینکه بتوانیم داده های خود را به زبان فارسی به درستی در دیتابیس ذخیره و بازیابی کنیم، توصیه می شود همواره از یونیکد استاندارد UTF8 استفاده کنید، لذا بعد از ایجاد جدول تکه کد زیر را هم در ادامه، برای آن جدول اجرا نمائید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- ALTER TABLE یک دستور ثانویه است که می توانید به کمک آن روی جداول موجود تغییراتی اعمال نمائید یا به فرض آنها را حذف کنید.
- DEFAULT CHARACTER SET به همراه COLLATE utf8_general_ci، یونیکد پیش فرض یک جدول و ستون های زیر مجموعه آن را تغییر می دهد.
- پس از اینکه یونیکد را بر روی UTF8 تنظیم کردیم برای ارتباط صحیح و مقایسه یکسان کاراکترها باید از COLLATE و قانون utf8_general_ci استفاده کنیم که در مثال بالا این کار انجام شده است.

چاپ این مطلب