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

گویشهای مختلف SQL
اگرچه تمام زبانهای SQL دارای ساختار پایهای مشترکی هستند، اما برخی دستورات و سبکهای خاص در آنها ممکن است کمی متفاوت باشد. گویشهای محبوب شامل MySQL، SQLite، SQL Server، Oracle SQL و موارد دیگر میشوند. PostgreSQL نقطه شروع خوبی برای یادگیری است؛ زیرا به سینتکس استاندارد SQL بسیار نزدیک است و به راحتی میتوان آن را در سایر گویشها نیز به کار گرفت.
برای یادگیری SQL در کنار برنامه نویسی پایتون از آموزش پایتون از صفر تا صد، PyQt6، دیتابیس، git استفاده کنید.
دادههای نمونه
در سراسر این برگه تقلب SQL، از دادههای نمونه airbnb_listings استفاده خواهیم کرد که نشاندهنده آپارتمانهای اجارهای در Airbnb است.
| id | city | country | number_of_rooms | year_listed |
| 1 | Paris | France | 5 | 2018 |
| 2 | Tokyo | Japan | 2 | 2017 |
| 3 | New York | USA | 2 | 2022 |
پرسوجو از جداول
دریافت تمام ستونها از یک جدول
SELECT * FROM airbnb_listings;
بازگرداندن ستون city از جدول
SELECT city FROM airbnb_listings;
دریافت ستونهای city و year_listed از جدول
SELECT city, year_listed FROM airbnb_listings;
دریافت id آگهی و city، مرتبشده بر اساس number_of_rooms به صورت صعودی
SELECT city, year_listed FROM airbnb_listings ORDER BY number_of_rooms ASC;
دریافت id آگهی و city، مرتبشده بر اساس number_of_rooms به صورت نزولی
SELECT city, year_listed FROM airbnb_listings ORDER BY number_of_rooms DESC;
دریافت ۵ ردیف اول از airbnb_listings
SELECT * FROM airbnb_listings LIMIT 5;
دریافت لیستی یکتا از شهرهایی که در آنها آگهی وجود دارد
SELECT DISTINCT city FROM airbnb_listings;
فیلتر کردن بر اساس ستونهای عددی
دریافت تمام آگهیهایی که در آنها number_of_rooms بزرگتر یا مساوی ۳ است
SELECT * FROM airbnb_listings WHERE number_of_rooms >= 3;
دریافت تمام آگهیهایی که در آنها number_of_rooms بزرگتر از ۳ است
SELECT * FROM airbnb_listings WHERE number_of_rooms > 3;
دریافت تمام آگهیهایی که در آنها number_of_rooms دقیقاً برابر با ۳ است
SELECT * FROM airbnb_listings WHERE number_of_rooms = 3;
دریافت تمام آگهیهایی که در آنها number_of_rooms کوچکتر یا مساوی ۳ است
SELECT * FROM airbnb_listings WHERE number_of_rooms <= 3;
دریافت تمام آگهیهایی که در آنها number_of_rooms کوچکتر از ۳ است
SELECT * FROM airbnb_listings WHERE number_of_rooms < 3;
فیلتر کردن ستونها در یک بازه مشخص—دریافت تمام آگهیهایی که بین ۳ تا ۶ اتاق دارند
SELECT * FROM airbnb_listings WHERE number_of_rooms BETWEEN 3 AND 6;
فیلتر کردن بر اساس ستونهای متنی
دریافت تمام آگهیهایی که در شهر ‘Paris’ قرار دارند
SELECT * FROM airbnb_listings WHERE city = 'Paris';
فیلتر کردن یک ستون بر اساس چندین شرط—دریافت آگهیهای واقع در ‘USA’ و ‘France’
SELECT * FROM airbnb_listings WHERE country IN ('USA', 'France');
دریافت تمام آگهیهایی که نام شهر آنها با “j” شروع میشود و به “t” ختم نمیشود
SELECT * FROM airbnb_listings WHERE city LIKE 'j%' AND city NOT LIKE '%t';
فیلتر کردن بر اساس چندین ستون
دریافت تمام آگهیهای “Paris” که در آنها number_of_rooms بزرگتر از ۳ است
SELECT * FROM airbnb_listings WHERE city = 'Paris' AND number_of_rooms > 3;
دریافت تمام آگهیهای “Paris” یا آگهیهایی که پس از سال ۲۰۱۲ ثبت شدهاند
SELECT * FROM airbnb_listings WHERE city = 'Paris' OR year_listed > 2012;
فیلتر کردن بر اساس دادههای مفقود
دریافت تمام آگهیهایی که در آنها مقدار number_of_rooms مفقود است
SELECT * FROM airbnb_listings WHERE number_of_rooms IS NULL;
دریافت تمام آگهیهایی که در آنها مقدار number_of_rooms مفقود نیست
SELECT * FROM airbnb_listings WHERE number_of_rooms IS NOT NULL;
محاسبات تجمیعی ساده
دریافت تعداد کل اتاقهای موجود در تمامی آگهیها
SELECT SUM(number_of_rooms) FROM airbnb_listings;
دریافت میانگین تعداد اتاقها به ازای هر آگهی در تمامی آگهیها
SELECT AVG(number_of_rooms) FROM airbnb_listings;
دریافت آگهی با بیشترین تعداد اتاق در بین تمامی آگهیها
SELECT MAX(number_of_rooms) FROM airbnb_listings;
دریافت آگهی با کمترین تعداد اتاق در بین تمامی آگهیها
SELECT MIN(number_of_rooms) FROM airbnb_listings;
گروهبندی، فیلتر کردن و مرتبسازی
دریافت تعداد کل اتاقها به تفکیک هر کشور
SELECT country, SUM(number_of_rooms) FROM airbnb_listings GROUP BY country;
دریافت میانگین تعداد اتاقها برای هر کشور
SELECT country, AVG(number_of_rooms) FROM airbnb_listings GROUP BY country;
دریافت آگهی با بیشترین تعداد اتاق در هر کشور
SELECT country, MAX(number_of_rooms) FROM airbnb_listings GROUP BY country;
دریافت آگهی با کمترین تعداد اتاق به تفکیک کشور
SELECT country, MIN(number_of_rooms) FROM airbnb_listings GROUP BY country;
دریافت میانگین تعداد اتاقها به ازای هر آگهی برای هر کشور، مرتبشده به صورت صعودی
SELECT country, AVG(number_of_rooms) AS avg_rooms FROM airbnb_listings GROUP BY country ORDER BY avg_rooms ASC;
دریافت میانگین تعداد اتاقها به ازای هر آگهی برای کشورهای Japan و USA
SELECT country, AVG(number_of_rooms) FROM airbnb_listings WHERE country IN ('USA', 'Japan'); GROUP BY country;
دریافت تعداد آگهیها به تفکیک هر کشور
SELECT country, COUNT(id) AS number_of_listings FROM airbnb_listings GROUP BY country;
دریافت تمامی سالهایی که در آنها بیش از ۱۰۰ آگهی در سال ثبت شده است
SELECT year_listed FROM airbnb_listings GROUP BY year_listed HAVING COUNT(id) > 100;
نتیجهگیری
تسلط بر SQL یکی از پایهایترین و در عین حال قدرتمندترین مهارتها در دنیای داده است. این برگه تقلب، ابزارهای لازم برای شروع کوئرینویسی، فیلتر کردن و تحلیل دادهها را در اختیار شما قرار داد. با استفاده مداوم از این دستورات در پروژههای واقعی و تمرین در محیطهایی مانند DataLab، میتوانید به سرعت از یک سطح مبتدی به یک متخصص در مدیریت پایگاههای داده تبدیل شوید.
سوالات متداول
کدام گویش SQL برای شروع یادگیری مناسبتر است؟
PostgreSQL بهترین گزینه برای یادگیری است، زیرا به استانداردهای جهانی SQL بسیار نزدیک است و یادگیری آن انتقال به سایر گویشها مانند MySQL یا SQL Server را آسان میکند.
تفاوت بین دستور WHERE و HAVING در چیست؟
دستور WHERE برای فیلتر کردن ردیفها قبل از گروهبندی استفاده میشود، در حالی که HAVING برای فیلتر کردن نتایج حاصل از گروهبندی و توابع تجمیعی (مانند SUM یا AVG) به کار میرود.
آیا برای یادگیری SQL نیاز به دانش برنامهنویسی قبلی داریم؟
خیر، SQL یک زبان اعلانی (Declarative) با ساختاری شبیه به زبان انگلیسی است و یادگیری آن برای مبتدیان، حتی بدون پیشزمینه برنامهنویسی، بسیار ساده و سریع است.

