Mysql yeniləməsi mürəkkəb yeniləmə sorğusudur. YENİLƏNİB sintaksisi

06.04.2023

Bu dərslikdə siz necə istifadə edəcəyinizi öyrənəcəksiniz MySQL UPDATE bəyanatı sintaksis və nümunələrlə.

Təsvir

MySQL UPDATE bəyanatı verilənlər bazasındakı cədvəldəki mövcud qeydləri yeniləmək üçün istifadə olunur MySQL məlumatları. İcra etmək istədiyiniz yeniləmə növündən asılı olaraq UPDATE bəyanatı üçün üç sintaksis var.

Sintaksis

MySQL-də tək cədvəli yeniləyərkən UPDATE bəyanatı üçün sadə sintaksis forması:

İndi bir cədvəli yeniləyərkən MySQL UPDATE bəyanatının tam sintaksisi belədir:

YA
MySQL-də bir cədvəli digər cədvəldən verilənlərlə yeniləyərkən UPDATE bəyanatının sintaksisi belədir:

YA
Birdən çox cədvəli yeniləyərkən UPDATE bəyanatı üçün MySQL sintaksisi belədir:

Parametrlər və ya Arqumentlər

LOW_PRIORITY - isteğe bağlıdır. LOW_PRIORITY müəyyən edilərsə, cədvəldən oxunan heç bir proses olmayana qədər yeniləmə gecikəcək. LOW_PRIORITY cədvəl səviyyəsində kilidləmədən istifadə edən MyISAM, MEMORY və MERGE cədvəlləri ilə istifadə edilə bilər.
İQNORE - isteğe bağlıdır. İQNORE təmin edilərsə, yeniləmə zamanı rast gəlinən bütün səhvlər nəzərə alınmır. Bir sıra yeniləməsi əsas açarı pozarsa və ya unikal indeks, bu xətt üzrə yeniləmə həyata keçirilməyəcək.
sütun1, sütun2 yeniləmək istədiyiniz sütunlardır.
ifadə1 , ifadə2 — sütun1 , sütun2 təyin etmək üçün yeni dəyərlər. Beləliklə, sütun1-ə ifadə1 dəyəri, sütun2-yə ifadə2 dəyəri təyin edilir və s.
HARADA şərtləri - isteğe bağlıdır. Yeniləmənin baş verməsi üçün yerinə yetirilməli olan şərtlər.
SİPARİŞ BY ifadə - isteğe bağlıdır. Yenilənəcək qeydlərin sayını məhdudlaşdırarkən qeydləri müvafiq qaydada çeşidləmək üçün LIMIT ilə birlikdə istifadə edilə bilər.
LIMIT ədəd_sətir - isteğe bağlıdır. LIMIT göstərilibsə, o, cədvəldə yenilənəcək qeydlərin maksimum sayını idarə edir. Sayı_sətir faylında göstərilən qeydlərin maksimum sayı cədvəldə yenilənəcək.

Bir sütunun yenilənməsi nümunəsi

Çox sadə bir şeyi nəzərdən keçirək MySQL nümunəsi YENİLƏNMƏ sorğusu.

Bu MySQL nümunəsində YENİLƏNİB, soyad sahəsini müştərilər cədvəlində 'Ford' olaraq yenilədi, burada customer_id = 500.

Çox sütunun yenilənməsi nümunəsi

Gəlin MySQL UPDATE nümunəsinə baxaq, burada bir UPDATE bəyanatından istifadə edərək birdən çox sütunu yeniləyə bilərsiniz.

Birdən çox sütunu yeniləmək istəyirsinizsə, bunu sütun/dəyər cütlərini vergüllə ayırmaqla edə bilərsiniz.
Bu misal MySQL UPDATE bəyanatı vəziyyəti 'Nevada' vəziyyətinə, customer_rep isə 23-ə yeniləndi, burada customer_id 200-dən böyükdür.

Cədvəlin başqa bir cədvəldən verilənlərlə yenilənməsi nümunəsi

MySQL-də başqa bir cədvəlin verilənləri ilə cədvəli necə yeniləməyi göstərən YENİLƏNİB nümunəsinə baxaq.

MySQL

Bu YENİLƏMƏ nümunəsi yalnız customer_id-nin 5000-dən çox olduğu bütün qeydlər üçün müştərilər cədvəlini yeniləyəcək. Təchizatçılar cədvəlindəki təchizatçı_adı müştərilər cədvəlindəki müştəri_adı ilə eyniləşdikdə, təchizatçılar cədvəlindəki şəhər müştərilər cədvəlinin şəhər sahəsinə kopyalanacaq.

MySQL-də məlumatları dəyişdirmək və ya yeniləmək lazım gələrsə, işləmək üçün SQL UPDATE əmrindən istifadə edə bilərik. ,

qrammatika

MySQL Sheet Data General SQL sintaksisini dəyişdirmək üçün UPDATE əmri aşağıdakılardır:

YENİLƏNİN cədvəl_adı SET sahəsi1=yeni-dəyər1, sahə2=yeni-dəyər2

  • Siz eyni zamanda bir və ya bir neçə sahəni yeniləyə bilərsiniz.
  • Siz WHERE bəndində istənilən şərti təyin edə bilərsiniz.
  • Siz həmçinin ayrı bir cədvəldə məlumatları yeniləyə bilərsiniz.

Cədvəlin sətirlərində göstərilən məlumatları yeniləmək lazım olduqda, INEKE çox faydalıdır.

Məlumatları yeniləmək üçün əmr xətti

Aşağıda verilənlər cədvəlində göstərilən w3big_tbl-i istifadə edərək yeniləyəcəyik SQL əmrləriİNEKE YENİLƏNİB:

misallar

Aşağıdakı nümunə verilənlər cədvəlini w3big_title w3big_id sahəsinin dəyəri 3 kimi yeniləyəcək:

# mysql -u root -p parol; Şifrəni daxil edin:******** mysql> w3big istifadə edin; Verilənlər bazası dəyişdirildi mysql> YENİLƏNİB w3big_tbl -> SET w3big_title=" JAVA-nı Öyrənmək)" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> !}

Məlumatları yeniləmək üçün PHP skriptindən istifadə edin

İcra etmək üçün mysql_query() istifadə etmək üçün PHP funksiyası SQL ifadələri, UPDATE SQL ifadəsindən istifadə edə bilərsiniz və ya INEKE tətbiq edilmir.

MySQL>-də bu funksiya komanda xətti SQL ifadələrinin icrasının təsiri eynidir.

misallar

Aşağıdakı nümunə w3big_title 3 sahəsində w3big_id məlumatını yeniləyəcək.

Bu MySQL dərsliyi MySQL-dən necə istifadə olunacağını izah edir YENİLƏNİB bəyanat sintaksis və nümunələrlə.

Sintaksis

Ən sadə formada MySQL-də bir cədvəli yeniləyərkən UPDATE bəyanatının sintaksisi belədir:

YENİLƏNİB cədvəl SET sütun1 = ifadə1, sütun2 = ifadə2, ... ;

Bununla belə, bir cədvəli yeniləyərkən MySQL UPDATE bəyanatının tam sintaksisi belədir:

YENİLƏNİN [ LOW_PRIORITY ] [ IGNORE ] cədvəl SET sütun1 = ifadə1, sütun2 = ifadə2, ... ] ;

MySQL-də bir cədvəli digər cədvəldən verilənlərlə yeniləyərkən UPDATE bəyanatının sintaksisi belədir:

YENİLƏNİB Cədvəl1 SET sütunu1 = (Cədvəl2 HARADA şərtlərindən ifadə1 SEÇİN) ;

Birdən çox cədvəli yeniləyərkən MySQL UPDATE bəyanatının sintaksisi belədir:

YENİLƏNİB cədvəl1, cədvəl2, ... SET sütun1 = ifadə1, sütun2 = ifadə2, ... HARADA cədvəl1.sütun = cədvəl2.sütun VƏ şərtlər;

Parametrlər və ya Arqumentlər

LOW_PRIORITY Könüllü. LOW_PRIORITY təmin edilərsə, yeniləmə heç bir proses oxunmayana qədər təxirə salınacaq masa. LOW_PRIORITY, masa səviyyəsində kilidləmədən istifadə edən MyISAM, MEMORY və MERGE cədvəlləri ilə istifadə edilə bilər. İQNORE Könüllü. İQNORE təmin edilərsə, yeniləmə zamanı rast gəlinən bütün səhvlər nəzərə alınmır. Əgər cərgədə yeniləmə əsas açarın və ya unikal indeksin pozulması ilə nəticələnərsə, həmin cərgədə yeniləmə həyata keçirilmir., sütun1, sütun2 Yeniləmək istədiyiniz sütunlar. ifadə1, ifadə2 Təyin ediləcək yeni dəyərlər İQNORE Könüllü. İQNORE təmin edilərsə, yeniləmə zamanı rast gəlinən bütün səhvlər nəzərə alınmır. Əgər cərgədə yeniləmə əsas açarın və ya unikal indeksin pozulması ilə nəticələnərsə, həmin cərgədə yeniləmə həyata keçirilmir. sütun 1, sütun1, sütun2 Yeniləmək istədiyiniz sütunlar. sütun 2 . Beləliklə ifadə1 dəyəri təyin ediləcək ifadə2

, və s.

WHERE şərtləri Könüllüdür. Yeniləmənin icrası üçün yerinə yetirilməli olan şərtlər.

İfadə ilə SİFARİŞ Könüllü. Yenilənəcək qeydlərin sayını məhdudlaşdırarkən qeydləri müvafiq qaydada çeşidləmək üçün LIMIT ilə birlikdə istifadə edilə bilər.

LIMIT sayı_sətir Könüllüdür. LIMIT təmin edilərsə, o, cədvəldə yenilənəcək qeydlərin maksimum sayına nəzarət edir. Ən çox qeydlərin sayı ilə müəyyən edilir sıra_sayı cədvəldə yenilənəcək. Misal - Tək sütunu yeniləyinÇox sadə MySQL UPDATE sorğu nümunəsinə baxaq. Müştəriləri YENİLƏNİN SET soyadı = "Anderson" HARADA customer_id = 5000; Bu MySQL YENİLƏNİB nümunəsi

soyad_adı

"Anderson"a

müştərilər

masa olduğu yer

müştəri_id 5000-dir. Misal - Çoxlu sütunları yeniləyin Bir UPDATE bəyanatı ilə birdən çox sütunu yeniləmək istəyə biləcəyiniz MySQL YENİLƏNMƏ nümunəsinə baxaq. Müştəriləri YENİLƏNİN SET soyadı = "Anderson" HARADA customer_id = 5000; YENİLƏNİB müştərilər SET vəziyyəti = "Kaliforniya", customer_rep = 32 WHERE customer_id > 100;

Birdən çox sütunu yeniləmək istədiyiniz zaman bunu sütun/dəyər cütlərini vergüllə ayıraraq edə bilərsiniz.

dövlət

"Kaliforniya"ya və
müştəri_rep
32 harada
100-dən çoxdur.
Nümunə - Cədvəli başqa bir cədvəlin məlumatları ilə yeniləyin

MySQL-də başqa bir cədvəldən verilənlərlə cədvəli necə yeniləməyi göstərən YENİLƏNMƏ nümunəsinə baxaq. Misal - Tək sütunu yeniləyin Müştəriləri YENİLƏNİN Müştəriləri YENİLƏNİN SET soyadı = "Anderson" HARADA customer_id = 5000; 2000-dən böyükdür. Zaman təchizatçı_adı dən təchizatçılar cədvəl uyğun gəlir müştəri_adı dən Misal - Tək sütunu yeniləyin masa, şəhər təchizatçılar cədvəlindən kopyalanacaq şəhər sahəsində Misal - Tək sütunu yeniləyin masa.

Nümunə - Çoxlu Cədvəlləri yeniləyin

Bir UPDATE bəyanatında birdən çox cədvəli əhatə edən yeniləməni yerinə yetirmək istəyə biləcəyiniz MySQL YENİLƏMƏ nümunəsinə baxaq.

YENİLƏNİB müştərilər, təchizatçılar SET customer.city = təchizatçılar.city HARADA customer.customer_id = təchizatçılar.təchizatçı_id;

Bu MySQL UPDATE bəyanat nümunəsi yenilənəcək şəhər sahəsində Misal - Tək sütunu yeniləyin masaya şəhər dən təchizatçılarÇox sadə MySQL UPDATE sorğu nümunəsinə baxaq. Müştəriləri YENİLƏNİN SET soyadı = "Anderson" HARADA customer_id = 5000; uyğun gəlir təchizatçı_id.

YENİLƏNİN tbl_name SET col_name1=expr1 [, col_name2=expr2, ...]

UPDATE bəyanatı mövcud cədvəlin sətirlərindəki yeni dəyərləri olan sütunları yeniləyir. SET ifadəsi hansı sütunların dəyişdirilməli olduğunu və onlarda hansı dəyərlərin təyin edilməli olduğunu göstərir. WHERE bəndi, əgər varsa, hansı sətirlərin yeniləndiyini müəyyən edir. Əks halda, bütün sətirlər yenilənir. Əgər ORDER BY ifadəsi göstərilibsə, sətirlər orada göstərilən ardıcıllıqla yenilənəcək.

LOW_PRIORITY açar sözü göstərilibsə, bu YENİLƏNMƏ əmrinin icrası digər müştərilər cədvəli oxuyub qurtarana qədər gecikir.

İQNORE açar sözü göstərilibsə, yeniləmə əmri dublikat açar xətası ilə qarşılaşsa belə, dayandırılmayacaq. Münaqişələrə səbəb olan sıralar yenilənməyəcək.

Göstərilən ifadədən sütuna tbl_name arqumenti ilə daxil olarsa, UPDATE əmri həmin sütun üçün cari qiymətdən istifadə edir. Məsələn, aşağıdakı əmr yaş sütununu cari dəyərdən bir böyük dəyərə təyin edir:

Mysql> YENİLƏNİB şəxsi məlumat SET yaş=yaş+1;

UPDATE əmri dəyərləri soldan sağa təyin edir. Məsələn, aşağıdakı əmr yaş sütununu təkrarlayır, sonra onu artırır:

Mysql> YENİLƏNİB şəxsi məlumat SET yaş=yaş*2, yaş=yaş+1;

Əgər sütun cari dəyərinə təyin edilibsə, MySQL bunu hiss edir və onu yeniləmir.

UPDATE əmri faktiki olaraq dəyişdirilmiş sətirlərin sayını qaytarır. MySQL 3.22 və sonrakı versiyalarında C API funksiyası mysql_info() tapılan və yenilənmiş cərgələrin sayını və YENİLƏNİB həyata keçirilən zaman baş vermiş xəbərdarlıqların sayını qaytarır.

MySQL 3.23 versiyasında siz LIMIT # istifadə edə bilərsiniz ki, yalnız müəyyən edilmiş sıraların sayı dəyişdirilib.

YENİLƏNİB əmri- artıq dəyişikliklər edir mövcud rekord və ya cədvəldə çoxlu qeydlərdə SQL. Dəyişikliklər mövcud dəyərlər cədvəldə və ya görünüşün əsas cədvəlində.

Əmr Sintaksisini YENİLƏNİN

Əmr Sintaksisini YENİLƏNİN

UPDATE əmri. Əsas açar sözlər və UPDATE əmr parametrləri

  • sxem - adətən bəzi istifadəçi adı ilə eyni olan icazə identifikatoru
  • masa görünüşü - masa adı SQL, məlumatların dəyişdirildiyi; görünüş müəyyən edilərsə, verilənlər əsas cədvəldə dəyişdirilir SQL təqdimatlar
  • subquery_1 - alt sorğu, server görünüşlə eyni şəkildə davranır
  • iləolumn - cədvəl sütunu SQL və ya təqdimatlar SQL, dəyəri dəyişən; cədvəl sütunu cümlədəndirsə SET buraxılır, sütunun dəyəri dəyişməz qalır
  • ifadə - ; bu ifadədə əsas dəyişənlər və əlavə göstərici dəyişənlər ola bilər
  • alt sorğu_2 - müvafiq sütuna təyin edilmiş yeni dəyər
  • alt sorğu_3 - müvafiq sütuna təyin edilmiş yeni dəyər

HARADA- müəyyən bir şərt olanlar tərəfindən dəyişdiriləcək sıraların diapazonunu müəyyən edir DOĞRU; bu ifadə buraxılıbsa, cədvəl və ya görünüşdəki bütün sətirlər dəyişdirilir.
Təsdiq verildikdə, hər hansı YENİLƏNİB trigger, cədvəldə müəyyən edilmişdir.
Alt sorğular. Təklif olarsa SET ehtiva edir alt sorğu, dəyişdirilmiş hər bir sıra üçün tam olaraq bir sıra qaytarır. Alt sorğu nəticəsində hər bir dəyər mötərizədə müvafiq siyahı sütunlarına təyin edilir. Əgər alt sorğu heç bir sətir qaytarmırsa, sütun təyin edilir NULL. Alt sorğular dəyişdirilmiş cədvəldən məlumatları seçə bilər. Təklif SET ifadələri birləşdirə bilir və alt sorğular.

YENİLƏNİB Əmr Nümunəsi 1
Bütün alıcılar üçün reytinqin 200-ə bərabər bir dəyərə dəyişdirilməsi:

Müştərilər SET reytinq = 200;

YENİLƏNİB Əmr Nümunəsi 2
Cədvəlin bütün sətirlərində sütun dəyərinin dəyişdirilməsi ümumiyyətlə nadir hallarda istifadə olunur. Ona görə də komandada olduğu kimi SİLİN, bir predikatdan istifadə edə bilərsiniz. Satıcı Giovanni (snum = 1003) tərəfindən xidmət göstərən bütün müştərilər üçün reytinq sütununun dəyərlərinin müəyyən edilmiş dəyişdirilməsini yerinə yetirmək üçün aşağıdakıları daxil etməlisiniz:

Müştərilər SET reytinq = 200 WHERE snum = 1001;

SQL YENİLƏNMƏSİ Əmr Misal 3
Bir cümlə ilə SET Sütunlar üçün vergüllə ayrılmış istənilən sayda dəyər təyin edə bilərsiniz:

Emp SET iş = 'MANAGER', sal = sal + 1000, deptno = 20 WHERE enname = 'JONES';

YENİLƏNİB Əmr Nümunəsi 4
Bir cümlə ilə SET heç bir xüsusi sintaksisdən (məsələn, IS NULL) istifadə etmədən NULL dəyərini təyin edə bilərsiniz. Beləliklə, bütün müştəri reytinqlərini Londondan (şəhər = 'London') NULL-a təyin etmək istəyirsinizsə, daxil edərdiniz:

Müştərilər SET reytinq = NULL WHERE şəhər = 'London';

YENİLƏNİB Əmr Nümunəsi 5
Aşağıdakı əmr sintaksisinin istifadəsini izah edir:

  • Hər iki cümlə forması SET bir bəyanatda birlikdə.
  • Alt sorğu.
  • Dəyişdirilə bilən sıraların diapazonunu məhdudlaşdıran WHERE bəndi.

Emp a SET deptno =
(SEÇİN deptno FROM dept WHERE loc = 'BOSTON'), (sal, comm) = ( SEÇİN 1.1*AVG(sal), 1.5*AVG(comm) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN ( SEÇİN deptno FROM dept WHERE loc = 'DALLAS' OR loc = 'DETROIT');

Yuxarıdakı ifadə aşağıdakıları edir:

  • Yalnız Dallas və ya Detroitdə işləyən işçiləri dəyişdirir
  • Bostondan olan işçilər üçün deptno sütununun dəyərini təyin edir
  • Hər bir işçinin əmək haqqını bütün şöbənin orta əmək haqqının 1,1 misli məbləğində müəyyən edir
  • Hər bir işçinin komissiya haqqını bütün şöbə üzrə orta komissiyanın 1,5 misli qədər müəyyən edir