Tabloya kaydedilmiş bir bilgiyi güncellemek yani düzeltmek için şu SQL komutu kullanılır:
update tablo_adi set alan1=değer1, alan2=değer2, ... where koşul;
Belirtilen koşula uyan kayıtların set ifadesinden sonra belirtilen alanları güncelleştirilir. Burada yazılan koşula karşılık tablodan hangi kayıtların etkileneceğine dikkat ediniz. Eğer kayıt belirtmezseniz tüm kayıtlar etkilenir.
Genelde güncelleştirmeler tek bir kayıt üzerinde yapılır. Dolayısıyla güncellenecek kaydı ifade etmek için koşulda birincil anahtar alanı kullanılır. Çünkü birincil anahtara karşılık tabloda sadece bir kayıt olabilir.
Örneğin; ogrenci_no alanı birincil anahtar ise where ogrenci_no=71; ifadesine karşılık tabloda tek bir kayıt vardır. Ancak where adi='Ahmet'; gibi bir koşula karşılık tabloda bir çok kayıt olabilir. Özetle güncellenecek kayıt(lar)ı ifade eden koşulu doğru belirtmeye dikkat ediniz.
Örnek: Aşağıdaki siniflar tablosunda sınıf kodu 12andbls olan kaydın sınıf adını 12 AND Bilişim olarak güncelleyelim.
sinif_kodu | sinif_adi |
12blsa | 12 Bilişim A |
12blsb | 12 Bilişim B |
12andbls | 12 Anadolu Bilişim |
update siniflar set sinif_adi='12 AND Bilişim' where sinif_kodu='12andbls';
Örnek: Aşağıdaki ogrenciler tablosunda;
ogrenci_no | adi | soyadi | cinsiyeti | sinif_kodu |
54 | Ahmet | Özdemir | e | 12blsa |
67 | Hatice | Eren | k | 12blsa |
18 | Mahir | Seren | e | 12blsb |
1) 54 nolu öğrencinin adını Aliye cinsiyetini k ve sınıfını 12andbls olarak değiştirelim.
update ogrenciler set adi='Aliye', cinsiyeti='k', sinif_kodu='12andbls' where ogrenci_no=54;
2) 67 nolu öğrencinin numarasını 104 olarak değiştirelim.
update ogrenciler set ogrenci_no=104 where ogrenci_no=67;
Buradaki değişiklik birincil anahtarda yapıldığından, eğer bu alan ile ilişkili başka bir tabloda alan varsa o tablodaki alan da güncellenmelidir. Depolama motoru olarak MyISAM kullanıldıysa bu değişikliği kendiniz yapmalısnız. Eğer ki InnoDB depolama moturunu kullanarak foreign key ve on update cascade ifadesini kullanarak bu tabloları oluşturduysanız ilişkili tablolardaki güncellemeler otomatik yapılacaktır.
Biz aşağıdaki notlar tablosuyla ogrenciler tablosunun ilişkili olduğunu düşünürsek; güncellenen öğrenci numarasını, notlar tablosunda da şu şekilde güncellemeliyiz:
update notlar set ogrenci_no=104 where ogrenci_no=67;
Örnek: Aşağıdaki notlar tablosunda 54 nolu öğrencinin ted dersinin notunu 85 olarak değiştirelim.
ogrenci_no | ders_kodu | notu |
54 | mat | 40 |
72 | ted | 70 |
54 | ted | 40 |
71 | geo | 60 |
update notlar set notu=85 where ogrenci_no=54 and ders_kodu='ted';
Örnek: Aşağıdaki uyeler tablosundaki 5 nolu üyenin email adresini mustafayaren@phpdefteri.com ve son giriş tarihini 12.06.2010 olarak değiştirelim.
uye_id | adi | soyadi | dogum_yili | uyelik_tarihi | son_giris_tarihi | |
5 | Mustafa | Yaren | 1985 | m_yaren@phpdefteri.com | 2010-06-11 | 2010-06-11 |
update uyeler set email='mustafayaren@phpdefteri.com', son_giris_tarihi='2010-06-12' where uye_id=5;
Bu site meslek liselerinde bilişim bölümü web programcılığı dalında okutulan internet programcılığı dersine yardımcı olması için tasarlanmıştır. İletişim için iletisim@phpdefteri.com
Apache
PHP
MySQL
PhpMyAdmin
EasyPHP
Xampp
AppServ
Wamp
W3School
www.phpdefteri.com © 2010