آموزش پایگاه داده MySQL — مجموعه مقالات جامع وبلاگ فرادرس

MySQL یک سیستم مدیریت پایگاه داده رابطهای (RDBMS) است. نام آن ترکیبی از My که برگرفته از نام دختر بنیانگذار آن «مایکل ویدینیِس» (Michael Widenius) و SQL است که اختصاری برای عبارت «زبان کوئری ساختیافته» (Structured Query Language) است. پروژه توسعه MySQL کد منبع آن را تحت شرایط مجوز GNU و همچنین تحت توافقنامههای مالکیتی مختلف منتشر کرده است. MySQL از سوی یک شرکت سوئدی به نام MySQL AB تصاحب و اسپانسر شده و اینک تحت مالکیت شرکت Oracle Corporation است. همچنین چندین نسخه پولی برای خرید عرضه شدهاند که برخی کارکردهای اضافی دارند.
MySQL یک کامپوننت اصلی مجموعه نرمافزار اپلیکیشن وب متن-باز LAMP است. LAMP اختصاری برای عبارتهای «Linux, Apache, MySQL, Perl/PHP/Python» محسوب میشود. اپلیکیشنهای مشهوری از پایگاه داده MySQL استفاده میکنند شامل TYPO3 ،MODx ،Joomla ،WordPress ،Simple Machines Forum ،phpBB ،MyBB و دروپال هستند. MySQL همچنین در برخی وبسایتهای بزرگ و مشهور مانند گوگل (در بخشهای غیر مرتبط با جستجو)، فیسبوک، توییتر، فلیکر و یوتیوب مورد استفاده قرار میگیرد.
MySQL به زبان C و ++C نوشته شده است. پارسر SQL آن نیز در برنامه yacc نوشته شده است؛ اما از یک تحلیلگر لغوی home-brewed استفاده میکند. MySQL روی پلتفرمهای مختلف کار میکند که شامل ویندوز مایکروسافت، لینوکس، macOS ،OpenBSD ،OpenSolaris ،OS/2 و Oracle Solaris, Symbian میشود.
نرمافزار سرور MySQL و کتابخانههای کلاینت از توزیع با «مجوز دوگانه» (dual-licensing) استفاده میکنند. یعنی از تاریخ 28 ژوئن 2000، تحت نسخه GPL 2 منتشر شدهاند و از سال 2009 با استثنای مجوز FLOSS بسط یافتهاند و از مجوز مالکیتی نیز بهره میگیرند.
ما در مجله فرادرس در طی یک سری مطالب به بررسی مفاهیم، ویژگیها، امکانات و وجوه مختلف این سیستم محبوب مدیریت پایگاه داده رابطهای پرداختیم که عناوین و توضیح هر یک از این نوشتهها را در ادامه ملاحظه میکنید.
در این نوشته به معرفی مفهوم پایگاه داده و انواع پایگاه داده رابطهای و اصطلاحهای مرتبط با آنها پرداختهایم. در ادامه در مورد پایگاه داده MySQL توضیحاتی ارائه شده است.
در این مقاله روش نصب MySQL روی لینوکس/یونیکس و ویندوز معرفی شده است. همچنین روش بررسی نصب، اجرای MySQL پس از نصب و اجرای آن در زمان بوت شدن سیستم نیز معرفی شدهاند.
در این بخش از سلسله مطالب آموزش پایگاه داده MySQL به آموزش شیوه اجرا و متوقف کردن این پایگاه داده برای مدیریت MySQL محبوب پرداخته شده است. ابتدا راهاندازی یک حساب کاربری MySQL توضیح داده میشود و سپس فایل تنظیمات و همچنین دستورهای مرتبط با مدیریت این پایگاه داده ارائه شدهاند.
در این بخش از مطالب راهنمای MySQL به طور عمده بر روی کاربرد MySQL در محیط PHP تمرکز شده است. PHP تابعهای مختلفی برای اتصال به پایگاه داده MySQL و دستکاری رکوردهای داده درون آن ارائه کرده است که در این نوشته به تفصیل مورد بررسی قرار گرفتهاند.
زمانی که به یک سرور MySQL وصل شدید، لازم است که یک پایگاه داده را انتخاب کنید تا بتوانید روی آن کاری انجام دهید. دلیل این امر آن است که ممکن است بیش از یک پایگاه داده در سرور MySQL وجود داشته باشند. برای انتخاب یک پایگاه داده MySQL دو روش وجود دارد یکی از آنها از طریق برنامه mysqladmin و دیگری از طریق نوشتن یک اسکریپت PHP است که در این مقاله ارائه شده است.
در پایگاههای داده MySQL تعریف کردن صحیح فیلدها در یک جدول برای بهینهسازی کلی آن پایگاه داده بسیار حائز اهمیت است. از این رو در این نوشته به معرفی انواع دادههای عددی، انواع دادههای تاریخ و زمان، و انواع داده رشتهای پرداختهایم.
در پایگاه داده MySQL همه چیز در جدولها اتفاق میافتد. در این بخش از سلسله مطالب راهنمای MySQL به روشهای ایجاد و حذف جدولها از طریق اعلان فرمان و همچنین اسکریپت PHP پرداختهایم.
برای درج دادهها در جدولهای MySQL باید از دستور INSERT INTO استفاده کنید. میتوان دادهها را با استفاده از اعلان <mysql یا از طریق اسکریپت PHP در جدولهای MySQL وارد کرد. این روشهای گوناگون درج دادهها در جدولهای MySQL در این نوشته معرفی شدهاند.
در ای نبخش از مجموعه مطالب راهنمای MySQL به معرفی کوئری SELECT پرداختهایم. دستور Select در SQL برای دریافت دادهها از پایگاه داده MySQL استفاده میشود. شما میتوانید از این دستور در اعلان <mysql یا در اسکریپتهای مختلفی از قبیل PHP استفاده کنید.
WHERE یک بند یا clause در پایگاه داده MySQL است که از آن به همراه دستورهای دیگر برای فیلتر کردن نتایج بازگشتی استفاده میشود. در واقع با استفاده از بند WHERE میتوانیم یک معیار انتخاب برای گزینش رکوردهای مورد تقاضا از یک جدول تعیین کنیم.
هنگام کار با پایگاه داده ممکن است مواردی پیش بیاید که لازم باشد، دادههای موجود در جدولهای MySQL اصلاح شوند. این کار با استفاده از دستور UPDATE در MySQL ممکن است. بدین ترتیب مقدار فیلد در هر یک از جدولهای MySQL تغییر مییابد. در این نوشته به بررسی روشهای بهروزرسانی دادههای موجود در این پایگاه داده با استفاده از اعلان فرمان و اسکریپت PHP پرداختهایم.
اگر بخواهیم یک رکورد را از یک جدول MySQL حذف کنیم، میتوانیم از دستور SQL به صورت DELETE FROM استفاده کنید. این دستور در اعلان فرمان <mysql و همچنین هر اسکریپت دیگر مانند PHP قبل استفاده است.
بند LIKE همانند بند WHERE برای فیلتر کردن نتایج یک کوئری دیگر استفاده میشود. اما برخلاف WHERE که یک معیار دقیق برای فیلتراسیون نتایج ارائه میشود، در LIKE میتوانیم برخی خصوصیات رکوردهایی که میخواهیم فیلتر شوند را به طور نسبی بیان کنیم. به همین دلیل در این مورد آزادی عمل بیشتری برای کار با دادهها پدید میآید.
زمانی که رکوردهای مختلف در پایگاه داده MySQL توسط دستورهای مختلف انتخاب میشوند، سرور MySQL میتواند آنها را به هر ترتیبی که دوست دارد بازگرداند؛ اما با افزودن بند ORDER BY میتوان نتایج را برحسب هر ترتیبی که مورد نیاز است مرتب ساخت.
در کاربردهای واقعی MySQL در اغلب موارد باید دادهها را در یک کوئری منفرد از چندین جدول دریافت کنید. چنین کاری در MySQL از طریق عملگر JOIN (الحاق) امکانپذیر است. عمل Join کردن MySQL به معنی ترکیب کردن دو یا چند جدول در یک جدول است.
موقعیتهایی که شامل مقادیر NULL هستند، همیشه موقعیتهای ویژهای محسوب میشوند، چون نمیتوان از = NULL یا != NULL برای بررسی مقادیر NULL در ستونها استفاده کرد. چنین مقایسههایی همواره شکست میخورند زیرا نمیتوان تعیین کرد که مقدار آن true یا false است. برخی اوقات حتی مقایسه NULL = NULL نیز عمل نمیکند. در MySQL برای این که ببینیم ستونی NULL است یا نیست از عبارتهای IS NULL یا IS NOT NULL استفاده میکنیم.
MySQL از نوعی الگوی دیگر عملیات تطبیق نیز پشتیبانی میکند که مبتنی بر عبارتهای منظم (regular expressions) و عملگر Regexp است. اگر با PHP یا Perl آشنا باشید، در این صورت به سادگی این عملگر را درک میکنید، زیرا عملکرد تطبیق آن شبیه فرایند عبارتهای منظم است.
یک «تراکنش» (transaction)، گروهی متوالی از عملیات دستکاری پایگاه داده است که به صورت یک واحد کاری مجزا اجرا میشود. به بیان دیگر، یک تراکنش هرگز کامل نمیشود؛ مگر اینکه هر یک از اعمال درون گروه موفقیتآمیز باشند. اگر هر یک از اعمال درون تراکنش با شکست مواجه شوند، کل تراکنش شکست میخورد.
دستور ALTER در MySQL در مواردی به کار میآید که بخواهیم نام یکی از جدولها یا یکی از فیلدهای جدول را تغییر دهیم، یا وقتی میخواهیم یک ستون به جدول اضافه یا حذف کنیم از آن استفاده میشود. در این نوشته روشهای مختلف استفاده و کاربردهای این دستور MySQL معرفی شدهاند.
منظور از اندیس در پایگاه داده ساختاری است که باعث بهبود سرعت عملیات در یک جدول میشود. اندیسها را میتوان با استفاده از یک یا چند ستون ایجاد کرد و مبنایی برای جستجوی تصادفی سریع و مرتبسازی بهینه دسترسی به رکوردها تشکیل داد.
جدولهای موقت در برخی موارد که میخواهید دادههای موقتی را در پایگاه داده ذخیره کنید، میتوانند بسیار مفید باشند. جدولهای موقت تنها تا زمانی دوام میآورند که نشست کنونی باز باشد. اگر کدی را در یک اسکریپت PHP اجرا میکنید، در این صورت جدول موقت به طور خودکار زمانی که اجرای اسکریپت پایان یافت تخریب میشود. اگر از طریق برنامه کلاینت MySQL به آن وصل شدهاید، در این صورت جدولهای موقت تا زمان بستن کلاینت یا تخریب دستی جدول باقی میمانند.
کلون کردن جدول در مواردی مفید است که بخواهیم یک کپی دقیق از جدولی با همان اندیسها و دادهها داشته باشیم. در این موارد میتوانیم از دستور Clone استفاده کنیم.
در مواردی لازم است برخی اطلاعات را در مورد پایگاه داده به دست آوریم. در این موارد میتوانیم از برخی دستورهای خاصی در سیستم MySQL پیشبینی شدهاند استفاده کنیم. برای نمونه میتوانیم تعداد ردیفهایی که از یک کوئری تأثیر پذیرفتهاند را به دست آوریم، جدولها و پایگاههای داده را فهرست کنیم، و متا دیتا یا فراداده سرور را دریافت کنیم.
در MySQL دنباله به مجموعهای از اعداد صحیح 1، 2، 3، … گفته میشود که به ترتیب برای درخواست مشخصی ایجاد شدهاند. دنبالهها به طور مکرر در پایگاه داده مورد استفاده قرار میگیرند، زیرا اپلیکیشنهای زیادی نیازمند این هستند که هر ردیف در یک جدول شامل یک مقدار یکتا باشد و دنبالهها روشی آسان برای تولید چنین مقادیری ارائه میکنند. در این بخش از سلسله مطالب راهنمای MySQL به معرفی شیوه استفاده از دنبالهها در MySQL پرداخته شده است.
به طور کلی جدولها یا مجموعه نتایج حاصل از کوئریها، گاهی اوقات شامل رکوردهای تکراری هستند. در اغلب موارد این وضعیت مجاز است، اما در پارهای موارد نیز لازم است که رکوردهای تکراری حذف شوند. بدین ترتیب باید رکوردهای تکراری شناسایی شده و از جدول حذف شوند. در این بخش از سلسله مطالب راهنمای جامع MySQL به توصیف روش جلوگیری از رخداد رکوردهای مکرر در یک جدول و شیوه حذف رکوردهای از قبل موجود پرداخته شده است.
اگر شما ورودی کاربر را از طریق یک صفحه وب دریافت کرده و آن را در پایگاه داده MySQL درج کنید، این احتمال وجود دارد که در معرض مشکلات امنیتی گستردهای به صورت تزریق SQL یا (SQL Injection) قرار بگیرید. در این مطلب از سلسله مقالات راهنمای MySQL به شما کمک میکنیم تا از وقوع چنین حالتی جلوگیری کرده و اسکریپتها و گزارههای MySQL را امنتر بکنید.
در موارد گوناگونی موقعیتی پیش میآید که در آنها مجبور هستیم برخی جدولها، اندیسها یا کل یک پایگاه داده را به مکان دیگری منتقل کنیم. از جمله این موارد در زمان پشتیبانگیری از پایگاه داده است. در این نوشته به بررسی روشهای مختلف ممکن برای اکسپورت کردن دادههای یک پایگاه داده MySQL میپردازیم.
دو روش ساده برای بارگذاری دادهها در پایگاه داده MySQL از یک فایل قبلاً پشتیبانگیری شده وجود دارد که شامل استفاده از دستور LOAD DATA و همچنین ایمپورت کردن دادهها با بهرهگیری از گزاره mysqlimport است. همچنین در این آخرین بخش از سلسله مطالب راهنمای جامع MySQL به معرفی روشهای مدیریت گیومهها و کاراکترهای خاص پرداختهایم.
سخن پایانی
بدین ترتیب به پایان این مطلب معرفی سلسله مطالب راهنمای جامع سیستم مدیریت پایگاه داده MySQL میرسیم. اگر فرصت کافی برای مطالعه همه این مطالب داشته باشید، در انتها میتوانید مطمئن باشید که دانش خوبی در خصوص این پایگاه داده کسب کردهاید و میتوانید آن را نصب و راهاندازی کنید و در اپلیکیشنهای مختلف خود از آن بهره بگیرید. به خصوص در زمان کار با آن از طریق زبان برنامهنویسی PHP اطلاعات مناسبی در اختیار خواهید داشت.
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای پایگاه داده و سیستم های مدیریت اطلاعات
- آموزش پایگاه داده ها در جاوا
- مجموعه آموزشهای مهندسی نرم افزار
- آموزش پیاده سازی یک پروژه وب کامل و ساده
- راهنمای نصب (Nginx ،MySQL ،PHP (LEMP روی اوبونتو – به زبان ساده
==