INSERT INTO VALUES() deyimi

Nasıl tablo oluşturacağımızı anladık, şimdi bir SQL sorgusu kullanarak bir tabloya nasıl veri ekleyeceğimize detaylı bir göz atalım.

Aslında bunu yapmak çok basit ama birkaç nüans var. Bir tabloya veri eklemek için en basit seçenek, iki şeyin belirtilmesini gerektirir:

  • sütun adları
  • sütun değerleri (veri)

Sütun adları belirtilmelidir, çünkü çoğu zaman sütunlar veri eklenirken belirtilmeyen varsayılan değerlere sahiptir. Ve genellikle her tablonun böyle en az bir sütunu vardır, örneğin satır kimliği.

Bir tabloya veri eklemek için sorgunun genel biçimi şöyle görünür:

INSERT INTO table (column1, column2, column3) VALUES
    (value1, value2, value3),
    (value1, value2, value3),
    (value1, value2, value3);

Örneğin, kullanıcı tablosuna yeni bir kayıt eklemek isterseniz, sorgu şu şekilde görünür:

INSERT INTO user (name, level, created_time) VALUES
	('Rabinovich', 5, ‘2022-06-06’);

INSERT INTO SELECT deyimi

Bir tabloya veri eklemek için başka bir yaygın senaryo, onu başka bir tablodan, şemadan ve hatta bir DBMS'den almaktır.

Bunu yapmak için, VALUES bölümü yerine verileri seçmek için bir sorgu belirtebileceğiniz başka bir INSERT INTO sorgu biçimi vardır.

Böyle bir talebin genel şekli şöyledir:

INSERT INTO table (column1, column2, column3)
SELECT-request;

Çalışan tablosundaki tüm kullanıcıları kullanıcı tablosuna ekleyecek bir sorgu yazalım:

INSERT INTO user (name, created_time)
   SELECT employee.name, employee.join_date
   FROM employee;

Çalışan tablosunda çeşitli verilerimiz var, ancak bunlardan yalnızca iki alan seçiyoruz - şirkete varış adı ve zamanı.

Ayrıca, kullanıcı tablosu, kullanıcı seviyesi - seviyesini belirtmenizi gerektirir. Çalışanların çalışan tablosunda bir düzeyi yoktur, bu nedenle düzey alanı için kullanıcı tablosunun varsayılan bir değere sahip olduğu gerçeğini kullanacağız. Sadece seviyeyi belirtmiyoruz ve SQL varsayılan değeri ayarlayacaktır.

Varsayılan değerden memnun olmadığımızı ve seviyenin 99 olmasını istediğimizi varsayalım ve user.created_time'ı bugünün tarihi ile değiştirelim, sonra şunu yazabiliriz:

INSERT INTO user (name, level, created_time)
   SELECT employee.name, 99, CURDATE()
   FROM employee;

Daha yapılacak çok şey var ama şimdilik bu kadarla yetineceğimi düşünüyorum. Resmi MySQL sayfasında daha fazlasını okuyabilirsiniz.