Ö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:
Bu operatör grubunu tanımaya INSERT operatörü ile başlayalım.
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:
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.
Ö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.
Ö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.
Ç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: