دستور Union در SQL – از کاربرد تا نحوه استفاده به زبان ساده

۱۰۷۳ بازدید
آخرین به‌روزرسانی: ۲۳ خرداد ۱۴۰۳
زمان مطالعه: ۱۰ دقیقه
دانلود PDF مقاله
دستور Union در SQL – از کاربرد تا نحوه استفاده به زبان سادهدستور Union در SQL – از کاربرد تا نحوه استفاده به زبان ساده

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

997696

در این مطلب از مجله فرادرس، در ابتدا با دستور UNION آشنا شده‌ایم. سپس انواع روش‌های استفاده از این دستور را بررسی کرده‌ و ترکیبات مختلف ممکن درباره این دستور را همراه با عبارت‌های WHERE و ORDER BY در SQL بررسی کردیم. در نهایت هم روش استفاده از «نام‌های مستعار» (Aliases) را برای ستون‌های جدول نتیجه توضیح داده‌ایم. تمام این توضیحات و بررسی‌ها همراه با مثال و بر روی جدول‌هایی با داده‌های فرضی ارائه شده‌اند.

دستور UNION در SQL چیست؟

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

  • در محله اول،‌ تعداد ستون یکسانی از جداول با نوع داده‌های یکسان انتخاب شده‌اند.
  • دقت می‌کنیم که ستون‌های یکسان انتخاب شده حتما نظم یکسانی هم داشته باشند.
  • در آخر اما نیازی به تعداد ردیف‌های همسان در جدول‌های مختلف وجود ندارد.

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

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

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

سینتکس پایه دستور UNION در SQL

در کادر زیر، سینتکس پایه دستور UNIONرا به زبان SQL کدنویسی کرده‌ایم.

در کد بالا شرط داده شده [WHERE condition] می‌تواند هر عبارت دل‌خواهی بر اساس نیاز مدیر پایگاه داده باشد.

بهترین روش آموزش SQL Server

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

SQL «زبان ساختاریافته کوئری‌نویسی» (Structured Query Language) است که برای کار با پایگاه‌های داده رابطه طراحی شده است. SQL Server، یکی از بهترین پایگاه‌‌های داده‌ای است که با زبان SQL کار می‌کند. برای کار با SQL Server فیلم‌های آموزشی پیشرفته و حرفه‌ای در فرادرس تولید شده‌اند. هر شخصی چه مبتدی یا ناآشنا با پایگاه داده باشد و چه حرفه‌ای، با مشاهده فیلم‌های مربوط به سطح علمی خودش و تمرین به راحتی بر کار با این پایگاه داده مسلط می‌شود.

مجموعه آموزش اس کیو ال سرور – مقدماتی تا پیشرفته

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

دستور UNION بر روی یک ستون مجزا

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

به طور کل، توانایی کوئری‌نویسی حرفه‌ای مسئولیت بسیار مهمی است که مدیران پایگاه داده سیستم‌های بزرگ باید بتوانند به‌خوبی از پس آن بربیایند. یکی از بهترین راه‌های آموزش این مسئله مشاهده فیلم آموزش کوئری‌ نویسی پیشرفته در SQL Server از فرادرس است. برای راحتی کار شما لینک مربوط به این فیلم آموزشی را در پایین، قرار داده‌ایم.

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

مثال

فرض کنیم همین‌طور که در پایین نمایش داده‌ایم، جدولی به نام مشتریان CUSTOMERS با استفاده از دستور CREATE TABLE در پایگاه داده MySQL ایجاد کرده‌ایم.

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

با اجرای کوئری بالا، جدول مشتریان به شکلی که در پایین نمایش داده شده ایجاد می‌شود.

IDNAMEAGEADDRESSSALARY
1Ramesh32Ahmedabad2000.00
2Khilan25Delhi1500.00
3Kaushik23Kota2000.00
4Chaitali25Mumbai6500.00
5Hardik27Bhopal8500.00
6Komal22Hyderabad4500.00
7Muffy24Indore10000.00

الان با استفاده از دستور CREATE TABLE جدول دومی را برای سفارشات با نام ORDERS ایجاد می‌کنیم. کوئری ساخت جدول دوم مطابق کادر زیر نوشته شده است.

با استفاده از دستور INSERT به شکل کوئری زیر، مقادیر دیگری را نیز به این جدول جدید وارد می‌کنیم.

بعد از اجرای کوئری‌های بالا، جدول ORDERS به شکل نمایش داده شده در پایین، ساخته می‌شود.

OIDDATECUSTOMER_IDAMOUNT
1022009-10-08 00:00:0033000.00
1002009-10-08 00:00:0031500.00
1012009-11-20 00:00:0021560.00
1032008-05-20 00:00:0042060.00

الان با استفاده از کوئری زیر می‌خواهیم که ستون‌های میزان درامد SALARY و قیمت کالا AMOUNT را به ترتیب از جدول‌های CUSTOMERSو ORDERSباهم ترکیب کنیم. زیرا این ستون‌ها از نوع داده‌های یکسانی استفاده می کنند.

خروجی

بعد از ترکیب ستون‌های SALARYو AMOUNTاز جدول‌های CUSTOMERS و ORDERS با استفاده از کوئری بالا، نتیجه به صورت زیر، جدولی با یک ستون، در خروجی نمایش داده می‌شود.

SALARY
2000.00
1500.00
6500.00
8500.00
4500.00
10000.00
3000.00
1560.00
2060.00

اجرای دستور UNION بر روی چند ستون مختلف

زمانی که دستور UNIONرا بر روی چند ستون مختلف اجرا می‌کنیم، در هر عبارت SELECT در SQL، تعداد و ترتیب ستون‌ها باید با هم سازگار باشند. همچنین نوع داده مربوط به ستون‌های همسان نیز باید با هم همخوانی داشته باشند، تا در نهایت دستور UNION به‌درستی کار کند.

اگر نوع‌های داده ستون‌ها با یکدیگر همخوان نباشند، شاید نیاز به استفاده از استفاده از توابع تبدیل کننده نوع داده مانند CAST یا CONVERT داشته باشیم. با استفاده از این توابع مطمئن می‌شویم که نوع‌ داده‌های ستون‌های مختلف با همدیگر سازگار هستند.

دانشجویان در کلاس درس کامیپوتر سر جای خودشان نشسته‌اند. - دستور Union در SQL

مثال

از آنجا که جدول‌های CUSTOMERS و ORDERS، به صورت جداگانه، توانایی متحد شدن را ندارند، در ابتدا باید این دو جدول را برای ساخت جدول بزرگتری به عنوان واسطه با یکدیگر ترکیب کنیم. برای انجام این کار، جدول بزرگتر را در وسط قرار داده و از تکینک «اجماع از چپ» (Left Join) و «اجماع از راست» (Right Join) استفاده می‌کنیم. در واقع کاری که با کمک این دستور انجام می‌دهیم همان عمل ساخت اتحاد در مجموعه‌ها است. جدول‌های اجتماع یافته و بازیابی شده همان تعداد ستون‌ها را با همان نوع داده خواهند داشت. الان جداول جدید دارای قابلیت متحد شدن هستند. این جدول‌ها را می‌توانیم با استفاده از دستور UNIONنمایش داده شده در پایین با یکدیگر ترکیب کنیم.

خروجی

با اجرای کوئری بالا، داده‌های جواب به شکل جدول زیر در خروجی به کاربر نمایش داده می‌شوند.

IDNAMEAMOUNTDATE
1RameshNULLNULL
2Khilan15602009-11-20 00:00:00
3Kaushik30002009-10-08 00:00:00
3Kaushik15002009-10-08 00:00:00
4Chaitali20602008-05-20 00:00:00
5HardikNULLNULL
6KomalNULLNULL
7MuffyNULLNULL

دستور UNION همراه با عبارت WHERE

می‌توانیم از عبارت WHERE در SQL همراه با دستور UNIONاستفاده کنیم. با کمک این ترکیب دستوری می‌توانیم نتایج هر عبارت SELECT را قبل از ترکیب کردن آن‌ها با هم فیلتر کنیم.

SQL دستورات زیادی دارد که برای کار با پایگاه‌ داده ضروری هستند. در صورتی که تمایل به نگاه کلی به دستورات اصلی SQL دارید، پیشنهاد می‌کنم که مطلب ۱۳ دستور SQL مهم که هر برنامه‌نویسی باید بداند از مجله فرادرس را مطالعه کنید.

سینتکس پایه دستور

در کادر زیر شکل سینتکس پایه، برای ترکیب دستور UNIONهمراه با عبارت WHERE را پیاده‌سازی کرده‌ایم.

یک کامیپوتر بر روی میزی در راهرو یکی از معابر عمومی قرار گرفته است.

مثال

در کوئری پایین، شماره ID مشتری‌ها را با شرایط زیر فراخوانی می‌کنیم.

  1. شماره IDدر جدول CUSTOMERS از 5 بزرگتر باشد.
  2. شماره IDدر جدول ORDERS از 2 بیشتر باشد.

خروجی

با اجرای کوئری بالا، جدول زیر به عنوان نتیجه جواب در خروجی نمایش داده می‌شود.

IDSALARY
64500.00
710000.00
33000.00
31500.00
42060.00

دستور UNION همراه با عبارت ORDER BY

در کوئری می‌توانیم از دستور UNIONهمراه با عبارت ORDER BY نیز استفاده کنیم. این کار، مجموعه جواب‌های مرتب شده همه عبارت‌های SELECTرا با یکدیگر ترکیب کرده و سپس مجموعه جواب مجزایی را به صورت مرتب شده ایجاد می‌کند.

مثال

در این کد، شماره ID همه مشتریان را با توجه به شرایط زیر فراخوانی می‌کنیم.

  1. شماره IDدر جدول CUSTOMERSاز 5 بزرگتر باشد.
  2. شماره IDدر جدول ORDERSاز 2 بیشتر باشد.

در نهایت همه شماره‌های IDرا بر اساس میزان حقوقشان از کم به زیاد -به صورت صعودی- مرتب می‌کنیم.

خروجی

با اجرای کوئری بالا، جدول زیر به عنوان نتیجه جواب در خروجی نمایش داده می‌شود.

IDSALARY
31500.00
42060.00
33000.00
64500.00
710000.00

توجه: دستور ORDER BY در عبارت UNIONبر روی همه مجموعه جواب‌های عبارت اعمال می‌شود. نه فقط بر روی جواب‌های عبارت SELECTکه در آخر آمده است.

فیلم‌ های آموزش انواع پایگاه های داده در فرادرس

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

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

مجموعه آموزش پایگاه داده – مقدماتی تا پیشرفته

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

دستور UNION در SQL همراه با نام های مستعار

از نام‌های مستعار نیز می‌توانیم در عبارت SELECTاز دستور UNIONاستفاده کنیم. با این کار در زمان ساخت جدول در SQL یا ستون‌های آن، نامی موقتی به هر کدام از آن‌ها اختصاص داده می‌شود. در زمان کار کردن با جدول‌ها و ستون‌ها مختلفی که نام یکسان دارند، این کار بسیار مفید است.

وقتی که از دستور UNIONهمراه با نام‌های مستعار استفاده می‌کنیم، باید به خاطر داشت که نام‌های مستعارِ ستون‌ها توسط اولین عبارت SELECTتعیین می‌شوند. اما شاید بخواهیم که از نام مستعار متفاوتی برای ستون یکسانی در عبارت SELECTدیگری نیز استفاده کنیم. برای این‌کار لازم است که از نام‌ مستعار ستون‌ها در همه عبارت‌های SELECTاستفاده کنیم. انجام این رفتار، باعث اطمینان از ثابت بودن نام ستون‌ها در مجموعه جواب نهایی می‌شود.

دختر سیاه پوست با موهای فرفری در حال کار با کامپیوتر است.- دستور Union در SQL

سینتکس پایه کوئری

در کادر زیر سینتکس پایه روش استفاده از دستور UNIONرا همراه با نام‌های مستعار نمایش داده‌ایم.

مثال

در کوئری زیر همه شماره‌های IDرا از هر دو جدول فراخوانی می‌کنیم. همراه با شماره‌های IDنشان می‌دهیم که هر شماره مربوط به کدام جدول است. یعنی در مقابل شماره IDو در یک ستون جدید می‌نویسیم که هر شماره مربوط به مشتری است یا سفارش.

خروجی

با اجرای کوئری بالا، جدول زیر به عنوان نتیجه جواب در خروجی نمایش داده می‌شود.

IDtype
1customer
2customer
3customer
4customer
5customer
6customer
7customer
100order
101order
102order
103order

عملگرهای مشابه دستور UNION در SQL

در زبان SQL دو عملگر دیگر وجود دارند که شبیه به دستور UNIONکار می‌کنند.

  • دستور SQL INTERSECT: از این عملگر برای ترکیب کردن دو عبارت SELECTاستفاده می‌شود. اما در جواب فقط ردیف‌های مربوط به جدول جواب در عبارت SELECT اول را نمایش می‌دهد. البته هر کدام از این ردیف‌ها نشانه‌ای برای ردیف متناظری در جدول دوم هستند. در واقع با کمک این دستور اشتراک بین دو جدول را بدست می‌آوریم.
  • دستور EXCEPT Operator: با کمک این دستور هم دو عبارت SELECTرا با یکدیگر ترکیب می‌کنیم. این دستور در جواب ردیف‌هایی از جدول SELECTاول را برمی‌گرداند که در جدول SELECTدوم وجود ندارند. در واقع با کمک این دستور جدول اول را منهای جدول دوم می‌کنیم.

جمع بندی

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

در این مطلب از مجله فرادرس، درباره دستور UNIONمطالعه کردیم. به انواع کاربرد‌های این دستور پرداختیم و ترکیبات مختلف آن را با عبارت‌های کلیدی SQL مانند WHEREو ORDER BY بررسی کردیم. این دستور از مهم‌ترین دستورات برای کار با جدول‌ها و گرفتن گزارشات مختلف است.

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
tutorialspoint
دانلود PDF مقاله
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *