TOP

SQL Dersi 13. Veri ekleme (INSERT INTO)

Önceki bölümlerde önceden oluşturulmuş tablolardan veri alma işini ele almıştık. Şimdi tabloları nasıl oluşturup silebileceğimizi, yeni kayıtları nasıl ekleyebileceğimizi ve eskilerini nasıl silebileceğimizi bulmanın zamanı geldi.

Bu amaçlar için SQL'de aşağıdaki gibi operatörler vardır:

  • CREATE - bir tablo oluşturur;
  • ALTER - tablonun yapısını değiştirir;
  • DROP - bir tabloyu veya alanı siler;
  • INSERT - tabloya veri ekler.
  • Bu operatör grubunu tanımaya INSERT operatörü ile başlayalım.


    1. Bütün satırları ekleme

    Adından da anlaşılacağı gibi, INSERT INTO operatörü bir veritabanı tablosuna satır eklemek (eklemek) için kullanılır.

    Ekleme birkaç şekilde yapılabilir:

  • bir tam satır ekleyin;
  • yeni bir satırın bir kısmını ekleyin;
  • sorgu sonuçlarını ekleyin.
  • Yani tabloya yeni bir satır eklemek için tablo adını belirtmemiz, sütun adlarını listelememiz ve INSERT INTO table_name(field1, field2 ...) VALUES (value1, değer2 ...) yapı. Bir örnek düşünelim.

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
    VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
    

    Sütun adlarının sırasını da değiştirebilirsiniz ancak aynı zamanda VALUES parametresindeki değerlerin sırasını da değiştirmeniz gerekir.

    2. Satırların bir kısmını ekleme

    Önceki örnekte INSERT operatörünü kullanırken tablo sütunlarının adlarını açıkça belirttik. Bu sözdizimini kullanarak bazı sütunları atlayabiliriz. Bu, bazı sütunlara değer girip diğerlerine vermeyeceğiniz anlamına gelir. Örnek:

    INSERT INTO Sellers (ID, City, Seller_name) 
    VALUES ('6', 'Los Angeles', 'Harry Monroe')
    

    Bu örnekte Address ve Country adlı iki sütun için değer belirtmedik. Tabloyu tanımlamanıza izin veriyorsa, bazı sütunları aaa ifadesinden hariç tutabilirsiniz. Bu durumda aşağıdaki koşullardan birinin karşılanması gerekir: Bu sütunun boş bir değere izin verecek şekilde tanımlanması (herhangi bir değerin bulunmaması) veya tablo tanımında varsayılan bir değerin belirtilmesi. Bu, herhangi bir değer belirtilmezse varsayılan değerin kullanılacağı anlamına gelir. Satırlarında NULL değerlerinin görünmesine izin vermeyen ve varsayılan kullanım için tanımlanmış bir değere sahip olmayan bir tablodan bir sütunu çıkarırsanız, DBMS bir hata mesajı verir ve satır eklenmez.

    3. Seçilen verileri ekleme

    Önceki örneklerde, verileri sorguya manuel olarak yazarak tabloya ekledik. Ancak başka bir tablodan veri eklemek istediğimizde INSERT INTO operatörü bu işlemi otomatikleştirmemize olanak sağlar. Bunun için SQL'de INSERT INTO ... SELECT ... gibi bir yapı var. Bu tasarım, aynı anda bir tablodan veri seçmenize ve bunları diğerine eklemenize olanak tanır. Ürünümüzün Avrupa'daki satıcılarının listesini içeren başka bir Sellers_EU tablomuz olduğunu ve bunları Sellers genel tablosuna eklememiz gerektiğini varsayalım. Bu tabloların yapısı aynıdır (aynı sayıda sütun ve aynı adlar), ancak veriler farklıdır. Bunu yapmak için aşağıdaki sorguyu yazabiliriz:

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
                 SELECT ID, Address, City, Seller_name, Country 
                 FROM Sellers_EU
    

    Dahili anahtarların değerlerinin (ID alanı) tekrarlanmamasına dikkat etmek gerekir, aksi halde hata oluşacaktır. SELECT ifadesi ayrıca verileri filtrelemek için bir WHERE yan tümcesi içerebilir. Ayrıca şunu da belirtmek gerekir ki DBMS, SELECT operatöründe yer alan sütunların adlarına dikkat etmez, yalnızca konum sırasına önem verir. Bu nedenle, SELECT aracılığıyla seçilen ilk belirtilen sütundaki veriler, alan adından bağımsız olarak, her durumda INSERT INTO operatöründen sonra belirtilen Sellers tablosunun ilk sütununa doldurulacaktır.

    4. Verileri bir tablodan diğerine kopyalamak

    Çoğu zaman, veritabanlarıyla çalışırken, yedekleme veya değişiklik amacıyla herhangi bir tablonun kopyalarını oluşturmaya ihtiyaç duyulur. SQL'de tablonun tam bir kopyasını oluşturmak için ayrı bir operatör SELECT INTO sağlanır. Örneğin Sellers tablosunun bir kopyasını oluşturmamız gerekiyor, sorguyu şu şekilde yazmamız gerekecek:

    SELECT * INTO Sellers_new 
    FROM Sellers
    

    Önceki yapıdan farklı olarak INSERT INTO ... SELECT ... veri mevcut bir tabloya eklendiğinde, SELECT ... INTO ... FROM ... yapısı verileri yeni bir tabloya kopyalar. Ayrıca ilk inşaatın verileri ithal ettiği, ikincisinin ise ihraç ettiği söylenebilir.

    SELECT ... INTO ... FROM ... yapısını kullanırken aşağıdakiler dikkate alınmalıdır:

  • SELECT ifadesindeki GROUP BY ve HAVING gibi herhangi bir cümleyi kullanabilirsiniz;
  • birden fazla tablodan veri eklemek için birleşim kullanabilirsiniz;
  • kaç tablodan alındığına bakılmaksızın veriler yalnızca bir tabloya eklenebilir.