تصویر توسط نویسنده
در دنیای داده ها، SQL هنوز به عنوان زبانی برای تعامل با پایگاه های داده است.
هنوز هم امروزه این زبان به عنوان یکی از پرکاربردترین زبانها برای مقابله با دادهها میباشد و هنوز هم برای هر حرفهای دادهای ضروری است.
با این حال، هر کسی که با پرس و جوهای پیچیده SQL کار کرده باشد، میداند که میتوانند به سرعت به جانورانی سخت تبدیل شوند – خواندن، نگهداری یا استفاده مجدد دشوار است.
به همین دلیل است که امروزه دانستن SQL کافی نیست، ما باید در ساخت پرس و جوها خوب باشیم. و این در واقع نوعی هنر است.
اینجاست که Common Table Expressions (CTEs) وارد بازی میشوند و هنر نوشتن پرس و جو را به یک کاردستی ساختاریافتهتر و قابل دسترستر تبدیل میکنند.
پس بیایید با هم نحوه کدنویسی پرس و جوهای قابل خواندن و استفاده مجدد را کشف کنیم.
اگر میپرسید CTE چیست، در مقاله درستی هستید.
یک عبارت جدول مشترک (CTE) یک مجموعه نتایج موقت است که در محدوده اجرای یک دستور SQL تعریف شده است.
آنها جداول زمانی هستند که می توانند چندین بار در یک پرس و جو به آنها ارجاع داده شوند و معمولاً برای ساده کردن اتصالات پیچیده و پرس و جوهای فرعی با هدف نهایی افزایش خوانایی و سازماندهی کد SQL استفاده می شوند.
بنابراین آنها ابزار قدرتمندی برای تجزیه پرس و جوهای پیچیده به بخش های ساده تر هستند.
در اینجا دلیلی وجود دارد که باید از CTE استفاده کنید:
- مدولار: شما می توانید منطق پیچیده را به قطعات قابل خواندن تقسیم کنید.
- خوانایی: درک جریان پرس و جوهای SQL را آسان تر می کند.
- قابلیت استفاده مجدد: CTE ها را می توان چندین بار در یک پرس و جو ارجاع داد و از تکرار اجتناب کرد.
سحر و جادو با عبارت WITH شروع می شود، که قبل از پرس و جو اصلی شما قرار می گیرد و جداول زمانی مختلف (CTE) را با نام مستعار تعریف می کند.
بنابراین، ما همیشه باید پرس و جو خود را با دستور "WITH" شروع کنیم تا شروع به تعریف CTE های خود کنیم. با استفاده از CTE ها، می توانیم هر پرس و جو پیچیده SQL را به زیر تقسیم کنیم:
- جداول زمانی کوچک که متغیرهای مرتبط را محاسبه می کنند.
- یک جدول نهایی که فقط آن متغیرهایی را که ما می خواهیم به عنوان خروجی دریافت می کند.
و این دقیقا همان رویکرد MODULAR است که ما در هر کدی می خواهیم!
تصویر توسط نویسنده
بنابراین استفاده از CTE در جستارهایمان به ما این امکان را می دهد:
- یک جدول زمانی را یک بار اجرا کنید و چندین بار به آن ارجاع دهید.
- بهبود خوانایی و ساده کردن منطق پیچیده.
- قابلیت استفاده مجدد کد و طراحی مدولار را ارتقا دهید.
برای درک بهتر این موضوع، میتوانیم یک مثال عملی از فهرستهای Airbnb در بارسلون بیاوریم.
تصور کنید ما می خواهیم عملکرد لیست ها را بر اساس محله تجزیه و تحلیل کنیم و آن را با عملکرد کلی شهر مقایسه کنیم. شما باید اطلاعات مربوط به محله ها، آپارتمان های جداگانه، میزبان ها و قیمت ها را جمع آوری کنید.
برای مثال از آن استفاده خواهیم کرد InsideAirbnb جدول بارسلونا که به شرح زیر است:
یک رویکرد ساده لوحانه ممکن است شما را به ایجاد سوالات فرعی تو در تو سوق دهد که به سرعت تبدیل به یک کابوس تعمیر و نگهداری می شوند، مانند آنچه در زیر آمده است:
کد توسط نویسنده
درعوض، میتوانیم از CTEها برای تقسیمبندی پرس و جو خود در بخشهای منطقی استفاده کنیم - هر کدام قطعهای از پازل را تعریف میکنند.
- داده های محله: یک CTE برای خلاصه کردن داده ها بر اساس محله ایجاد کنید.
- اطلاعات آپارتمان و میزبان: CTE ها را برای جزئیات در مورد آپارتمان ها و میزبان ها تعریف کنید.
- معیارهای سطح شهر: CTE دیگری برای جمع آوری آمار در سطح شهر برای مقایسه.
- مجمع نهایی: CTE ها را در یک عبارت SELECT نهایی ترکیب کنید تا داده ها به طور منسجم ارائه شود.
تصویر توسط نویسنده
و در نهایت با پرس و جوی زیر مواجه می شویم:
کد توسط نویسنده
با استفاده از CTE ها، ما یک پرس و جوی بالقوه هیولایی را به مجموعه ای سازمان یافته از ماژول های داده تبدیل می کنیم. این رویکرد ماژولار کد SQL را بصری تر و سازگارتر با تغییرات می کند.
اگر الزامات جدیدی ظاهر شد، میتوانید CTEها را بدون بازنگری کل پرسوجو تنظیم یا اضافه کنید.
هنگامی که CTE های خود را ایجاد کردید، می توانید از آنها برای انجام تجزیه و تحلیل مقایسه ای مجدد استفاده کنید. برای مثال، اگر میخواهید دادههای محله را با معیارهای سطح شهر مقایسه کنید، میتوانید CTEهای خود را در یک سری عملیات JOIN ارجاع دهید.
این نه تنها باعث صرفه جویی در زمان می شود، بلکه کد شما را نیز کارآمد نگه می دارد، زیرا مجبور نخواهید بود همان پرس و جو را دو بار تکرار کنید!
CTE ها گواهی بر این اصل هستند که یک ساختار کوچک به برنامه نویسی کمک زیادی می کند. با استفاده از CTE ها، می توانید پرس و جوهای SQL واضح تر، قابل نگهداری تر و قابل استفاده مجددتر بنویسید.
فرآیند توسعه پرس و جو را ساده می کند و ارتباط منطق پیچیده بازیابی داده ها را با دیگران آسان تر می کند.
به یاد داشته باشید، دفعه بعد که میخواهید شروع به نوشتن یک هیولای فرعی تودرتو با چند پیوستگی کنید، آن را با CTE تجزیه کنید.
خود آینده شما - و هر کس دیگری که ممکن است کد شما را بخواند - از شما تشکر خواهد کرد.
جوزپ فرر یک مهندس تجزیه و تحلیل از بارسلونا است. او در رشته مهندسی فیزیک فارغ التحصیل شد و در حال حاضر در زمینه علم داده های کاربردی برای تحرک انسان کار می کند. او یک تولید کننده محتوای پاره وقت است که بر علم و فناوری داده تمرکز دارد. می توانید با او تماس بگیرید لینک, توییتر or متوسط.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoData.Network Vertical Generative Ai. به خودت قدرت بده دسترسی به اینجا.
- PlatoAiStream. هوش وب 3 دانش تقویت شده دسترسی به اینجا.
- PlatoESG. کربن ، CleanTech، انرژی، محیط، خورشیدی، مدیریت پسماند دسترسی به اینجا.
- PlatoHealth. هوش بیوتکنولوژی و آزمایشات بالینی. دسترسی به اینجا.
- منبع: https://www.kdnuggets.com/sql-simplified-crafting-modular-and-understandable-queries-with-ctes?utm_source=rss&utm_medium=rss&utm_campaign=sql-simplified-crafting-modular-and-understandable-queries-with-ctes
- : دارد
- :است
- :نه
- :جایی که
- $UP
- a
- درباره ما
- واقعا
- اضافه کردن
- تنظیم کردن
- تصویب
- در برابر
- Airbnb
- اجازه می دهد تا
- همچنین
- همیشه
- an
- تحلیل
- علم تجزیه و تحلیل
- تحلیل
- و
- دیگر
- هر
- هر کس
- آپارتمان
- اعمال می شود
- روش
- قابل دسترسی
- هستند
- هنر
- مقاله
- AS
- مجلس
- At
- اجتناب از
- بارسلونا
- BE
- شدن
- بهتر
- شکستن
- شکستن
- اما
- by
- CAN
- تبادل
- واضح تر
- رمز
- ترکیب
- بیا
- مشترک
- ارتباط
- مقايسه كردن
- مقایسه
- پیچیده
- محاسبه
- در نظر بگیرید
- در نظر گرفته
- تماس
- محتوا
- سادگی
- ایجاد
- خالق
- در حال حاضر
- داده ها
- علم اطلاعات
- پایگاه های داده
- مقدار
- مشخص
- تعریف می کند
- تعریف کردن
- طرح
- جزئیات
- پروژه
- مختلف
- كشف كردن
- پایین
- آسان تر
- موثر
- دیگر
- سوار شدن
- ظهور
- پایان
- مهندس
- مهندسی
- کافی
- تمام
- تاسیس
- مثال
- اجرا کردن
- اعدام
- بیان
- اصطلاحات
- رشته
- نهایی
- پیدا کردن
- جریان
- متمرکز شده است
- پیروی
- به دنبال آن است
- برای
- از جانب
- آینده
- جمع آوری
- هدف
- می رود
- خوب
- آیا
- he
- او را
- میزبان
- میزبان
- چگونه
- چگونه
- HTTP
- HTTPS
- انسان
- if
- بهبود
- in
- افزایش
- فرد
- اطلاعات
- نمونه
- تعامل
- به
- حسی
- IT
- پیوستن
- می پیوندد
- JPG
- kdnuggets
- دانستن
- می داند
- زبان ها
- رهبری
- پسندیدن
- لینک
- لیست
- کوچک
- منطق
- منطقی
- طولانی
- مطالب
- شعبده بازي
- اصلی
- حفظ
- قابل نگهداری
- نگهداری
- باعث می شود
- بسیاری
- متریک
- قدرت
- تحرک
- پیمانهای
- ماژول ها
- بیش
- اکثر
- چندگانه
- باید در
- نیاز
- جدید
- بعد
- of
- on
- یک بار
- ONE
- فقط
- عملیات
- or
- سفارش
- کدام سازمان ها
- سازمان یافته
- دیگران
- ما
- خارج
- تولید
- به طور کلی
- خود
- بخش
- انجام دادن
- کارایی
- فیزیک
- قطعه
- افلاطون
- هوش داده افلاطون
- PlatoData
- بازی
- بالقوه
- قوی
- عملی
- دقیقا
- در حال حاضر
- قیمت گذاری
- اصل
- روند
- حرفه ای
- برنامه نويسي
- ترویج
- پازل
- نمایش ها
- به سرعت
- خواندن
- مرجع
- اشاره کرد
- مربوط
- تکرار
- مورد نیاز
- نتیجه
- بازیابی
- قابل استفاده مجدد
- استفاده مجدد
- راست
- همان
- علم
- علم و تکنولوژی
- حوزه
- را انتخاب کنید
- سلسله
- تنظیم
- باید
- ساده تر
- ساده شده
- ساده کردن
- تنها
- کوچک
- SQL
- می ایستد
- شروع
- بیانیه
- ارقام
- هنوز
- ساده سازی
- ساختار
- ساخت یافته
- خلاصه کردن
- جدول
- گرفتن
- طول می کشد
- پیشرفته
- موقت
- اراده
- تشکر
- که
- La
- جهان
- آنها
- آنها
- این
- کسانی که
- زمان
- بار
- به
- امروز
- با هم
- ابزار
- تبدیل شدن
- دور زدن
- نوع
- به طور معمول
- نهایی
- فهمیدن
- قابل فهم
- درک
- us
- استفاده کنید
- استفاده
- با استفاده از
- استفاده کنید
- می خواهم
- مسیر..
- we
- چی
- چه شده است
- که
- WHO
- چرا
- اراده
- با
- در داخل
- بدون
- تعجب کردم
- مشغول به کار
- کارگر
- جهان
- خواهد بود
- نوشتن
- نوشته
- شما
- شما
- خودت
- زفیرنت