ورودیهای ابزار
بنویسید چه دادهای میخواهید و در صورت امکان ساختار جدولها را بدهید تا کوئری SQL درست برای MySQL، PostgreSQL، SQL Server یا SQLite با توضیح فارسی و نکتههای کارایی بگیرید.
نوشتن کوئری SQL با هوش مصنوعی برای چه کسانی است؟
نوشتن کوئری SQL با هوش مصنوعی فاصلهی «میدانم چه دادهای میخواهم» تا «کوئری درست» را کوتاه میکند. درخواست را فارسی مینویسید، مثل «ده مشتری که در سه ماه گذشته بیشترین خرید را داشتهاند»، و ابزار کوئری را برای همان پایگاه دادهای که انتخاب کردهاید مینویسد، بخشبهبخش به فارسی توضیح میدهد و اگر لازم باشد ایندکس پیشنهاد میکند.
تحلیلگرهای داده و گزارشسازها، برنامهنویسهای بکاند که کوئری پیچیده با JOIN و GROUP BY لازم دارند، مدیرهای محصولی که میخواهند خودشان یک عدد را از دیتابیس دربیاورند و دانشجوهای درس پایگاه داده کاربران اصلیاند.
فرم را چطور پر کنیم؟
- چه میخواهید؟ خروجی را دقیق توصیف کنید: کدام ستونها، چه بازهی زمانی، چه مرتبسازی و چند ردیف. عبارتی مثل «با جمع مبلغ، از بیشترین به کمترین» ابهام را از بین میبرد.
- ساختار جدولها (اختیاری ولی مهم): دستورهای CREATE TABLE یا فهرست سادهی جدولها و ستونها را بچسبانید. اگر خالی بماند، ابزار نام جدولها و ستونهای معقول فرض میکند و فرضها را صریح میگوید تا با نامهای واقعی عوض کنید.
- پایگاه داده: MySQL، PostgreSQL، SQL Server، SQLite یا Oracle. کوئری فقط با امکاناتی نوشته میشود که همان پایگاه داده دارد؛ مثلاً
LIMITدر MySQL وTOPدر SQL Server.
نمونهی ورودی
| خانه | نمونه |
|---|---|
| چه میخواهید؟ | ده مشتری که در سه ماه گذشته بیشترین خرید را داشتهاند، با تعداد سفارش و جمع مبلغ؛ فقط سفارشهای پرداختشده |
| ساختار جدولها | customers(id, name, city) و orders(id, customer_id, total, status, created_at) |
| پایگاه داده | PostgreSQL |
پاسخ یک کوئری در بلوک کد sql است که دو جدول را JOIN میکند، سفارشها را با وضعیت پرداختشده و بازهی سه ماه اخیر فیلتر میکند، با GROUP BY تعداد و جمع را حساب میکند و ده ردیف اول را برمیگرداند. زیرش توضیح بخشبهبخش میآید و برای جدولهای بزرگ، پیشنهاد ایندکسی روی orders(status, created_at). چون مقدار دقیق وضعیت «پرداختشده» داده نشده، ابزار فرضش را میگوید.
نکتههایی برای کوئری امن و درست
- اول SELECT، بعد تغییر: برای UPDATE، DELETE و DROP ابزار هشدار میدهد و پیشنهاد میکند اول با SELECT یا داخل تراکنش امتحان کنید؛ این توصیه را جدی بگیرید.
- ورودی کاربر را پارامتری کنید: اگر کوئری در برنامه اجرا میشود، مقدارها را مثل نمونهی ابزار با پارامتر بفرستید، نه با چسباندن رشته؛ این جلوی SQL Injection را میگیرد.
- روی دادهی شناختهشده آزمایش کنید: نتیجه را با چند ردیفی که جوابشان را میدانید بسنجید.
- کوئری کند را بهینه کنید: پاسخ در یک گفتگو باز میشود؛ خروجی EXPLAIN را همانجا بچسبانید و بپرسید چرا کند است.
برای ابزارها و مدلهای دیگر کدنویسی، برنامهنویسی با هوش مصنوعی را ببینید. برای تحلیل داده و گزارشسازی پیوسته، با دستیار تحلیلگر داده کار کنید، و اگر داده در صفحهی گسترده است، فرمول اکسل و گوگلشیت را.
سوالات متداول
به دیتابیس من وصل میشود؟
نه. ابزار فقط متن کوئری را مینویسد و به هیچ پایگاه دادهای وصل نمیشود. کوئری را خودتان در ابزار مدیریت دیتابیس مثل DBeaver یا phpMyAdmin اجرا میکنید، پس دادههای شما از دیتابیس بیرون نمیآیند.
بدون دادن ساختار جدول هم جواب درست میدهد؟
کوئری از نظر نحوی درست است، اما نام جدولها و ستونها فرضیاند و ابزار آنها را جدا میگوید. برای کوئری قابل اجرا، دستکم نام ستونهای مربوط را در خانهی ساختار بدهید.
کوئری موجودم را توضیح هم میدهد؟
این فرم برای ساختن کوئری تازه است. کوئری خودتان را در همان گفتگو بچسبانید و توضیح، اصلاح یا تبدیل به پایگاه دادهی دیگر را بخواهید؛ مثلاً یک کوئری SQL Server را برای PostgreSQL بازنویسی کند.