عبارات زبان دستکاری داده ها (DML) به داده ها در جداول موجود دسترسی دارند و آنها را دستکاری می کنند.
In the SQL*Plus environment, you can enter a DML statement after the SQL>سریع.
در محیط SQL Developer می توانید یک عبارت DML را در Worksheet وارد کنید. همچنین، میتوانید از چارچوب و ابزار SQL Developer Connections برای دسترسی و دستکاری دادهها استفاده کنید.
برای مشاهده اثر یک دستور DML در SQL Developer، ممکن است مجبور شوید نوع شی طرحی شی تغییر یافته را در قاب Connections انتخاب کنید و سپس روی نماد Refresh کلیک کنید.
اثر یک عبارت DML تا زمانی که تراکنش شامل آن را انجام ندهید دائمی نیست. تراکنش دنباله ای از دستورات SQL است که پایگاه داده اوراکل آن را به عنوان یک واحد در نظر می گیرد (می تواند یک دستور DML واحد باشد). تا زمانی که یک تراکنش متعهد شود، می توان آن را برگشت (لغو) کرد. برای اطلاعات بیشتر در مورد تراکنش ها، به «درباره بیانیه های کنترل تراکنش» مراجعه کنید.
این بخش شامل:
مرجع زبان پایگاه داده Oracle SQL برای اطلاعات بیشتر در مورد عبارات DML
درباره بیانیه INSERT
دستور INSERT ردیف ها را در جدول موجود درج می کند.
ساده ترین شکل پیشنهادی دستور INSERT دارای این نحو است:
هر ستون در list_of_columns باید یک مقدار معتبر در موقعیت مربوطه در list_of_values داشته باشد. بنابراین، قبل از درج یک ردیف در جدول، باید بدانید که جدول دارای چه ستون هایی است و مقادیر معتبر آنها چقدر است. برای به دست آوردن این اطلاعات با استفاده از SQL Developer، به «آموزش: مشاهده ویژگیها و دادههای جدول EMPLOYEES با SQL Developer» مراجعه کنید. برای به دست آوردن این اطلاعات با استفاده از SQL*Plus، از عبارت DESCRIBE استفاده کنید. مثلا:
عبارت INSERT در مثال 3-1 یک ردیف را در جدول EMPLOYEES برای یک کارمند وارد می کند که تمام مقادیر ستون برای آن مشخص است.
مثال 3-1 استفاده از عبارت INSERT هنگامی که همه اطلاعات در دسترس هستند
برای درج یک ردیف در جدول، لازم نیست همه مقادیر ستون را بدانید، اما باید مقادیر تمام ستون های NOT NULL را بدانید. اگر مقدار ستونی که می تواند NULL باشد را نمی دانید، می توانید آن ستون را از list_of_columns حذف کنید. مقدار آن به طور پیش فرض NULL است.
عبارت INSERT در مثال 3-2 ردیفی را در جدول EMPLOYEES برای یک کارمند درج می کند که تمام مقادیر ستون برای آن به جز حقوق و دستمزد مشخص است. در حال حاضر، SALARY می تواند مقدار NULL را داشته باشد. هنگامی که حقوق و دستمزد را می دانید، می توانید آن را با بیانیه UPDATE تغییر دهید (به مثال 3-4 مراجعه کنید).
مثال 3-2 استفاده از عبارت INSERT هنگامی که همه اطلاعات در دسترس نیست
عبارت INSERT در مثال 3-3 سعی می کند ردیفی را در جدول EMPLOYEES برای کارمندی که LAST_NAME برای آن شناخته شده نیست وارد کند.
مثال 3-3 استفاده نادرست از عبارت INSERT
مرجع زبان پایگاه داده Oracle SQL برای اطلاعات در مورد عبارت INSERT
درباره بیانیه UPDATE
دستور UPDATE مجموعه ای از ردیف های جدول موجود را به روز می کند (مقادیر آن را تغییر می دهد).
یک شکل ساده از عبارت UPDATE این نحو را دارد:
هر مقدار باید برای column_name خود معتبر باشد. اگر عبارت WHERE را وارد کنید، این عبارت مقادیر ستون را فقط در ردیف هایی که شرایط را برآورده می کند به روز می کند.
بیانیه UPDATE در مثال 3-4 ارزش ستون حقوق و دستمزد را در ردیفی که در جدول EMPLOYEES در مثال 3-2 درج شده بود، قبل از مشخص شدن حقوق کارمند به روز می کند.
مثال 3-4 استفاده از بیانیه UPDATE برای افزودن داده
بیانیه UPDATE در مثال 3-5 درصد کمیسیون را برای هر کارمند در بخش 80 به روز می کند.
مثال 3-5 استفاده از بیانیه UPDATE برای به روز رسانی چند ردیف
مرجع زبان پایگاه داده Oracle SQL برای اطلاعات در مورد عبارت UPDATE
درباره بیانیه DELETE
بیانیه حذف ردیف ها را از یک جدول حذف می کند.
یک شکل ساده از عبارت حذف این نحو را دارد:
اگر بند Where Where را درج کنید ، بیانیه فقط ردیف هایی را که شرایط را برآورده می کند حذف می کند. اگر بند Where Where را حذف نکنید ، بیانیه همه ردیف ها را از جدول حذف می کند ، اما جدول خالی هنوز وجود دارد. برای حذف یک جدول ، از عبارت Drop Table استفاده کنید.
بیانیه حذف در مثال 3-6 ردیف های درج شده در مثال 3-1 و مثال 3-2 را حذف می کند.
مثال 3-6 با استفاده از عبارت حذف
Oracle Database SQL مرجع زبان برای اطلاعات در مورد بیانیه حذف
Oracle Database SQL مرجع زبان برای اطلاعات در مورد بیانیه جدول DROP
درباره اظهارات کنترل معامله
معامله دنباله ای از یک یا چند جمله SQL است که پایگاه داده اوراکل به عنوان یک واحد رفتار می کند: یا همه اظهارات انجام می شود ، یا هیچ یک از آنها نیستند.
شما برای مدل سازی فرآیندهای تجاری که نیاز به انجام چندین عملیات به عنوان واحد دارند ، به معاملات نیاز دارید. به عنوان مثال ، هنگامی که یک مدیر شرکت را ترک می کند ، یک ردیف باید در جدول job_history وارد شود تا نشان دهد چه زمانی مدیر ترک شده است ، و برای هر کارمندی که به آن مدیر گزارش می دهد ، ارزش Manager_ID باید در جدول کارمندان به روز شود. برای مدل سازی این فرآیند در یک برنامه ، باید بیانیه های درج و به روزرسانی را در یک معامله واحد قرار دهید.
بیانیه های اصلی کنترل معاملات عبارتند از:
SavePoint ، که یک SavePoint را در یک معامله نشان می دهد - نکته ای که بعداً می توانید به عقب برگردید. SavePoints اختیاری است و یک معامله می تواند چندین نقطه ذخیره داشته باشد.
تعهد ، که معامله فعلی را به پایان می رساند ، تغییرات خود را دائمی می کند ، نقاط ضعف خود را پاک می کند و قفل های آن را آزاد می کند.
Rollback ، که به عقب (undoes) می رسد یا کل معامله فعلی یا فقط تغییرات انجام شده پس از SavePoint مشخص شده.
In the SQL*Plus environment, you can enter a transaction control statement after the SQL>سریع.
در محیط توسعه دهنده SQL می توانید یک بیانیه کنترل معامله را در صفحه کار وارد کنید. SQL Developer همچنین دارای نمادهای تغییر و تغییر برگشت است که در "ارتکاب معاملات" و "معاملات برگشت به عقب" توضیح داده شده است.
اگر صریحاً مرتکب معامله نشوید و برنامه به طور غیر طبیعی خاتمه می یابد ، پس بانک اطلاعاتی به طور خودکار آخرین معامله غیرقابل قبول را باز می گرداند.
اوراکل توصیه می کند که با ارتکاب آنها یا بازگشت آنها ، به صراحت معاملات را در برنامه های برنامه پایان دهید.
مفاهیم پایگاه داده اوراکل برای اطلاعات بیشتر در مورد مدیریت معاملات
Oracle Database SQL مرجع زبان SQL برای اطلاعات بیشتر در مورد بیانیه های کنترل معاملات
انجام معاملات
ارتکاب معامله باعث می شود تغییرات آن دائمی باشد ، نقاط ذخیره خود را پاک می کند و قفل های آن را آزاد می کند.
برای انجام صریح معامله ، از بیانیه تعهد یا (در محیط توسعه دهنده SQL) استفاده کنید ، نماد تعهد را تغییر می دهد.
پایگاه داده اوراکل بیانیه تعهد ضمنی را قبل و بعد از بیانیه زبان تعریف داده (DDL) صادر می کند. برای کسب اطلاعات در مورد بیانیه های DDL ، به "در مورد بیانیه زبان تعریف داده (DDL)" مراجعه کنید.
قبل از انجام معامله:
تغییرات شما برای شما قابل مشاهده است ، اما برای سایر کاربران نمونه بانک اطلاعاتی نیست.
تغییرات شما نهایی نیست - می توانید آنها را با یک بیانیه بازپرداخت خنثی کنید.
پس از انجام معامله:
تغییرات شما برای سایر کاربران قابل مشاهده است و به اظهارات آنها که پس از انجام معامله خود اجرا می شوند.
تغییرات شما نهایی است - شما نمی توانید آنها را با یک بیانیه بازپرداخت خنثی کنید.
مثال 3-7 یک ردیف را به جدول مناطق اضافه می کند (یک معامله بسیار ساده) ، نتیجه را بررسی می کند و سپس معامله را انجام می دهد.