چگونه فقط 10 ردیف اول را در SQL به روز کنیم

پایگاه داده های دنیای واقعی نیاز به به روز رسانی مداوم دارند. اغلب، شما نیاز به به روز رسانی سوابق خاص. حتی ممکن است بخواهید فقط ردیف اول یا 10، 100 یا 1000 ردیف اول را به روز کنید. بیایید نحوه به‌روزرسانی ردیف‌ها را برای یک مقدار مشخص از بالا در SQL بررسی کنیم.SQL UPDATE چیست؟در SQL، یک دستور UPDATE رکوردهای موجود یک جدول را تغییر می دهد. می توانید کل ستون ها را به روز کنید یا ردیف های فیلتر شده با عبارت WHERE را به روز کنید. همانطور که در این مقاله خواهیم دید، شما همچنین می توانید ردیف ها را برای یک مقدار مشخص از بالای جدول خود به روز کنید.به روز نگه داشتن پایگاه های داده یکی از مسئولیت های کلیدی مهندسان داده، مدیران داده ها و همه افرادی است که با پایگاه های داده کار می کنند. این راهنمای دقیق را برای توضیحات و نمونه‌های مبتدی به‌روزرسانی SQL بررسی کنید.برای یادگیری همه اصول اولیه تغییر پایگاه داده، دوره تعاملی ما را بررسی کنید: نحوه درج، به روز رسانی و حذف داده ها در SQL. با 52 تمرین SQL تعاملی، نحوه بازیابی، ذخیره، تغییر، حذف، درج و به روز رسانی داده ها را با زبان دستکاری داده های SQL (DML) می آموزید. اگر با SQL خیلی تازه کار هستید، توصیه می کنم قبل از رفتن به زبان دستکاری داده ها، دوره تعاملی SQL Basics را بگذرانید.چگونه فقط یک ردیف را در SQL به روز کنیمبهترین راه برای درک نحوه عملکرد SQL UPDATE دیدن آن در عمل است. بنابراین، اجازه دهید با یک مثال شروع کنیم.ما جدولی از تامین کنندگان خود با شناسه شرکت، نام شرکت، نام شخص تماس و حجم محصولات و خدمات ارائه شده در سال 2021 (به دلار) داریم.تامین کنندگانشناسه company_name contact_name volume_20211 Dunder Mifflin مایکل اسکات 456388.402 Eco Focus Robert California 203459.303 مکس انرژی روی اندرسون 1403958.804 سیب و پرتقال Todd Packer 2303479.505 امنیت برتر Jo Bennett 105000.106 مبتکر اندی برنارد 567980.007 شرکت بزرگ داده اسکار مارتینز 345678.908 میامی و شرکای استنلی هادسون 1205978.809 تعداد زیادی سرگرم کننده فیلیس ونس 490345.4010 Repair Inc Darryl Philbin 53673.3011 بهترین حسابداران کوین مالون 534512.2012 Time & Money Meredith Palmer 78905.2013 دو رئیس جیم هالپرت 250350.1014 Epic Adventure Ryan Howard 87078.0015 Schrute Marketing Dwight Schrute 3450250.50بیایید آن را ساده نگه داریم و با به روز رسانی فقط یک ردیف از جدول شروع کنیم. به طور خاص، فرض کنید ما به تازگی یاد گرفتیم که شخص تماس برای «لذت بسیار» از فیلیس ونس به پم بیزلی تغییر کرده است. ما می‌خواهیم نام تماس شرکت را با شناسه 9 به‌روزرسانی کنیم. در اینجا سؤالی وجود دارد که می‌توانیم از آن استفاده کنیم:به روز رسانی تامین کنندگانSET contact_name = 'Pam Beesly'WHERE id = 9;نحو ساده است. بعد از کلمه کلیدی UPDATE نام جدولی را که می خواهیم به روز کنیم را مشخص می کنیم. سپس، با کلمه کلیدی SET، تعریف می کنیم که کدام ستون (یعنی contact_name) با چه مقداری به روز شود (یعنی Pam Beesley). در نهایت از کلمه کلیدی WHERE استفاده می کنیم تا مشخص کنیم که فقط رکورد با شناسه شرکت 9 به روز شود.در اینجا جدول به روز شده است. همانطور که می بینید، ما اکنون یک فرد تماس جدید برای "لذت بسیار" داریم:شناسه company_name contact_name volume_20211 Dunder Mifflin مایکل اسکات 456388.402 Eco Focus Robert California 203459.303 مکس انرژی روی اندرسون 1403958.804 سیب و پرتقال Todd Packer 2303479.505 امنیت برتر Jo Bennett 105000.106 مبتکر اندی برنارد 567980.007 شرکت بزرگ داده اسکار مارتینز 345678.908 میامی و شرکای استنلی هادسون 1205978.809 تعداد زیادی سرگرمی Pam Beesley 490345.4010 Repair Inc Darryl Philbin 53673.3011 بهترین حسابداران کوین مالون 534512.2012 Time & Money Meredith Palmer 78905.2013 دو رئیس جیم هالپرت 250350.1014 Epic Adventure Ryan Howard 87078.0015 Schrute Marketing Dwight Schrute 3450250.50اکنون، اجازه دهید به یک مورد پیچیده تر برویم که در آن چندین ردیف را به روز می کنیم.نحوه به روز رسانی تعداد مشخصی از ردیف هاسناریوهای مختلفی وجود دارد که در آنها باید چندین ردیف را به روز کنید. اغلب، ردیف‌هایی را که می‌خواهید با استفاده از شرایط فیلتر در یک عبارت WHERE به‌روزرسانی کنید، انتخاب می‌کنید.در اینجا، با این حال، ما روی موردی تمرکز می کنیم که در آن شما می خواهید ردیف ها را برای یک مقدار مشخص از بالا به روز کنید، به عنوان مثال، 10 رکورد اول.ما به اولین مثال خود ادامه می دهیم اما با برخی به روز رسانی ها. فرض کنید می خواهیم ستون دیگری به نام top_supplier را به جدول تامین کنندگان خود اضافه کنیم. در این ستون می خواهیم ببینیم:"بله" اگر تامین کننده یکی از 10 شرکت برتر با مبلغی باشد که سال گذشته به شرکت پرداخت کردیم، یا"نه" برای همه تامین کنندگان دیگر.پیشنهاد می کنم این کار را در سه مرحله انجام دهید:یک ستون جدید top_supplier اضافه کنید.مقدار این ستون را برای همه رکوردها روی "No" قرار دهید.مقدار این ستون را برای 10 تامین کننده برتر به "بله" به روز کنید.در اینجا نحوه انجام دو مرحله اول آمده است:تامین کنندگان ALTER TABLEADD top_supplier varchar(32); به روز رسانی تامین کنندگانSET top_supplier = 'نه';و این هم جدول نتیجه:<تامین کنندگانشناسه company_name contact_name volume_2021 top_supplier1 Dunder Mifflin Michael Scott 456388.40 No2 Eco Focus Robert California 203459.30 No3 مکس انرژی روی اندرسون 1403958.80 شماره4 سیب و پرتقال Todd Packer 2303479.50 No5 Top Security Jo Bennett 105000.10 No6 Innovators Andy Bernard 567980.00 No7 Big Data Corp Oscar Martinez 345678.90 No8 میامی و شرکای Stanley Hudson 1205978.80 No9 تعداد زیادی سرگرم کننده فیلیس ونس 490345.40 No10 Repair Inc Darryl Philbin 53673.30 No11 بهترین حسابداران کوین مالون 534512.20 No12 Time & Money Meredith Palmer 78905.20 No13 Two Bosses Jim Halpert 250350.10 No14 Epic Adventure Ryan Howard 87078.00 No15 Schrute Marketing Dwight Schrute 3450250.50 Noاکنون جالب‌ترین بخش می‌آید: به‌روزرسانی ستون top_supplier برای 10 سطر اول پس از اینکه جدول را بر اساس ستون volume_2021 مرتب کردیم. نحو پرس و جو برای انجام این مرحله سوم به سیستم مدیریت پایگاه داده (به عنوان مثال، MySQL، SQL Server، Oracle یا PostgreSQL) بستگی دارد. در حال حاضر، من به شما پرس و جوهای کاری برای تعدادی از محبوب ترین سیستم های مدیریت پایگاه داده را نشان می دهم.نحوه درج، به روز رسانی و حذف داده ها در SQL را بیاموزید. دوره تعاملی عالی ما را بررسی کنید!MySQLدر MySQL، ما می توانیم از کلمه کلیدی LIMIT استفاده کنیم که تعداد رکوردها را برای خروجی یا به روز رسانی محدود می کند:به روز رسانی تامین کنندگانSET top_supplier = 'بله'سفارش بر اساس volume_2021 DESCLIMIT 10;با این پرس و جو، جدول تامین کنندگان را با تنظیم مقدار ستون top_supplier روی "بله" به روز می کنیم. با این حال، ما این به روز رسانی ها را فقط برای 10 تامین کننده برتر می خواهیم. بنابراین، جدول را بر اساس ستون volume_2021 (به ترتیب نزولی) سفارش می‌دهیم، و سپس تعداد ردیف‌های به‌روزرسانی را به 10 محدود می‌کنیم. اگر می‌خواهید دانش خود را در مورد ORDER BY تجدید کنید، این مقاله مفصل را بررسی کنید.در اینجا جدول به روز شده ترتیب داده شده بر اساس volume_2021 است. همانطور که می بینید، فقط 10 تامین کننده برتر در ستون آخر "بله" دارند. از همان نحو برای به روز رسانی فقط ردیف اول یا 5، 20، 100 یا هر تعداد سطر اول استفاده کنید و به سادگی تعداد بعد از کلمه کلیدی LIMIT را تغییر دهید.شناسه company_name contact_name volume_2021 top_supplier15 Schrute Marketing Dwight Schrute 3450250.50 بله4 سیب و پرتقال Todd Packer 2303479.50 بله3 مکس انرژی روی اندرسون 1403958.80 بله8 میامی و شرکای استنلی هادسون 1205978.80 بله6 مبتکر اندی برنارد 567980.00 بله11 بهترین حسابداران کوین مالون 534512.20 بله9 بسیار سرگرم کننده فیلیس ونس 490345.40 بله1 Dunder Mifflin مایکل اسکات 456388.40 بله7 شرکت بزرگ داده اسکار مارتینز 345678.90 بله13 دو رئیس جیم هالپرت 250350.10 بله2 Eco Focus Robert California 203459.30 No5 Top Security Jo Bennett 105000.10 No14 Epic Adventure Ryan Howard 87078.00 No12 Time & Money Meredith Palmer 78905.20 No10 Repair Inc Darryl Philbin 53673.30 NoSQL Serverبرخلاف MySQL، SQL Server کلمه کلیدی LIMIT را ندارد. در عوض دارای TOP است. از این کلمه کلیدی در یک پرسش فرعی برای دریافت شناسه 10 تامین کننده برتر استفاده کنید:به روز رسانی تامین کنندگانSET top_supplier = 'بله'WHERE IN ( SELECT TOP (10) ID از تامین کنندگان ORDER BY volume_2021 DESC)؛سپس، ستون top_supplier را برای رکوردهایی که شناسه های مربوطه آنها در لیست ایجاد شده توسط subquery یافت می شود، به روز می کنیم.PostgreSQL و Oracleدر نهایت، PostgreSQL و Oracle روشی متفاوت برای محدود کردن تعداد ردیف‌هایی که قرار است به‌روزرسانی شوند، ارائه می‌کنند. مشابه پرس و جو قبلی، از یک پرس و جو فرعی استفاده می کنیم. با این درخواست فرعی، جدول تامین کنندگان را بر اساس مبلغ پرداخت شده سفارش می دهیم و سپس با استفاده از کلیدواژه FETCH FIRST 10 ROWS ONLY، خروجی را به 10 رکورد محدود می کنیم:به روز رسانی تامین کنندگانSET top_supplier = 'بله'WHERE IN ( SELECT ID از تامین کنندگان سفارش بر اساس volume_2021 DESC فقط 10 ردیف اول را واکشی کنید)؛همانطور که می بینید، ما فقط رکوردهای مربوطه را در کوئری اصلی به روز می کنیم.در این مقاله مفصل، نمونه‌های بیشتری از سوالات فرعی برای بیانیه UPDATE دریافت کنید. همچنین، نمونه‌های بیشتر با INSERT، UPDATE و DELETE را در اینجا ببینید.زمان تمرین با دوره های آنلاین SQL است!SQL یک ابزار تحلیلی قدرتمند است که معمولاً از اکسل در اثربخشی و کارایی بهتر است. همچنین یکی از زبان های برنامه نویسی مدرن است که در اینجا باقی مانده است. یادگیری SQL دشوار نیست، اما اغلب چندین راه مختلف برای انجام یک کار وجود دارد. علاوه بر این، تفاوت های نحوی خاصی در بین سیستم های مدیریت پایگاه داده وجود دارد.موثرترین رویکرد برای به دست آوردن درک جامع از SQL، گذراندن دوره های آنلاین SQL است. اگر تجربه ای با SQL ندارید، توصیه می کنم با دوره SQL Basics شروع کنید. این شامل 129 تمرین SQL تعاملی برای پوشش تمام اصول اولیه شما برای بازیابی داده ها از پایگاه داده است.اگر همچنین می خواهید بدانید که چگونه پایگاه داده خود را تغییر دهید، دوره آموزش نحوه درج، به روز رسانی و حذف داده ها در SQL را بررسی کنید. این دوره تعاملی اصول زبان دستکاری داده ها را پوشش می دهد تا به شما کمک کند پایگاه داده خود را در صورت نیاز گسترش دهید و به روز کنید.هنگامی که آماده فراتر رفتن از دوره های فردی و دریافت دانش جامع از قابلیت های SQL هستید، به مسیرهای یادگیری ما بروید:SQL از A تا Z برای راحت شدن با مفاهیم پایه و پیشرفته SQL مانند توابع پنجره، پرس و جوهای بازگشتی و GROUP BYایجاد ساختار پایگاه داده برای یادگیری نحوه ایجاد و مدیریت جداول، نماها و فهرست ها در سیستم های مدیریت پایگاه داده رابطه ای محبوب مانند MySQL، SQL Server، Oracle و PostgreSQL.با تشکر برای خواندن، و یادگیری شاد!