İçeriğe geç

Menü

Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

SQL INSERT ve UPDATE Farkı Nedir? Yeni Kayıt ve Mevcut Veriyi Değiştirme

sql-insert-ve-update-farki-nedir
Bu yazıda neler var?
  1. SQL INSERT ve UPDATE farkı nedir?
  2. INSERT INTO ile öğrenci tablosuna yeni kayıt ekleme
  3. UPDATE ... SET ile mevcut öğrencinin bölümünü değiştirme
  4. UPDATE öncesi SELECT ile hedef satırı nasıl kontrol edilir?
  5. INSERT ve UPDATE farkını hızlıca nasıl seçersin?

SQL INSERT ve UPDATE arasındaki temel fark, işlem yapılan satırın durumudur: INSERT yeni bir kayıt satırı ekler, UPDATE ise veritabanında zaten bulunan satırların değerlerini değiştirir. UPDATE sorgusunda WHERE koşulu kullanılmazsa birden fazla satır, hatta tablodaki tüm satırlar etkilenebilir.

Bu nedenle yeni bir öğrenciyi tabloya eklemek için INSERT, kayıtlı bir öğrencinin bölüm bilgisini değiştirmek için UPDATE kullanılır. DELETE ise mevcut satırı kaldırır; bir satırdaki bilgiyi değiştirmek için kullanılmaz.

SQL INSERT ve UPDATE farkı nedir?

INSERT işlemi, tabloda daha önce bulunmayan yeni bir satır oluşturur. Bu işlem sırasında eklenecek kaydın hangi sütunlara hangi değerleri taşıyacağı belirtilir. Örneğin öğrenci tablosuna yeni bir öğrenci eklemek, INSERT işleminin kullanım alanıdır.

UPDATE işlemi ise yeni bir satır oluşturmaz. Tabloda zaten bulunan bir veya daha fazla satırın belirli sütunlarındaki değerleri değiştirir. Bir öğrencinin bölümünü, e-posta adresini ya da sınıf bilgisini güncellemek buna örnektir.

“Yeni bir satır oluşacaksa INSERT, zaten var olan satırın bilgisi değişecekse UPDATE kullanılır.”

İki komut arasındaki önemli farklardan biri de etkilenecek satırların nasıl belirlendiğidir. INSERT, yeni kaydın değerlerini eklemek üzere kullanılır. UPDATE ise çoğunlukla WHERE koşuluyla birlikte yazılır. WHERE koşulu, değişikliğin hangi satırlara uygulanacağını sınırlar. Örneğin yalnızca belirli bir birincil anahtar değerine sahip öğrencinin bölümünü değiştirmek istiyorsan, koşul bu öğrenciyi ayırt edecek şekilde kurulmalıdır.

UPDATE içinde WHERE kullanılmadığında veritabanı, değiştirilecek satırları sınırlayan bir ölçüt bulamaz. Böyle bir durumda yazılan yeni değer, eşleşen tüm satırlara uygulanabilir. Tabloya göre bu, birden fazla öğrencinin veya tablodaki bütün öğrencilerin aynı bilginin değerini alması anlamına gelebilir. Bu yüzden UPDATE sorgusunu çalıştırmadan önce hedef satırın koşulunu dikkatle kontrol etmek gerekir.

INSERT INTO ile öğrenci tablosuna yeni kayıt ekleme

INSERT INTO ile öğrenci tablosuna yeni kayıt ekleme

Yeni kayıt eklemek için kullanılan temel yapı INSERT INTO ile başlar. Genel sözdizimi şöyledir:

INSERT INTO tablo (sütun1, sütun2) VALUES (değer1, değer2);

Bu yapıda tablo, yeni kaydın ekleneceği tablonun adıdır. Parantez içindeki sütun listesi, hangi alanlara veri yazılacağını gösterir. VALUES bölümündeki değerler ise bu sütunlara yerleştirilecek bilgilerdir.

Sütunların sırası ile değerlerin sırası birbiriyle eşleşir. İlk sütun için yazılan değer, VALUES listesindeki ilk değerdir. Aynı şekilde ikinci sütun ikinci değerle eşleşir. Bu nedenle sütun listesinde iki alan varsa değer listesinde de iki karşılık bulunmalıdır. Sütun ve değer sayısının uyuşmaması, yeni kaydın doğru biçimde oluşturulmasını engelleyebilir.

Değerlerin, karşılık geldikleri sütunların veri türleriyle uyumlu olması da önemlidir. Metin, sayı ve tarih gibi bilgiler tablo yapısına uygun biçimde hazırlanmalıdır. Böylece öğrenci tablosuna eklenen ad, öğrenci numarası ve bölüm bilgisi ilgili alanlarla tutarlı olur.

Öğrenci tablosunda ogrenci_id, ad_soyad ve bolum sütunlarının bulunduğunu düşünelim. Yeni bir öğrenci eklerken bu sütunların hangilerine değer verileceği açıkça seçilir. ogrenci_id birincil anahtarsa bu alan, her satırı diğerlerinden ayırt eder. Yeni kaydın birincil anahtar değeri tabloda bulunan başka bir kayıtla çakışmamalıdır.

Bu nedenle INSERT işleminden önce eklenecek sütunları, değerlerin sırasını ve birincil anahtar bilgisini kontrol etmek gerekir. Öğrenci tablosuna ait baştan sona çalışan örnek, sonraki bölümde bu kuralların nasıl uygulandığını gösterecektir.

UPDATE ... SET ile mevcut öğrencinin bölümünü değiştirme

UPDATE ... SET ile mevcut öğrencinin bölümünü değiştirme

UPDATE, veri tabanında zaten bulunan satırların değerlerini değiştirmek için kullanılır. Temel sözdizimi UPDATE tablo SET sütun = yeni_değer WHERE koşul; biçimindedir. SET bölümü hangi alanın hangi yeni değerle değişeceğini, WHERE bölümü ise hangi mevcut satırların hedefleneceğini belirtir.

Örneğin, ogrenci_id değeri 101 olan öğrencinin bölümünü değiştirmek için UPDATE ogrenciler SET bolum = 'Bilgisayar Programcılığı' WHERE ogrenci_id = 101; komutu kullanılabilir. Bu işlem yeni bir satır oluşturmaz. 101 numaralı öğrenci zaten tabloda bulunduğu için mevcut satırın yalnızca bolum sütunundaki değer değiştirilir. Bu nedenle yeni kayıt eklemek için kullanılan INSERT INTO yerine UPDATE ... SET tercih edilir.

ogrenci_id birincil anahtar olarak tanımlanmışsa, bu alan WHERE içinde belirli bir öğrenciyi seçmek için kullanılabilir. Ancak koşul birden fazla satırla eşleşirse, eşleşen satırların tamamı güncellenir. Örneğin WHERE bolum = 'Matematik' koşulu birden fazla öğrenciyi seçebilir ve bu öğrencilerin tüm bölümleri aynı yeni değere dönüştürülebilir.

WHERE koşulu hiç yazılmazsa, komut tablodaki tüm mevcut satırları etkileyebilir. Örneğin bölüm değerini değiştiren bir UPDATE komutu WHERE olmadan çalıştırılırsa, tüm öğrencilerin bölümü aynı değere çekilebilir. Satır silmek için kullanılan DELETE ile karıştırmamak gerekir: UPDATE mevcut değeri değiştirir, DELETE ise seçilen satırı kaldırır.

UPDATE öncesi SELECT ile hedef satırı nasıl kontrol edilir?

Güncelleme komutunu çalıştırmadan önce aynı WHERE koşulunu bir SELECT sorgusunda denemek, hedef kaydı kontrol etmeyi sağlar. Böylece öğrencinin kimliği, mevcut bölümü ve sorgunun kaç satır döndürdüğü görülür. Sonuç beklenenden farklıysa UPDATE çalıştırılmadan önce koşul yeniden değerlendirilmelidir.

  1. Yeni bir satır mı oluşacak? Evetse INSERT kullan.
  2. Hayırsa mevcut kaydın hangi alanı değişecek? Değişecek sütunu ve hedef kaydı belirleyip UPDATE kullan.

Aşağıdaki örnekte önce tablo oluşturulur, ardından Deniz adlı öğrenci eklenir. Aynı ogrenci_id = 101 koşulu önce SELECT ile kontrol edilir, sonra bölüm güncellenir ve son durum tekrar sorgulanır.

CREATE TABLE ogrenciler (
    ogrenci_id INTEGER PRIMARY KEY,
    ad TEXT NOT NULL,
    bolum TEXT NOT NULL
);

INSERT INTO ogrenciler (ogrenci_id, ad, bolum)
VALUES (101, 'Deniz', 'Matematik');

SELECT ogrenci_id, ad, bolum
FROM ogrenciler
WHERE ogrenci_id = 101;

UPDATE ogrenciler
SET bolum = 'Bilgisayar Programcılığı'
WHERE ogrenci_id = 101;

SELECT ogrenci_id, ad, bolum
FROM ogrenciler
WHERE ogrenci_id = 101;

Beklenen ara çıktı: 101 | Deniz | Matematik

Beklenen son çıktı: 101 | Deniz | Bilgisayar Programcılığı

İlk SELECT bir satır döndürür ve bu satırın hedef öğrenciye ait olduğunu gösterir. Sıfır satır dönüyorsa kayıt bulunamıyor olabilir, birden fazla satır dönüyorsa koşul beklenenden geniş seçilmiş olabilir. SQL ve diğer yazılım temellerindeki mevcut bilgini değerlendirmek için ücretsiz bilgi testleri merkezini de kullanabilirsin.

INSERT ve UPDATE farkını hızlıca nasıl seçersin?

Kararı iki soruyla verebilirsin: Yeni bir satır mı oluşacak, yoksa mevcut bir kaydın alanı mı değişecek? Yeni kayıt eklemek için INSERT, mevcut veriyi değiştirmek için UPDATE kullanılır. UPDATE işleminde WHERE koşulu eksik bırakılırsa birden fazla mevcut satır, hatta tablodaki tüm satırlar etkilenebilir.

  1. Yeni bir satır mı oluşacak? Öğrenci tablosuna yeni bir öğrenci ekleniyorsa INSERT INTO kullanılır.
  2. Mevcut bir kaydın hangi alanı mı değişecek? Bir öğrencinin bölümü güncellenecekse UPDATE ... SET kullanılır ve hedef WHERE ile sınırlandırılır.

Yeni kayıt eklemek için INSERT, mevcut veriyi değiştirmek için UPDATE kullanılır.

Ölçüt INSERT UPDATE
Amaç Belirtilen sütunlara değer eşleştirerek yeni kayıt oluşturur. Mevcut kayıtların belirtilen sütunlarını değiştirir.
Etkilenen satırlar Örnekte bir yeni kayıt oluşturulur. Sıfır, bir veya birden fazla satır etkilenebilir; eşleşen mevcut kayıtlar değişir.
Temel sözdizimi INSERT INTO ogrenciler (ad, bolum) VALUES (...); UPDATE ogrenciler SET bolum = ... WHERE ...;
WHERE kullanımının rolü INSERT INTO ... VALUES biçiminde hedef filtreleme koşulu bulunmaz; sütunlar ve değerler belirtilir. WHERE hedefi sınırlar. Eksik bırakılırsa mevcut satırların tamamı etkilenebilir.
Birincil anahtarın rolü Yeni kaydın birincil anahtarı tablo kuralına uygun biçimde belirtilir veya oluşturulur ve mevcut anahtarla çakışmamalıdır. Genellikle doğru mevcut kaydı seçmek için WHERE içinde kullanılır.

İşlemi çalıştırmadan önce şu kısa kontrol listesini kullan:

  • Yeni bir satır mı oluşturulacak?
  • Güncellenecek kaydın mevcut birincil anahtarı belli mi?
  • Değişecek sütun doğru mu?
  • Aynı WHERE koşuluyla yapılan SELECT beklenen satırları gösteriyor mu?
  • WHERE koşulunun kapsamı açık mı?

DELETE mevcut satırları kaldırır; bu nedenle INSERT ya da UPDATE işlemlerinin yerine geçmez.

SQL ve veri tabanı temelleriyle ilgili ek açıklamaları SQL ve veri tabanı temelleri yazılarında bulabilirsin.

Doğru komutu seçtikten sonra sütunları, değerleri ve WHERE kapsamını son kez kontrol etmek, işlemin amacına uygun ilerlemesine yardımcı olur.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara