SQL ساده شده: ایجاد پرس و جوهای ماژولار و قابل فهم با CTE - KDnuggets

SQL ساده شده: ایجاد پرس و جوهای ماژولار و قابل فهم با CTE - KDnuggets

گره منبع: 3084928

SQL ساده شده: ایجاد پرس و جوهای ماژولار و قابل درک با CTE
تصویر توسط نویسنده 
 

در دنیای داده ها، SQL هنوز به عنوان زبانی برای تعامل با پایگاه های داده است. 

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

با این حال، هر کسی که با پرس و جوهای پیچیده SQL کار کرده باشد، می‌داند که می‌توانند به سرعت به جانورانی سخت تبدیل شوند – خواندن، نگهداری یا استفاده مجدد دشوار است. 

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

اینجاست که Common Table Expressions (CTEs) وارد بازی می‌شوند و هنر نوشتن پرس و جو را به یک کاردستی ساختاریافته‌تر و قابل دسترس‌تر تبدیل می‌کنند.

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

اگر می‌پرسید CTE چیست، در مقاله درستی هستید. 

یک عبارت جدول مشترک (CTE) یک مجموعه نتایج موقت است که در محدوده اجرای یک دستور SQL تعریف شده است. 

 

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

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

در اینجا دلیلی وجود دارد که باید از CTE استفاده کنید:

  • مدولار: شما می توانید منطق پیچیده را به قطعات قابل خواندن تقسیم کنید.
  • خوانایی: درک جریان پرس و جوهای SQL را آسان تر می کند.
  • قابلیت استفاده مجدد: CTE ها را می توان چندین بار در یک پرس و جو ارجاع داد و از تکرار اجتناب کرد.

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

بنابراین، ما همیشه باید پرس و جو خود را با دستور "WITH" شروع کنیم تا شروع به تعریف CTE های خود کنیم. با استفاده از CTE ها، می توانیم هر پرس و جو پیچیده SQL را به زیر تقسیم کنیم: 

- جداول زمانی کوچک که متغیرهای مرتبط را محاسبه می کنند. 

- یک جدول نهایی که فقط آن متغیرهایی را که ما می خواهیم به عنوان خروجی دریافت می کند.

و این دقیقا همان رویکرد MODULAR است که ما در هر کدی می خواهیم!

 

SQL ساده شده: ایجاد پرس و جوهای ماژولار و قابل درک با CTE
تصویر توسط نویسنده
 

بنابراین استفاده از CTE در جستارهایمان به ما این امکان را می دهد:

- یک جدول زمانی را یک بار اجرا کنید و چندین بار به آن ارجاع دهید.

- بهبود خوانایی و ساده کردن منطق پیچیده.

- قابلیت استفاده مجدد کد و طراحی مدولار را ارتقا دهید.

برای درک بهتر این موضوع، می‌توانیم یک مثال عملی از فهرست‌های Airbnb در بارسلون بیاوریم. 

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

برای مثال از آن استفاده خواهیم کرد InsideAirbnb جدول بارسلونا که به شرح زیر است: 

 

SQL ساده شده: ایجاد پرس و جوهای ماژولار و قابل درک با CTE
 

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

کد توسط نویسنده

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

  • داده های محله: یک CTE برای خلاصه کردن داده ها بر اساس محله ایجاد کنید.
  • اطلاعات آپارتمان و میزبان: CTE ها را برای جزئیات در مورد آپارتمان ها و میزبان ها تعریف کنید.
  • معیارهای سطح شهر: CTE دیگری برای جمع آوری آمار در سطح شهر برای مقایسه.
  • مجمع نهایی: CTE ها را در یک عبارت SELECT نهایی ترکیب کنید تا داده ها به طور منسجم ارائه شود.

 

SQL ساده شده: ایجاد پرس و جوهای ماژولار و قابل درک با CTE
تصویر توسط نویسنده
 

و در نهایت با پرس و جوی زیر مواجه می شویم:

کد توسط نویسنده

با استفاده از CTE ها، ما یک پرس و جوی بالقوه هیولایی را به مجموعه ای سازمان یافته از ماژول های داده تبدیل می کنیم. این رویکرد ماژولار کد SQL را بصری تر و سازگارتر با تغییرات می کند. 

اگر الزامات جدیدی ظاهر شد، می‌توانید CTE‌ها را بدون بازنگری کل پرس‌وجو تنظیم یا اضافه کنید.

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

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

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

فرآیند توسعه پرس و جو را ساده می کند و ارتباط منطق پیچیده بازیابی داده ها را با دیگران آسان تر می کند.

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

خود آینده شما - و هر کس دیگری که ممکن است کد شما را بخواند - از شما تشکر خواهد کرد.
 
 

جوزپ فرر یک مهندس تجزیه و تحلیل از بارسلونا است. او در رشته مهندسی فیزیک فارغ التحصیل شد و در حال حاضر در زمینه علم داده های کاربردی برای تحرک انسان کار می کند. او یک تولید کننده محتوای پاره وقت است که بر علم و فناوری داده تمرکز دارد. می توانید با او تماس بگیرید لینک, توییتر or متوسط.

تمبر زمان:

بیشتر از kdnuggets