ورود به MySQL. ورود به تاریخچه پرس و جو MySQL Mysql

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

تنظیمات

قبل از شروع، مطمئن شوید که PhpMyAdmin فعال است. اگر وارد شوید، ممکن است پیامی مانند این را مشاهده کنید:

ذخیره سازی پیکربندی phpMyAdmin به طور کامل پیکربندی نشده است، برخی از ویژگی های توسعه یافته غیرفعال شده اند. برای اینکه بدانید چرا اینجا را کلیک کنید.
(فروشگاه پیکربندی phpMyAdmin به درستی پیکربندی نشده است، برخی از ویژگی ها غیرفعال هستند. برای اطلاع از علت اینجا را کلیک کنید)

$cfg["Servers"][$i]["cfg"] = "pma"; $cfg["Servers"][$i]["controlpass"] = "pmapass"; $cfg["Servers"][$i]["pmadb"] = "phpmyadmin"; $cfg["Servers"][$i]["bookmarktable"] = "pma__bookmark"; $cfg["Servers"][$i]["relation"] = "pma__relation"; $cfg["سرورها"][$i]["table_info"] = "pma__table_info"; $cfg["سرورها"][$i]["pdf_pages"] = "pma__pdf_pages"; $cfg["Servers"][$i]["table_coords"] = "pma__table_coords"; $cfg["سرورها"][$i]["column_info"] = "pma__column_info"; $cfg["Servers"][$i]["history"] = "pma_history"; $cfg["سرورها"][$i]["recent"] = "pma__recent"; $cfg["سرورها"][$i]["table_uiprefs"] = "pma__table_uiprefs"; $cfg["Servers"][$i]["users"] = "pma__users"; $cfg["Servers"][$i]["usergroups"] = "pma__usergroups"; $cfg["Servers"][$i]["navigationhiding"] = "pma__navigationhiding"; $cfg["Servers"][$i]["tracking"] = "pma_tracking"; $cfg["سرورها"][$i]["userconfig"] = "pma__userconfig"; $cfg["سرورها"][$i]["designer_coords"] = "pma__designer_coords"; $cfg["Servers"][$i]["favorite"] = 'pma__favorite'; $cfg["Servers"][$i]["savedsearches"] = "pma__savedsearches";

نام کاربری، رمز عبور و نام پایگاه داده را به دلخواه خود تغییر دهید. مقادیر پیکربندی باقیمانده نام جدول هستند. خالی گذاشتن آنها ویژگی های مربوطه آنها را غیرفعال می کند. اما به طور کلی توصیه می کنم این نام ها را همانطور که هستند بگذارید. بسته به نسخه PhpMyAdmin، همه مقادیر به طور پیش فرض در دسترس نیستند. در این مورد از PhpMyAdmin نسخه 4.2.x استفاده کردم.

پس از اتمام تنظیمات، باید یک پایگاه داده ایجاد کنید. یک پایگاه داده با نامی که در فایل کانفیگ خود مشخص کرده اید ایجاد کنید. سپس به دنبال فایلی به نام create_tables.sql در دستگاه خود بگردید. به احتمال زیاد، فایل داده شدهدر دایرکتوری ریشه PhpMyAdmin نصب شده یا در زیر شاخه اسکریپت ها قرار خواهد گرفت. اگر در لینوکس هستید، مکان /usr/share/phpMyAdmin/examples/ یا /usr/share/doc/phpmyadmin/scripts/ خواهد بود. این فایل را در مقابل پایگاه داده ایجاد شده اجرا کنید. اگر نام جدول را در پیکربندی بالا تغییر دادید، فراموش نکنید که آنها را در پایگاه داده نیز تغییر دهید.

اعطای استفاده در mysql.* به "pma"@"localhost" که توسط "pmapass" شناسایی شده است. در mysql.user به "pma"@"localhost"؛ GRANT SELECT ON mysql.db TO "pma"@"localhost"؛ GRANT SELECT ON mysql.host به "pma"@"localhost"؛ GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv) در mysql.tables_priv TO "pma"@"localhost"; اعطای انتخاب، درج، به روز رسانی، حذف در phpmyadmin.* به "pma"@"localhost";

پس از خروج از PhpMyAdmin و ورود مجدد، باید ببینیم که اخطار از بین رفته است. اگر از دست ندهید، روی پیوند کلیک کنید تا متوجه شوید چه چیزی گم شده است.

بیایید گزینه های اضافی را بررسی کنیم.

نشانک ها

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

وقتی به برگه SQL می روید، در پایین پنلی را می بینید که در آن می توانید یک پرس و جو را از نشانک ها انتخاب کنید. موردی را که می خواهید انتخاب کنید و مشخص کنید که می خواهید با آن چه کاری انجام دهید: اجرا، مشاهده یا حذف.

اتصالات

گزینه رابطه احتمالا بهترین چیزی است که تا به حال استفاده کرده ام. اگر از کلیدهای خارجی استفاده می کنید، چنین کلیدهایی قابل کلیک خواهند بود. وقتی روی یک کلید خارجی کلیک می کنید، به جدول دیگری منتقل می شوید: رکوردی که کلید خارجی به آن اشاره دارد.

همچنین هنگام افزودن یا ویرایش کلید خارجی، به جای فیلد ورودی متن، فهرستی از تمامی گزینه های ممکن به شما نمایش داده می شود.

اطلاعات جدول

البته دیدن لیستی با تمام مقادیر ممکن برای یک کلید خارجی خوب است. اما اگر به جای شناسه یک ستون خاص به ما نشان داده شود بهتر است. برای رسیدن به این هدف، بایدable_info را فعال کنید. به جدول اصلی بروید، به تب "Structure" بروید و روی لینک مشاهده لینک کلیک کنید. اگر به پایین صفحه بروید، می بینید که کدام ستون برای این کلید نمایش داده می شود.

اگر ایجاد کنم رکورد جدیدبا یک کلید خارجی، سپس در کنار مقدار کلید اصلی، مقدار را از ستونی که مشخص کردم می بینم. حالا دیگر نیازی به یادآوری شناسه نیست.

صفحات PDF

روابط بین جداول را می توان به PDF صادر کرد. برای این کار باید pdf_pages، table_coords و relation را در پیکربندی فعال کنید. مرحله بعدی باز کردن پایگاه داده ای است که می خواهید به PDF صادر کنید. روی تب "عملیات" کلیک کنید. در مرحله بعد، روی پیوند "ویرایش یا صادرات نمودار پیوند" کلیک کنید. تمام فیلدها را پر کنید و روی "ارسال" کلیک کنید. اگر فرم را پر کردید، خواهید داشت فایل پی دی افبا تمام داده های لازم

اطلاعات ستون

با گزینه ستون info می توانید به نام ستون ها نظر اضافه کنید. این می تواند زمانی مفید باشد که می خواهید به افراد دیگر بگویید این ستون چیست و چه داده هایی در آن ذخیره می شود. می توانید این کار را با تغییر داده های ستون انجام دهید. ممکن است متوجه شوید که ستون اضافه شده است نظر جدید. اگر نظری را وارد کنید، درست زیر نام ستون ظاهر می شود.

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

داستان

اگر تاریخچه را فعال کنید، تمام درخواست‌های انجام شده از طریق PhpMyAdmin در تاریخچه شما ذخیره می‌شوند تا زمانی که جلسه را پایان دهید یا مرورگر را ببندید. تاریخچه را می توان با فراخوانی کادر محاوره ای "پرس و جو" و کلیک بر روی دکمه "SQL History" مشاهده کرد.

اخیر

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

تنظیمات نمایش جدول

هنگام مشاهده جداول، می توانید ترتیب ستون ها را با کشیدن تغییر دهید. این تغییرات فقط برای شما قابل مشاهده است. ترتیب واقعی ستون ها تغییر نکرده است. علاوه بر این، می توانید ستون ها را به ترتیب صعودی و نزولی مرتب کنید. چنین تغییراتی در جلسه ذخیره می‌شوند و پس از خارج شدن از سیستم، بازنشانی می‌شوند و با تنظیمات پیش‌فرض جایگزین می‌شوند. با این حال، اگر می‌خواهید جداول همیشه در مسیر شما ظاهر شوند، گزینه table_uiprefs را فعال کنید.

کاربران و گروه های کاربری

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

پنهان کردن ناوبری

با navigationhiding می توانید برخی از جداول را در نوار پیمایش پنهان کنید. با کلیک بر روی نماد لامپ در کنار نام جدول، آن را پنهان می کند. همچنین می توانید با کلیک مجدد روی نماد لامپ دوباره آن را قابل مشاهده کنید. به این ترتیب نوار ناوبری را از جداول استفاده نشده خالی خواهید کرد.

ردیابی

با استفاده از این ویژگی می توانید تمام تغییراتی که در جداول خاص ایجاد شده است را با آن پیگیری کنید PhpMyAdmin. با رفتن به جدول و باز کردن تب Tracking می توانید یک نسخه از جدول فعلی ایجاد کنید. حال تمام تغییراتی که با استفاده از PhpMyAdmin در این جدول ایجاد شده است ذخیره می شود. به همین ترتیب می توانید به راحتی تعیین کنید که از زمان ساخت آخرین نسخه چه تغییراتی در جدول ایجاد شده است.

تنظیمات کاربر

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

مختصات طراح پایگاه داده

با فعال کردن designer_coords، می توانید روابط بین جداول خود را در نمای طراح پایگاه داده مشاهده کنید. با رفتن به دیتابیس و کلیک بر روی تب “Designer” چیزی شبیه به تصویر زیر می بینید که روابط بین جداول را نشان می دهد. با این حال، با استفاده از این پنجره می توانید روابط بین جداول را به صورت بصری مدیریت کنید.

موارد دلخواه

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

ذخیره گزینه های جستجو

با باز کردن پایگاه داده و رفتن به برگه "پرس و جو"، می توانید یک جستجوی پیشرفته را تنظیم کنید. گزینه های جستجو را می توان نشانه گذاری کرد. توجه داشته باشید که این نشانک‌های پرس و جوی SQL نیستند که قبلاً مورد بحث قرار گرفت. با این گزینه می توانید پارامترهای جستجو را ذخیره کرده و بعداً از آنها استفاده کنید.

نتیجه

فعال کردن این ویژگی ها ساده است و واقعاً می تواند به مدیریت پایگاه داده از طریق PhpMyAdmin کمک کند. من به خصوص توانایی پیمایش از طریق کلیدهای خارجی را دوست دارم تا بتوانم رکوردهای مرتبط را ببینم. امیدوارم این ویژگی ها را فعال کنید و در کارهای روزمره شما مفید واقع شود.

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

  • ایجاد پایگاه داده در PHPMyAdmin. کار با داده ها با استفاده از PHP، MySQL و HTML
  • سیستم اطلاعاتی برای ارزیابی کارایی و اثربخشی نیروی کار یک کارمند آزمایشگاه
  • توسعه سامانه اطلاعاتی رئیس پایگاه نفت
  • ایجاد سیستم اطلاعاتی برای دیسپچر خدمات خودرو
  • مروری بر عملکرد ابزار نرم افزاری برای مدیریت چرخه تولید یک شرکت

phpMyAdmin برنامه ای است که به زبان PHP نوشته شده و برای مدیریت سرور MySQL از طریق وب جهانی طراحی شده است. phpMyAdmin طیف گسترده ای از عملیات MySQL را پشتیبانی می کند، رایج ترین عملیات استفاده شده با استفاده از رابط کاربری(مدیریت پایگاه‌های داده، جداول، فیلدها، روابط، فهرست‌ها، کاربران، حقوق و غیره)، در عین حال می‌توانید مستقیماً هر موردی را اجرا کنید. پرس و جوی SQL.

درخواست هایک شی پایگاه داده است که برای استخراج داده ها از جداول و ارائه آنها به کاربر به شکلی مناسب استفاده می شود. ویژگی پرس و جوها این است که داده ها را از جداول پایه می گیرند و بر اساس آنها یک جدول موقت ایجاد می کنند. استفاده از کوئری ها از تکرار داده ها در جداول جلوگیری می کند و حداکثر انعطاف را در یافتن و نمایش داده ها در پایگاه داده فراهم می کند.

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

زبانSQLچهار قسمت را به اشتراک بگذارید

  • اپراتورهای تعریف داده(زبان تعریف داده، DDL): ایجاد ("ایجاد")، تغییر ("تغییر")، رها کردن ("حذف").
  • اپراتورهای دستکاری داده ها(زبان دستکاری داده ها، DML): انتخاب کنید ("انتخاب")، درج ("درج")، به روز رسانی ("به روز رسانی") و حذف ("حذف").
  • عبارات تعریف دسترسی به داده(زبان کنترل داده، DCL): اعطا ("اعطا") و لغو ("محروم کردن").
  • بیانیه های کنترل تراکنش(زبان کنترل تراکنش، TCL): commit ("کامل")، برگشت ("بازگشت")، savepoint ("ذخیره").

ما یک دستور از زبان SQL را در نظر خواهیم گرفت - فرمان واکشی داده انتخاب کنید ، بنابراین به لطف این دستور می توانید تمام درخواست های ممکن را سازماندهی کنید.

نحو اپراتورانتخاب کنید

انتخاب کنید <список полей, которые вы хотите отразить в запросе> |*

از جانب <список таблиц, с которыми вы работаете>

[جایی که <предикат-условие выборки или неявное внутреннее соединение таблиц>]

[گروه توسط <список полей группировки> [داشتن <предикат-условия для группировки>]]

[سفارش توسط <список полей, по которым упорядочивает вывод> ]

اطلاعات محصور شده در پرانتز، طبق معمول، اختیاری است.

بیایید به چند نمونه از کوئری ها در phpMyAdmin نگاه کنیم، برای این کار از پایگاه داده قبلی استفاده خواهیم کرد. کمپ _ تکنیکا ". در این پایگاه داده، ما قبلا یک جدول ایجاد کرده ایم. تولید - محصول ” (محصول)، که منعکس کننده ویژگی های مربوط به نهاد است: تولید - محصول_ شناسه (کلید اصلی ), سازنده (سازنده ), مدل (مدل ), خداوند_ ایجاد شده (سال خلقت ) ونوع_ شناسه (نوع محصول، یک کلید خارجی است ) (شکل 1 را ببینید).

همچنین در این پایگاه داده، یک موجودیت دیگر اضافه کردیم " لپ تاپ ” (نوع محصول)، که منعکس کننده ویژگی های مربوط به نهاد است: نوع_ شناسه(کلید اصلی) نوع(نوعی از)، سیستم عامل(سیستم عامل)، پردازنده(CPU) مشاهدهt(حافظه) zvet(رنگی) وزن(وزن) و زنا(قیمت) (شکل 2 را ببینید).

حال قبل از اقدام به جمع‌آوری کوئری‌ها، لازم است بین موجودیت‌ها (جدول) رابطه برقرار شود. برای انجام این کار، ما با جدول کار می کنیم " لپ تاپ"، یعنی مورد را انتخاب کنید " اتصالات » (شکل 3 را ببینید).

پس از آن، صفحه ای باز می شود که در آن باید فیلدهایی را که مسئول ارتباط بین جداول هستند، مشخص کنید (شکل 4 را ببینید). همچنین می توانید به روش دیگری با استفاده از " ارتباط برقرار کنید طراح » (شکل 4 را ببینید)

بنابراین، با ایجاد روابط بین جداول، می‌توانیم با رفتن به منوی بالا به ایجاد پرس‌وجوها ادامه دهیم. SQL ».

درخواست 1. اطلاعات مربوط به تجهیزات موجود برای نسخه 2012 را نمایش دهید (جدول 1 را ببینید).

میز 1

برای اجرای این درخواست از اپراتور استفاده کردیم انتخاب کنید - برای نمایش اطلاعات از فیلد سازنده (سازنده ) و مدل (مدل ) , از جانب - برای توصیف جدولی که می خواهید اطلاعات را از آن صادر کنید. محمول جایی که - برای شرط انتخاب ردیف ها از جدول نتیجه، یعنی داده ها را با سال ایجاد برمی گرداند ( خداوند_ ایجاد شده) برابر بود 2012 ; سفارش توسط - برای مرتب کردن داده ها بر اساس فیلد سازنده (سازنده ) .

درخواست 2.نمایش اطلاعات در مورد تعداد تجهیزات از سازندگان موجود (جدول 2 را ببینید).

جدول 2

با تعداد یکی از به اصطلاح است توابع جمع آوری” که تعداد تاپل های غیر خالی را می شمارد، هستند ابزار قدرتمنددر ساخت کوئری ها، در این مورد شما خروجی داده را بر اساس گروه بندی کرده اید سازنده (تولید کنندگان ) .

درخواست 3. کنار کشیدن هزینه کللپ تاپ ها بر اساس سازندگان موجود، مرتب شده بر اساس مقدار به ترتیب صعودی (به جدول 3 مراجعه کنید).

جدول 3

AT درخواست داده شدهما به داده هایی از دو جدول نیاز داریم، برای این کار باید جداول را به هم بپیوندیم " تولید - محصول "(محصول) و" لپ تاپ » (نوع محصول)، برای این کار از محمول استفاده کنید پیوستن تعیین فیلدهای پیوستن: کلید اصلی جدول لپ تاپ . نوع _ شناسه و کلید خارجی جدول تولید - محصول . نوع _ شناسه . همچنین توجه داشته باشید که هنگام کار با دو یا چند جدول، در بیانیه انتخاب کنید، هنگام توصیف فیلدها لازم است نام جدول ذکر شود زمینه داده شده، مثلا لپ تاپ . نوع . مجموع ، همچنین شمردناشاره دارد به " توابع جمع آوری"، که مجموع مقادیر تاپل ها، در مورد ما، مجموع هزینه تکنیک را محاسبه می کند.

درخواست 4.بازیابی اطلاعات لپ تاپ از سیستم عامل Windows-8، با هزینه بیش از 25 هزار (جدول 4 را ببینید).

جدول 4

درخواست 5.نمایش اطلاعات محصول: سازنده(سازنده)، مدل(مدل)، مشاهدهt(حافظه) پردازنده(پردازنده) و زنا(قیمت)، بر اساس دسته « مناسب "و" نه مناسب » (جدول 5 را ببینید).

جدول 5

نتیجه:

برنامه :

زمانی که (laptop.pamjat = 1000) و (laptop.processor >=2600) و (laptop.processor >=2600) و سپس "podhodit" در غیر این صورت "not podhodit" به عنوان itog، product.maker، product.model، laptop.pamjat به عنوان پیداt_v_Gb، laptop.processor به عنوان پایان می رسد، انتخاب کنید. proc_v_Mgz، laptop.zena از محصول پیوستن به لپ تاپ در laptop.type_ID=product.type_ID که در آن laptop.type مانند "l%" با 1 کاهش، 6 سفارش دهید

با ase پایان - محمول انتخابی، که برای توزیع محصول به دسته ها، مطابق با معیارها استفاده می شود. پسندیدن "1%" یک گزاره است که برای مطابقت دادن رشته ها با یک الگو استفاده می شود. الگو یک رشته است که می تواند از دو کاراکتر خاص استفاده کند: % "و" _ "، جایی که " % "با هر رشته ای (احتمالا خالی) مطابقت دارد و " _ ' با یک کاراکتر منطبق است، هر شخصیت غیر خاص دیگری فقط می تواند با شخصیت های خاص و خود مطابقت داشته باشد. سفارش توسط [ صعودی| توصیف] – طراحی شده برای مرتب سازی نتایج پرس و جو [صعودی (پیش فرض) | نزولی]، مرتب سازی هم برای یک فیلد و هم برای بیشتر امکان پذیر است.

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

کتابشناسی - فهرست کتب

  1. حاشیه نویسی به phpMyAdmin [منبع الکترونیکی] / URL: http://php-myadmin.ru/about/notice.html
  2. پرس و جوهای پایگاه داده و استفاده از آنها انواع درخواست فناوری ایجاد [منبع الکترونیکی] / آدرس اینترنتی: http://www.yaklass.ru/materiali?mode=cht&chtid=514
  3. Ostrovsky S.L. مبانی برنامه نویسی وب برای مدرسه "سایت سازی". سخنرانی 5. PHP + MySQL [Text] / S.L. استروفسکی // انفورماتیک. - 2008.-№21.-p.2-15

گزارش رویدادها اولین و ساده ترین ابزار برای تعیین وضعیت سیستم و شناسایی خطاها هستند. چهار لاگ اصلی در MySQL وجود دارد:

  • گزارش خطا- گزارش خطای استاندارد که در حین کار سرور جمع آوری می شود (از جمله شروع و توقف).
  • Log باینری- گزارشی از تمام دستورات تغییر پایگاه داده، مورد نیاز برای تکرار و پشتیبان گیری.
  • گزارش پرس و جو عمومی- گزارش اصلی درخواست ها؛
  • ثبت پرس و جو کند- ورود به سیستم نمایش داده شد کند.

گزارش خطا

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

Log_error=/var/log/mysql/mysql_error.log

# خطاها در mysql_error.log نوشته می شود

توصیه می کنیم این گزارش را برای فعال نگه دارید تعریف سریعخطاها و برای درک معنای این یا آن خطا، MySQL دارای ابزار خطا است:

Shell> error 13 64 OS کد خطا 13: مجوز رد شد کد خطای OS 64: ماشین در شبکه نیست

# معنی کدهای خطا را توضیح می دهد

ورود به سیستم باینری (معروف به باینری).

تمام دستورات تغییر پایگاه داده در لاگ باینری ثبت می شود که برای تکرار و بازیابی مفید است.

اینجوری روشن میشه:

log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 5 max_binlog_size = 500M

# مکان، تاریخ انقضا و حداکثر اندازهفایل

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

ثبت درخواست

این گزارش شامل تمام پرس و جوهای دریافتی SQL، اطلاعات مربوط به اتصالات مشتری است. این می تواند برای تجزیه و تحلیل و بهینه سازی شاخص و همچنین شناسایی پرس و جوهای اشتباه مفید باشد:

General_log_file = /var/log/mysql/mysql.log general_log = 1

# شامل ورود به سیستم است و مکان فایل را مشخص می کند

همچنین می توان آن را در زمانی که سرور MySQL در حال اجراست فعال/غیرفعال کرد:

SET GLOBAL general_log = "روشن"; SET GLOBAL general_log = "OFF";

# برای اعمال نیازی به راه اندازی مجدد سرور ندارید

ثبت پرس و جو کند

گزارش برای شناسایی پرس و جوهای کند، یعنی ناکارآمد مفید است. در این مقاله بیشتر بخوانید.

دیدن گزارش وقایع

برای مشاهده گزارش‌ها در دبیان (اوبونتو) باید اجرا کنید:

# Error log tail -f /var/log/syslog #Query log tail -f /var/log/mysql/mysql.log # گزارش پرس و جوهای کند tail -f /var/log/mysql/mysql-slow.log

# اگر لاگ ها به طور جداگانه مشخص نشده باشند، در /var/lib/mysql قرار دارند

چرخش لاگ

فراموش نکنید که فایل های گزارش را فشرده (بایگانی، چرخش) کنید تا فضای کمتری از سرور اشغال کنند. برای انجام این کار، از ابزار کمکی استفاده کنید logrotateبا ویرایش فایل کانفیگ /etc/logrotate.d/mysql-server:

# - من همه چیز را در یک بلوک قرار دادم و اسکریپت های اشتراک گذاری شده را اضافه کردم، به طوری که mysql فقط یک بار # flush-logs"d دریافت می کند. # - گزارش خطا منسوخ شده است، اکنون پیام ها به syslog می روند./var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log( چرخش روزانه 7 missingok ایجاد 640 mysql adm فشرده سازی اشتراک اسکریپت ها تست پس چرخش -x /usr/bin/mysqladmin || خروج 0 # اگر این کار انجام نشد، debian.conf را بررسی کنید! MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" if [ -z "`$MYADMIN ping 2>/dev/null`" ]; سپس # واقعاً هیچ mysqld یا بهتر بگوییم یک کاربر از دست رفته debian-sys-maint وجود ندارد؟ # اگر این اتفاق افتاد و خطایی نیست، لطفاً یک اشکال را گزارش کنید. #اگر ps cax | grep -q mysqld; سپس if killall -q -s0 -umysql mysqld; سپس از 1 فی دیگری خارج شوید $MYADMIN flush-logs fi endscript )

# گزارش های لازم را فشرده و بایگانی می کند، فایل ها را پاک می کند

DDL Log

MySQL همچنین یک گزارش زبان توصیف داده ها را نگه می دارد. داده ها را از عملیات هایی مانند DROP_TABLE و ALTER_TABLE جمع آوری می کند. گزارش برای بازیابی خرابی هایی که در طول چنین عملیاتی رخ داده است استفاده می شود. DDL Log یک فایل باینری است که قرار نیست توسط کاربر خوانده شود، بنابراین آن را اصلاح یا حذف نکنید.

مهم ترین

همیشه ثبت خطا را فعال کنید، از گزارش پرس و جو برای بررسی اتصال برنامه به پایگاه داده، تأیید درخواست ها و کار استفاده کنید. گزارش کند درخواست برای بهینه سازی عملکرد MySQL مفید است.

سوال: ms sql query history


چگونه می توان تاریخچه درخواست، (حذف، به روز رسانی...) را مشاهده کرد؟

پاسخ:
پروفایلر کندترین حسابرسی قابل تصور است. Extended Events را می توان بر اساس نیازهای شما سفارشی کرد و همچنین می تواند بارگذاری کند و غیره، اما هر یک از این گزینه ها به منابع نیاز دارند.

سوال: درخواست تاریخچه اجرا


اعلان، آیا می توان جایی در MS SQL جستجو کرد که چه کسی و چه درخواست هایی در یک DB خاص اجرا شده است؟

پاسخ: iluxa1810، این اطلاعات فقط تا حدی در دسترس است. پرس و جوی مانند:

کد T-SQL
1 2 3 4 SELECT deqs.last_execution_time AS [ Time ] , dest.TEXT AS [ Query] FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text (deqs.sql_handle ) AS deqsc.DElastime

برای یک تاریخچه پرس و جو کامل، باید لاگ انجام دهید یا از ابزارهایی مانند SQL Profiler استفاده کنید.

سوال: پرس و جوی Sql برای برگرداندن مقادیر قبلی در پایگاه داده


سلام به همه!

آیا می‌توانید به من بگویید چگونه می‌توان وضعیت‌های سفارش ماقبل آخر را در همه سفارش‌ها از تاریخ خاصی در پایگاه داده بازگرداند؟

شاید نوعی پرس و جوی sql یا شاید نوعی اسکریپت وجود داشته باشد ... بسیار سپاسگزار خواهم بود.

برنامه نویس هنگام ادغام با انبار من کمی ندید و همه سفارشات وضعیت خود را به حالتی تغییر دادند که در تنظیمات ماژول ادغام بود و نمی داند چگونه آن را برگرداند.

آنها فوراً متوجه نشدند و برای بازیابی نسخه قدیمی پایگاه داده خیلی دیر شده بود. در حال حاضر سفارشات جدید در فروشگاه وجود دارد.

پاسخ: شاعرانه,
InnoDB می تواند تاریخچه پرس و جو را ذخیره کند.

ضربه شدید
1 ~/.mysql_history

آخرین نسخه پشتیبان را رول کنید و دستورات را تکرار کنید
خوب، به طور کلی، قبل از هر ادغام، باید یک نسخه پشتیبان تهیه کنید و حتی بهتر است آن را روی یک سرور آزمایشی تست کنید.

سوال: پرس و جوی sql در جستجوی چندین جداول


عصر بخیر. لطفاً به من کمک کنید بفهمم آیا می توانم این کار را انجام دهم یا نیاز به بازسازی پایگاه داده دارم یا اینکه چنین جستجویی نمی تواند اجرا شود.
من روی delphi rad xe10 می نویسم.
من اطلاعات مربوط به کارمند را در یک خط در جدول Workers، یک خط در اندازه لباس و تاریخچه ای که به او داده شده است می نویسم (خیلی از خطوط و تفاوت فقط در ID_rab است).

میخوام یه سرچ کنم
به طوری که در صورت درخواست با نام خانوادگی یا شماره برگه، این اطلاعات به من داده شود:
درباره کارگر از اولین تب در dbgrid1،
ابعاد آن از جدول دوم در dbgrid2
و تاریخچه مربوط به این کارگر از جدول 3 (ممکن است ردیف های زیادی وجود داشته باشد که فقط بر اساس ID_rab متفاوت باشند) در dbgrid3

در جدول اول:

در دومی:

SQL
1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE Size ( ID_razmOdejdi INT NOT NULL IDENTITY (1 , 1 ) , Clothes VARCHAR (4 ) , ID_rab INT , PRIMARY KEY (ID_razmOdejdi) , FOREIGN KEY (ID_rab) مراجع، )

در سوم:

SQL
1 2 3 4 5 6 7 8 9 10 11 ;

3 ADOQuery را همزمان با پرس و جوهای مختلف بسازید؟
من نمی دانم چگونه می توانم آن را از جدول دیگری که متعلق به جدول اول است، خروجی کنم
اگر ممکن بود این کار را انجام دهید: یک نفر را وارد جستجو کردم و او را پیدا کردم و با ID_rab او اطلاعاتی را در جداول دیگر پیدا کردم و در همان زمان در 3 dbgrid مختلف نمایش دادم.

پاسخ:

پیام از روگذر

و اگر تمام اطلاعات مربوط به یک کارمند، اندازه، سابقه، و قرار است به طور کامل حذف شود، آیا می توان این کار را از طریق یک درخواست انجام داد؟

اگر حذف آبشاری را در جدول Employees فعال کنید، حذف یک ردیف در آن، داده ها را از جداول فرعی حذف می کند. در غیر این صورت، باید چندین درخواست DELETE ارائه دهید.

بعد از 14 ساعت و 31 دقیقه اضافه شد
چنین کدی در برابر حملات نام آسیب پذیر است. باید از کوئری ها با پارامتر استفاده کنید.

سوال: یک درخواست - واقعا؟


روز بخیر، آقایان!
لطفا به من بگویید چگونه مشکل زیر را حل کنم ...
سه جدول وجود دارد: کالاها (واقعا تعداد کمی از آنها وجود دارد، حدود 60-80 قطعه)، تاریخچه فروش و موجودی ...

AT ساده شدهساختار به شرح زیر است:
کالاها:
شناسه
نام

تاریخچه سفارش ها:
شناسه
s_date
good_id
قیمت

تعادل:
شناسه
s_date
شماره سفارش
شمردن

هر سه جدول با شناسه مرتبط هستند (goods.id - order_history.good_id، order_history.id - balance.order_id).
وظیفه این است که کل موجودی همه کالاها را برای هر تاریخ دلخواه به دست آورید! یعنی برای هر محصول، من باید رکورد نزدیکترین تاریخ را از موجودی و سابقه فروش (به ترتیب از موجودی، مقدار، از تاریخچه فروش - قیمت) بدست بیاورم.

واضح است که می توانید تمام محصولات را با ID حلقه بزنید و در هر تکرار یک پرس و جوی SQL اجرا کنید، اما به نوعی ... من این گزینه را دوست ندارم! :) آیا این امکان وجود دارد که کار را با ظرافت حل کنید - یک درخواست؟

من برای هر ایده ای سپاسگزار خواهم بود!

پاسخ:من هیچ گونه منع مصرفی نمی بینم. اگر ساختار را مرتب کنید.

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

سوال: پرسش فرعی، به ترکیب برخی از موارد ساده کمک کنید


عصر بخیر! برای کمک بسیار سپاسگزار خواهم بود)) مدت زیادی است که مغزم را درگیر کرده ام.
کمی تاریخ تعدادی از درخواست‌ها با URL مرتبط با آنها وجود دارد، هدف صدور درخواست‌های همپوشانی برای برخی از فهرست‌های URL است که توسط درخواست نیز مشخص می‌شود.

و بنابراین چندین کوئری وجود دارد که به ترتیب اجرا می شوند:
$sql2 = انتخاب url از لیست WHERE `group` = "1" AND `proekt`= "1" GROUP BY url OrDER BY COUNT(*) DESC LIMIT 3 - نماگرفت
من لیستی از URL ها را به تعداد 3 قطعه انتخاب می کنم، سپس آنها را در یک نمای برای درخواست جمع آوری می کنم

$return=array();
$maxcount=mysql_query($sql2);
while($url = mysql_fetch_array($maxcount)) (
$return = $url;
}
foreach ($return as $url1) (//جمع آوری یک رشته از آدرس های اینترنتی برای Muscle از آرایه
if ($frag2==0) ($urls = "`url`=".""".$url1."""؛ $frag2=1; ) else $urls .= "OR `url` = "". $url1.""";
}

در این مورد $urls = `url` = "http://www.MosDance.com/" یا `url`="http://raisky.com/" و غیره.

من لیستی از کلیدهای مربوط به این آدرس ها را نمایش می دهم
«کلید» را از (انتخاب «کلید»، COUNT(*) به عنوان مجموع فهرست از فهرست انتخاب کنید WHERE `group` = "1" و `proekt`= "1" و (."$urls.") GROUP BY `key` ORDER با «مجموع» DESC) به عنوان t2 WHERE t2.total >=3

در واقع سوال اصلی این است که چگونه می توان این تجارت را کاهش داد؟ چگونه url را به درستی جمع آوری کنیم تا بتوانید از شر اسکریپت php crutch که URl را به ترتیب صحیح جمع آوری می کند خلاص شوید و همه آن را مثلاً با یک درخواست از پایگاه داده انجام دهید؟ به طور کلی، چگونه می توان نتیجه نهایی را از یک درخواست هوشمندتر از عصاهای من دریافت کرد؟

پاسخ:

روز خوب!
هرگز COUNT(*) ننویسید. COUNT(`id`) بهتر است.
همچنین RAND(*) را ننویسید. بهتر است، البته، متفاوت بنویسید: در آنها نظرات، توابع و مواردی از این دست وجود دارد.
همه روش های بالا برای انتخاب رکوردها از پایگاه داده سرور mysql را به شدت بارگذاری می کنند. البته اگر 30 هزار رکورد در پایگاه داده نداشته باشید، برای شما دردناک نخواهد بود.

در مورد درخواست:
حفاری به سمت داخلی JOIN. یا میز خود را به من بیاندازید، اگر تکلیف را با جزئیات بیشتری بگویید به شما کمک خواهم کرد، زیرا آنچه من خواندم برای کاوش در کل پنیر بور تنبل است =)

-----
- درس های برنامه نویسی در اینجا تراشه های جالبی هم هست =)

سوال: پرس و جو از دو جدول با معیارهای متعدد


عصر بخیر!

لطفا در مورد سوال زیر به من کمک کنید:
1. یک جدول معاملات با فیلدهای: نام ارز، تاریخ، نوع نرخ و سایر فیلدها وجود دارد
2. جدولی با تاریخچه نرخ ارز در فیلدهای: نام ارز، تاریخ، نوع نرخ، نرخ وجود دارد.

پرس و جو باید بر اساس تمام فیلدها و رکوردهای جدول اول و نرخ ارز از جدول دوم تشکیل شود. علاوه بر این، باید با هر 3 معیار انتخاب مطابقت داشته باشد: نام ارز، تاریخ و نوع نرخ ارز.

پیشاپیش متشکرم

پاسخ:
در سازنده پرس و جو راحت تر خواهید بود.

من فهمیدم که چگونه از طریق SQL یک شادی درونی ایجاد کنم، در نگاه اول ساده است. اما یک سوال وجود دارد:
1. فیلد «نوع تراکنش» در جدول تراکنش وجود دارد
2. پرس و جوی که من انجام می دهم ابتدا برای هر رکورد از جدول معاملات "نوع نرخ ارز" از جدول "انواع معاملات" خارج می شود.
3. درخواست از جدول با نرخ با توجه به معیار "نوع البته" دریافت شده در بند 2 خارج می شود.

به عبارت دیگر: ابتدا 2 جدول (معاملات و انواع معاملات) ادغام می شوند و سپس به هزینه اطلاعات کلیداده های جدول "نرخ ارز" به آنها اضافه می شود.

سوال: دریابید که پرس و جو در کدام رکورد از جدول شکست می خورد


من به موقعیتی برخورد کردم که در آن یک پرس و جو به جدول حقایق یک خطا را برمی گرداند، اما نمی توانم ورودی های فهرست را که منجر به خطا می شوند، پیدا کنم (سؤال در تاریخ است)
خود کوئری تمام رکوردها را از جدول واقعیت به اضافه یک فیلد محاسبه شده از جستجو برمی گرداند. اگر جستجو به درستی پر شده باشد، پرس و جو فرعی یک مقدار را به ازای هر رکورد جدول واقعیت برمی گرداند. اما در واقع، در دایرکتوری در سوابق خطا، که من نمی توانم بگیرم.
شاید بتوانید به نحوی ببینید که خطا در کدام رکورد از جدول واقعیت رخ می دهد؟

پاسخ:خنده دار نیست. مدتها پیش (به کلمه) این بود:
خوب، به محض اینکه ردیاب هذیان کار کرد، بلافاصله دوید ... چه مشکلی دارد؟
قبل از اینکه قهرمانانه درخواست های فوق العاده بنویسید (برای همه موارد)، باید مغز خود را روشن کنید - خوب، حداقل برای چند دقیقه ...
خب شخصاً «رنج» شما برای یک درخواست دیوانه کننده که جای آن سطل زباله است کافی بود.
و شما فقط به خاطر معنایی و نحوی آن "دمپایی پرواز" کردید ...
ایده خوبی است!
و وقتی می توانید، آن را از قفسه بردارید (خوب، حداقل!) - و "مطالعه، مطالعه و مطالعه" (ج). قطعا یک وجود دارد اشتراک گذاریگروه بندی و داشتن...

سوال: برنامه هایی برای پروفایل کردن درخواست ها


با درود!

به من بگویید چه کسی (برنامه ها، IDE و غیره) برای تجزیه پرس و جوها استفاده می کند، به ویژه، آنها به ابزارهای تجزیه و تحلیل پرس و جو برای بهینه سازی آنها علاقه مند هستند. جایی که می توانید طرح پرس و جو را ببینید: نمایه های پرس و جو، اسکن کامل و موارد دیگر.

11) | تاریخ | تاریخ | نام راننده | VARCHAR(100) | درصد | INT (11) | sum_received_from_client | اعشاری (9 , 2 ) | مجموع_تعرفه_برای_درایور | اعشاری (9 , 2 ) | خلاصه_برای_پرداخت | اعشاری (9 , 2 ) | وضعیت_پرداخت | tinyint(1) | درصد_شرکت | INT (11)

فیلد "paid_status" وضعیت پرداخت را ذخیره می کند. مورد نیاز در یک پرس و جو مانند:

دریافت تمام داده ها باید به این صورت باشد، اگر "paid_status = 1"، به جای عددی که در قسمت "summa_for_payed" است، همیشه "0" بگیرید.

اگر در درخواست "و pay_status نه مانند "1" را اضافه کنم، معلوم می شود که خروجی این خط به هیچ وجه دریافت نمی شود، اما شما باید همه چیز را دریافت کنید، فقط با تغییر فیلد "summa_for_payed" از قبل، بسته به وضعیت "payed_status".

بعد از 25 دقیقه اضافه شد
اضافه می کنم، همچنین لازم است در هنگام درخواست با دستور sum(summa_for_payed) برای یک تاریخ مشخص، با در نظر گرفتن مقدار فیلد "paid_status" یا بهتر است بگوییم "payed_status = 1" مبلغ را دریافت کنید. ، سپس فیلدهای "summa_for_payed" به مقدار "0" در نظر گرفته شدند اگر "paid_status = 1"

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

بعد از 34 دقیقه اضافه شد
مرشدهای عزیز.
من پیدا کردم که چه کاری می توان انجام داد

SQL
1 SELECT SUM (IF (`payed_status` = 1 , 0 , `summa_for_payed` ) ) FROM mytable

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