تحديث Mysql هو استعلام تحديث معقد. الدليل المرجعي لـ MySQL

تحديث Mysql هو استعلام تحديث معقد. الدليل المرجعي لـ MySQL

تحديث البيانات في قاعدة البيانات يعني تغيير القيم في سجلات الجدول الموجودة. في هذه الحالة، من الممكن تغيير قيم الحقول في مجموعة من الصفوف (حتى جميع صفوف الجدول)، وتحرير قيمة الحقل في صف فردي.

في SQL، يمكنك تغيير سجل في جدول قاعدة البيانات باستخدام أمر UPDATE. في أبسط أشكاله، يبدو أمر تحديث البيانات كما يلي:

تحديث حقل تعيين الجدول = القيمة

هنا، تحديث- أمر يشير إلى أن الطلب مخصص لتحديث البيانات؛

طاولة- اسم الجدول الذي سيتم إجراء التغييرات فيه؛

تعيين- أمر متبوع بحقول مفصولة بفواصل ذات قيم معينة؛

مجال- حقل الجدول الذي سيتم إجراء التغيير عليه؛

معنى– قيمة جديدة سيتم إدخالها في الحقل.


على سبيل المثال، إذا كنت تريد تعيين حقل في كافة صفوف الجدول إلى صفر، فيمكنك تشغيل الاستعلام التالي:

تحديث سعر مجموعة البضائع = 0

في هذه الحالة، سيأخذ حقل السعر في جميع صفوف الجدول المتاحة القيمة 0.

تغيير قيمة واحدة

يعد تغيير قيم جميع الحقول في الجدول أمرًا نادرًا للغاية. في أغلب الأحيان يكون من الضروري تغيير قيمة إدخال معين. للقيام بذلك، في نهاية السطر الذي يحتوي على أمر UPDATE، ستتم إضافة توجيه WHERE، والذي يحدد الشرط الذي يحدد السطر الذي يجب تنفيذ عملية التحديث عليه.

هناك طاولة:

على سبيل المثال، نحتاج إلى تحديث تكلفة المنتج بقيمته المعروفة لنا. للقيام بذلك، قم بتشغيل الاستعلام التالي:

تحديث سعر مجموعة البضائع = 150 حيث العدد = 2

الآن، قبل عملية تغيير الحقول، سيتم تحديد صف يحقق الشرط num = 2. يوجد صف واحد فقط في الجدول. في هذا المخزون، سيتم تغيير السعر إلى القيمة 150. ونتيجة لذلك، سنحصل على جدول بالسعر المتغير للمنتج.

إجراء تغييرات على أسطر متعددة مع شرط التحديد

إذا كنت تتذكر جميع الشروط المتنوعة في الاستعلام، فيمكنك تخيل مدى تنوع العينات. لذلك، يمكن تنفيذ استعلامات التحديث إما باستخدام صف واحد، أو مع مجموعة من الصفوف، أو مع جميع صفوف الجدول. كل هذا يتوقف على المهمة التي تواجهها، وكذلك على صفوف الجدول التي تحتاج إلى إجراء عمليات التحديث عليها.

على سبيل المثال، نريد خفض سعر جميع السلع التي تكلف حاليا 100 أو أكثر إلى النصف. طلب:

تحديث سعر مجموعة البضائع = السعر / 2 حيث السعر > = 100

حالة أينهنا تحتوي على قاعدة يتم بموجبها اختيار المنتجات التي يساوي سعرها 100 أو أكثر فقط، ولن تتأثر المنتجات التي يقل سعرها عن 100 بالطلب.

السعر = السعر / 2– الصيغة التي سيتم من خلالها حساب السعر الجديد للبضائع. سعر جديدسيتم كتابة يساوي السعر القديم مقسوما على اثنين.

نتيجة لتنفيذ مثل هذا الاستعلام، سنحصل على جدول بالسجلات التي تم تغييرها:

تحديث القيم في حقول صفوف متعددة

إذا كان من الضروري تحديث عدة حقول في وقت واحد، فسيتم الإشارة إلى جميع الحقول بقيمها بعد توجيه SET، مفصولة بفواصل. على سبيل المثال، تحتاج إلى تغيير اسم وسعر المنتج الذي يحمل الرمز 2 إلى "حديد"، بتكلفة 300:

تحديث عنوان مجموعة البضائع = "iron" , price = 300 WHERE num = 2 !}

سيقوم هذا الاستعلام بتعيين قيمة لكل حقل مطابق في صف واحد. وستشير الحالة إلى السطر الذي سيتم فيه إجراء التغييرات.


فيما يلي الأنواع الرئيسية لعمليات التحديث. وبناءً عليها، يتم إنشاء استعلامات لحل معظم مشكلات تعديل البيانات في التطوير باستخدام SQL.

إذا كنا بحاجة إلى تغيير أو تحديث البيانات في MySQL، فيمكننا استخدام أمر SQL UPDATE للعمل. ,

قواعد

فيما يلي أمر UPDATE لتغيير بنية SQL العامة لبيانات MySQL:

تحديث اسم الجدول SET الحقل 1 = القيمة الجديدة 1، الحقل 2 = القيمة الجديدة 2

  • يمكنك تحديث حقل واحد أو أكثر في نفس الوقت.
  • يمكنك تحديد أي شرط في جملة WHERE.
  • يمكنك أيضًا تحديث البيانات في جدول منفصل.

عندما تحتاج إلى تحديث البيانات المحددة في صفوف الجدول، يكون INEKE مفيدًا جدًا.

سطر الأوامر لتحديث البيانات

أدناه سنقوم بتحديث w3big_tbl المحدد في جدول البيانات باستخدام أمر SQL UPDATE:

أمثلة

سيقوم المثال التالي بتحديث جدول البيانات كقيمة حقل w3big_title w3big_id 3:

# كلمة المرور mysql -u root -p؛ أدخل كلمة المرور:********* mysql> استخدم w3big؛ تم تغيير قاعدة البيانات في MySQL> UPDATE w3big_tbl -> SET w3big_title = "Learning JAVA)" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> !}

استخدم PHP النصي لتحديث البيانات

دالة PHP لاستخدام mysql_query () للتنفيذ بيانات SQL، يمكنك استخدام عبارة UPDATE SQL أو لا ينطبق INEKE.

هذه الوظيفة في MySQL> سطر الأوامرتأثير تنفيذ عبارات SQL هو نفسه.

أمثلة

سيقوم المثال التالي بتحديث بيانات w3big_id في الحقل w3big_title 3.

أمر التحديث- إجراء تغييرات على سجل موجود أو سجلات متعددة في جدول SQL. تعديل القيم الموجودة في جدول أو الجدول الرئيسي لطريقة العرض.

تحديث بناء جملة الأمر

تحديث بناء جملة الأمر

أمر التحديث. أساسي الكلمات الدالةوتحديث معلمات الأمر

  • المخطط -معرف إذن، عادةً ما يكون نفس اسم المستخدم
  • عرض جدول -اسم الطاولة SQLحيث يتم تغيير البيانات؛ إذا تم تعريف طريقة عرض، فسيتم تعديل البيانات في الجدول الرئيسي SQLالتمثيل
  • استعلام فرعي_1 - استعلام فرعي، والذي يتعامل معه الخادم بنفس طريقة العرض
  • مععمود - عمود الجدول SQLأو التقديمات SQLوالتي تتغير قيمتها؛ إذا كان عمود الجدول من جملة تعيينتم حذفه، وتبقى قيمة العمود دون تغيير
  • EXPR - ; قد يحتوي هذا التعبير على متغيرات رئيسية ومتغيرات مؤشر اختيارية
  • استعلام فرعي_2 - قيمة جديدة مخصصة للعمود المقابل
  • استعلام فرعي_3 - قيمة جديدة مخصصة للعمود المقابل

أين- يحدد نطاق الصفوف التي سيتم تعديلها بواسطة تلك التي ينطبق عليها شرط معين حقيقي; إذا تم حذف هذه العبارة، فسيتم تعديل كافة الصفوف في الجدول أو طريقة العرض.
عند صدور الموافقة أي تحديث المشغل، محدد على الطاولة.
الاستعلامات الفرعية. إذا كان العرض تعيينيتضمن استعلام فرعي، فتُرجع صفًا واحدًا بالضبط لكل صف تم تعديله. يتم تعيين كل قيمة في نتيجة الاستعلام الفرعي إلى أعمدة القائمة المقابلة فيها بين قوسين. إذا لم يُرجع الاستعلام الفرعي أي صفوف، فسيتم تعيين العمود باطل. الاستعلامات الفرعيةيمكن تحديد البيانات من الجدول المعدل. يعرض تعيينيمكن الجمع بين التعبيرات و الاستعلامات الفرعية.

تحديث الأمر مثال 1
تغيير التصنيف لجميع المشترين إلى قيمة تساوي 200:

عملاء تعيينالتصنيف = 200؛

تحديث الأمر مثال 2
نادرًا ما يتم استخدام استبدال قيمة عمود في كافة صفوف الجدول. لذلك في الفريق، كما في الفريق يمسح، يمكنك استخدام المسند. للتنفيذ الاستبدال المحددقيم عمود التصنيف، لجميع العملاء الذين يخدمهم البائع جيوفاني (snum = 1003)، يجب عليك إدخال:

عملاء تعيينالتصنيف = 200 حيث السنوم = 1001؛

مثال أمر تحديث SQL 3
في جملة تعيينيمكنك تحديد أي عدد من القيم للأعمدة، مفصولة بفواصل:

إم بي تعيين job = 'MANAGER', sal = sal + 1000, deptno = 20 WHERE ename = 'JONES';

تحديث الأمر مثال 4
في جملة تعيينيمكنك تحديد قيمة NULL دون استخدام أي بناء جملة خاص (مثل IS NULL). وبالتالي، إذا كنت تريد تعيين جميع تقييمات العملاء من لندن (المدينة = 'لندن') إلى NULL، فيجب عليك إدخال:

عملاء تعيينالتصنيف = NULL WHERE city = 'London'؛

تحديث الأمر مثال 5
يشرح استخدام بناء جملة الأمر التالي:

  • كلا صيغ الجملة تعيينمعا في بيان واحد
  • استعلام فرعي.
  • جملة WHERE تحدد نطاق الصفوف التي يمكن تعديلها.

إمب أ تعيينعمق =
(يختار deptno FROM dept WHERE loc = 'BOSTON')، (sal, comm) = ( يختار 1.1*AVG(sal)، 1.5*AVG(comm) من emp b WHERE a.deptno = b.deptno) WHERE deptno IN ( يختار deptno FROM dept WHERE loc = 'DALLAS' OR loc = 'DETROIT');

البيان أعلاه يفعل ما يلي:

  • يعدل فقط هؤلاء الموظفين الذين يعملون في دالاس أو ديترويت
  • يقوم بتعيين قيمة عمود deptno للموظفين من بوسطن
  • يحدد راتب كل موظف بما يعادل 1.1 ضعف متوسط ​​راتب القسم بأكمله
  • تعيين عمولة كل موظف بمقدار 1.5 ضعف متوسط ​​العمولة للقسم بأكمله

في هذا كتاب مدرسيسوف تتعلم كيفية الاستخدام بيان تحديث MySQLمع بناء الجملة والأمثلة.

وصف

بيان تحديث MySQLيستخدم لتحديث السجلات الموجودة في جدول في قاعدة بيانات MySQL. توجد ثلاث صيغ لعبارة UPDATE، اعتمادًا على نوع التحديث الذي تريد إجراؤه.

بناء الجملة

نموذج بسيط من بناء الجملة لبيان UPDATE عند تحديث جدول واحد في MySQL:

الآن، بناء الجملة الكامل لعبارة MySQL UPDATE عند تحديث جدول واحد هو:

أو
بناء جملة عبارة UPDATE عند تحديث جدول واحد ببيانات من جدول آخر في MySQL هو:

أو
بناء جملة MySQL لبيان UPDATE عند تحديث جداول متعددة هو:

المعلمات أو الحجج

LOW_PRIORITY - اختياري. إذا تم تحديد LOW_PRIORITY، فسيتم تأخير التحديث حتى لا تكون هناك عمليات للقراءة من الجدول. يمكن استخدام LOW_PRIORITY مع جداول MyISAM وMEMORY وMERGE التي تستخدم القفل على مستوى الجدول.
تجاهل - اختياري. إذا تم توفير تجاهل، فسيتم تجاهل كافة الأخطاء التي تمت مواجهتها أثناء التحديث. إذا كان التحديث على التوالي سوف يكسر المفتاح الأساسيأو مؤشر فريد، لن يتم إجراء التحديث على هذا الخط.
column1، column2 هي الأعمدة التي تريد تحديثها.
Expression1 , Expression2 — قيم جديدة لتعيين column1 , column2 . لذلك تم تعيين قيمة التعبير للعمود 1، وتم تعيين قيمة التعبير للعمود 2، وهكذا.
أين الشروط - اختياري. الشروط التي يجب توافرها حتى يتم التحديث.
ORDER BY التعبير - اختياري. يمكن استخدامه مع LIMIT لفرز السجلات بشكل مناسب مع تحديد عدد السجلات المراد تحديثها.
LIMIT number_rows - اختياري. إذا تم تحديد LIMIT، فإنه يتحكم في الحد الأقصى لعدد السجلات المطلوب تحديثها في الجدول. سيتم تحديث الحد الأقصى لعدد السجلات المحددة في ملف number_rows في الجدول.

مثال لتحديث عمود واحد

دعونا نلقي نظرة على مثال بسيط جدًا لاستعلام MySQL UPDATE.

في مثال MySQL هذا، قام UPDATE بتحديث حقل اسم العائلة إلى "Ford" في جدول العملاء، حيث Customer_id = 500.

مثال لتحديث أعمدة متعددة

دعونا نلقي نظرة على مثال MySQL UPDATE، حيث يمكنك تحديث أكثر من عمود باستخدام عبارة UPDATE واحدة.

إذا كنت تريد تحديث أعمدة متعددة، فيمكنك القيام بذلك عن طريق فصل أزواج الأعمدة/القيم بفواصل.
في هذا المثال، قام بيان MySQL UPDATE بتحديث الحالة إلى "Nevada" وcustomer_rep إلى 23، حيث يكون customer_id أكبر من 200.

مثال على تحديث جدول ببيانات من جدول آخر

دعونا نلقي نظرة على مثال UPDATE، الذي يوضح كيفية تحديث جدول ببيانات من جدول آخر في MySQL.

ماي إس كيو إل

سيؤدي مثال UPDATE هذا إلى تحديث جدول العملاء فقط لجميع السجلات حيث يكون معرف_الزبون أكبر من 5000. عندما يتطابق اسم_المورد من جدول الموردين مع اسم_الزبون من جدول العملاء، سيتم نسخ المدينة من جدول الموردين إلى حقل المدينة في جدول العملاء.

يشرح هذا البرنامج التعليمي MySQL كيفية استخدام MySQL تحديث البيانمع بناء الجملة والأمثلة.

بناء الجملة

في أبسط أشكالها، تكون صيغة عبارة UPDATE عند تحديث جدول واحد في MySQL هي:

تحديث مجموعة الجدول column1 = Expression1, column2 = Expression2, ... ;

ومع ذلك، فإن الصيغة الكاملة لعبارة MySQL UPDATE عند تحديث جدول واحد هي:

تحديث [ LOW_PRIORITY ] [ تجاهل ] مجموعة الجدول column1 = Expression1, column2 = Expression2,... ] ;

بناء جملة عبارة UPDATE عند تحديث جدول واحد ببيانات من جدول آخر في MySQL هو:

تحديث الجدول 1 SET column1 = (اختر التعبير 1 من الجدول 2 حيث الشروط) ؛

بناء جملة عبارة MySQL UPDATE عند تحديث جداول متعددة هو:

تحديث الجدول 1، الجدول 2، ... تعيين العمود 1 = التعبير 1، العمود 2 = التعبير 2، ... حيث الجدول 1. العمود = الجدول 2. العمود والشروط؛

المعلمات أو الحجج

LOW_PRIORITY اختياري. إذا تم توفير LOW_PRIORITY، فسيتم تأخير التحديث حتى لا تكون هناك عمليات قراءة من ملف طاولة. يمكن استخدام LOW_PRIORITY مع جداول MyISAM وMEMORY وMERGE التي تستخدم القفل على مستوى الجدول. تجاهل اختياري. إذا تم توفير تجاهل، فسيتم تجاهل كافة الأخطاء التي تمت مواجهتها أثناء التحديث. إذا كان التحديث على صف سيؤدي إلى انتهاك المفتاح الأساسي أو الفهرس الفريد، فلن يتم إجراء التحديث على هذا الصف. column1, column2 الأعمدة التي ترغب في تحديثها. التعبير 1، التعبير 2 الجديدالقيم لتعيينها ل العمود 1, العمود 2. لذا العمود 1 التعبير1, العمود 2سيتم تعيين قيمة التعبير2، وما إلى ذلك وهلم جرا. حيث الشروط اختيارية. الشروط التي يجب توافرها حتى يتم تنفيذ التحديث. ORDER BY التعبير اختياري. يمكن استخدامه مع LIMIT لفرز السجلات بشكل مناسب عند تحديد عدد السجلات المراد تحديثها. LIMIT number_rows اختياري. إذا تم توفير LIMIT، فإنه يتحكم في الحد الأقصى لعدد السجلات المطلوب تحديثها في الجدول. على الأكثر، عدد السجلات المحددة بواسطة number_rows

سيتم التحديث في الجدول

مثال - تحديث عمود واحد

دعونا نلقي نظرة على مثال بسيط جدًا لاستعلام MySQL UPDATE.

تحديث العملاء SET last_name = "Anderson" حيث customer_id = 5000؛ سيؤدي مثال MySQL UPDATE هذا إلى تحديث ملفاسم العائلة إلى "أندرسون" فيعملاء الجدول حيثهوية الزبون

هو 5000.

مثال - تحديث أعمدة متعددة

دعونا نلقي نظرة على مثال MySQL UPDATE حيث قد ترغب في تحديث أكثر من عمود واحد باستخدام عبارة UPDATE واحدة.

تحديث حالة تعيين العملاء = "كاليفورنيا"، customer_rep = 32 حيث customer_id > 100؛

عندما ترغب في تحديث أعمدة متعددة، يمكنك القيام بذلك عن طريق فصل أزواج الأعمدة/القيم بفواصل.ولاية إلى "كاليفورنيا" و customer_rep الجدول حيثإلى 32 حيث

أكبر من 100.

مثال - تحديث الجدول ببيانات من جدول آخر

دعونا نلقي نظرة على مثال UPDATE الذي يوضح كيفية تحديث جدول ببيانات من جدول آخر في MySQL.
تحديث العملاء
تعيين المدينة = (اختر المدينة
من الموردين
أين الموردون.supplier_name =customer_name)

حيث customer_id> 2000؛ إلى "أندرسون" فيسيؤدي مثال UPDATE هذا إلى تحديث ملف الجدول حيثجدول لجميع السجلات حيث أكبر من 2000. عندمااسم المورد منالموردين الجدول يطابقاسم المورد إلى "أندرسون" فياسم الزبون الجدول،مدينة الجدول،الميدان في إلى "أندرسون" فيطاولة.

مثال - تحديث جداول متعددة

دعونا نلقي نظرة على مثال MySQL UPDATE حيث قد ترغب في إجراء تحديث يتضمن أكثر من جدول واحد في عبارة UPDATE واحدة.

تحديث العملاء والموردين SET Customers.city = الموردون.مدينة حيث customer.customer_id = الموردون.supplier_id;

سيؤدي مثال بيان MySQL UPDATE هذا إلى تحديث ملف الجدول،الميدان في إلى "أندرسون" فيالجدول إلى الجدول،اسم المورد منعملاء الجدول حيثيطابق واسم المورد.