Select oracle sözdizimine ekleyin. T-SQL Temelleri. DML. Birden çok satır ekleme

Daha önce tartışılan SELECT deyimine ek olarak, Veri İşleme Dili (DML) üç deyim daha içerir: INSERT, UPDATE ve DELETE. SELECT deyimi gibi, bu üç deyim de tablolarda veya görünümlerde çalışır. Bu makalede INSERT deyimi anlatılmaktadır ve diğer iki deyim bir sonraki makalede tartışılmaktadır.

INSERT beyanı tabloya satırlar (veya satırların parçalarını) ekler. Bu talimatın iki farklı şekli vardır:

INSERT tab_name [(col_list)] VARSAYILAN DEĞERLER | DEĞERLER (( VARSAYILAN | NULL | ifade ) [ ,...n]) INSERT INTO sekme_adı | görünüm_adı [(sütun_listesi)] (select_ifadesi | yürütme_ifadesi) Sözdizimi kuralları

Talimatın ilk şekli tabloya bir satır (veya bir kısmını) eklemenizi sağlar. Ve INSERT ifadesinin ikinci biçimi, bir SELECT ifadesinin sonuç kümesini veya bir EXECUTE ifadesi tarafından yürütülen saklı bir prosedürü bir tabloya eklemenizi sağlar. Saklı yordamın tabloya eklenecek verileri döndürmesi gerekir. SELECT ifadesi, INSERT deyimiyle birlikte kullanıldığında, karşılık gelen sütunların veri türleri uyumlu olduğu sürece, verilerin eklendiği farklı veya aynı tablodaki değerleri seçebilir.

Her iki form için de eklenen her değerin veri türü, karşılık gelen tablo sütununun veri türüyle uyumlu olmalıdır. Tüm dize ve geçici veriler tırnak içine alınmalıdır; Sayısal değerlerin tırnak içine alınmasına gerek yoktur.

Tek satır ekleme

INSERT ifadesinin her iki biçimi için de sütun listesinin açıkça belirtilmesi isteğe bağlıdır. Sütunları listelememek, tablodaki tüm sütunları belirtmekle aynı şeydir.

VARSAYILAN DEĞERLER parametresi tüm sütunlar için varsayılan değerleri ekler. TIMESTAMP veri türüne veya IDENTITY özelliğine sahip sütunlar, sistem tarafından otomatik olarak oluşturulan değerlerle varsayılan olarak eklenir. Diğer veri türlerinin sütunları için, eğer varsa karşılık gelen boş olmayan varsayılan değer eklenir, aksi halde NULL eklenir. Bir sütun boş değerlere izin vermiyorsa ve tanımlanmış bir varsayılan değere sahip değilse, INSERT deyimi başarısız olur ve bir mesaj görüntülenir.

Aşağıdaki örnek, SampleDb veritabanındaki Çalışan tablosuna satırlar ekleyerek veritabanına küçük miktarda veri eklemek için INSERT ifadesinin kullanımını gösterir:

SampleDb'yi KULLANIN; Çalışan DEĞERLERİNE EKLEYİN (34990, "Andrey", "Batonov", "d1"); Çalışan DEĞERLERİNE EKLEYİN (38640, "Alexey", "Vasin", "d3");

İki tane Farklı yollar değerleri yeni bir satıra ekleme. Aşağıdaki örnekteki INSERT ifadesi açıkça NULL anahtar sözcüğünü kullanır ve karşılık gelen sütuna bir NULL değeri ekler:

SampleDb'yi KULLANIN; Çalışan DEĞERLERİNE EKLEYİN (34991, "Andrey", "Batonov", NULL);

Bir tablonun bazı (ancak hepsine değil) sütunlarına değer eklemek için genellikle bu sütunları açıkça belirtmeniz gerekir. Belirtilmeyen sütunlar ya NULL değerlere izin vermeli ya da tanımlanmış bir varsayılan değere sahip olmalıdır.

SampleDb'yi KULLANIN; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Andrey", "Batonov");

Önceki iki örnek eşdeğerdir. Employee tablosunda NULL değerlere izin veren tek sütun DepartmanNumarası sütunudur ve diğer tüm sütunlar CREATE TABLE deyimindeki NOT NULL yan tümcesi tarafından devre dışı bırakılmıştır.

Değerlerin sırası DEĞERLER teklif INSERT deyimleri, CREATE TABLE deyiminde belirtilen sıradan farklı olabilir. Bu durumda bunların sırası, ilgili sütunların sütun listesinde listelendiği sırayla eşleşmelidir. Aşağıda orijinalden farklı bir sırayla veri ekleme örneği verilmiştir:

SampleDb'yi KULLANIN; INSERT INTO Employee(DepartmanNumber, LastName, Id, FirstName) VALUES ("d1", "Batonov", 34993, "Andrey");

Birden çok satır ekleme

INSERT ifadesinin ikinci biçimi, bir alt sorgu tarafından seçilen bir veya daha fazla satırı tabloya ekler. Aşağıdaki örnek, INSERT ifadesinin ikinci biçimini kullanarak bir tabloya nasıl satır ekleneceğini gösterir. Bu durumda, Moskova'da bulunan departmanların numaralarını ve adlarını seçmek için bir sorgu yürütülür ve ortaya çıkan sonuç seti daha önce oluşturulan yeni bir tabloya yüklenir.

Yukarıdaki örnekte oluşturulan yeni MoskovaDepartman tablosu, eksik Konum sütunu dışında mevcut Departman tablosuyla aynı sütunlara sahiptir. INSERT deyimindeki alt sorgu, Departman tablosundaki Konum sütunu değeri "Moskova" olan tüm satırları seçer ve bunlar daha sonra sorgunun başında oluşturulan yeni tabloya eklenir.

Aşağıdaki örnek, INSERT ifadesinin ikinci biçimini kullanarak bir tabloya satır eklemenin başka bir yolunu gösterir. Bu durumda proje p2'de çalışan “Yönetici” pozisyonundaki tüm çalışanlar için personel sayılarını, proje sayılarını ve proje başlangıç ​​tarihlerini seçmek ve ardından ortaya çıkan sonuç setini proje başlangıcında oluşturulan yeni bir tabloya yüklemek için bir sorgu yürütülür. sorgu:

SampleDb'yi KULLANIN; CREATE TABLE ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR (4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Yönetici";

INSERT deyimini kullanarak satır eklemeden önce, Moskova Departmanı ve ManagerTeam tabloları (yukarıdaki örneklerde) boştu. Tablo zaten mevcutsa ve veri içeren satırlar içeriyorsa, tabloya yeni satırlar eklenir.

Önceki bölümlerde önceden oluşturulmuş tablolardan veri alma işine baktık. Şimdi tabloları nasıl oluşturup silebileceğimizi, yeni kayıtları nasıl ekleyebileceğimizi ve eskilerini nasıl silebileceğimizi anlamanın zamanı geldi. Bu amaçlarla SQL Aşağıdaki gibi operatörler vardır: YARATMAK- bir tablo oluşturur, DEĞİŞTİR- tablo yapısını değiştirir, DÜŞÜRMEK- bir tabloyu veya alanı siler, SOKMAK- tabloya veri ekler. Operatörden bu operatör grubunu tanımaya başlayalım SOKMAK.

1. Satırların tamamını ekleme

Adından da anlaşılacağı gibi operatör SOKMAK Bir veritabanı tablosuna satır eklemek (eklemek) için kullanılır. Ekleme birkaç şekilde yapılabilir:

  • - bir tam satır ekleyin
  • - satırın bir kısmını ekleyin
  • - sorgu sonuçlarını ekleyin.

Dolayısıyla, bir tabloya yeni bir satır eklemek için tablo adını belirtmemiz, sütun adlarını listelememiz ve yapıyı kullanarak her sütunun değerini belirtmemiz gerekir. TAKIN tablo_adı (alan1, alan2 ...) DEĞERLER (değer1, değer2...). Bir örneğe bakalım.

Satıcılara EKLEYİN (Kimlik, Adres, Şehir, Satıcı_adı, Ülke) DEĞERLER("6", "1. Cadde", "Los Angeles", "Harry Monroe", "ABD")

Sütun adlarının sırasını da değiştirebilirsiniz ancak aynı zamanda parametredeki değerlerin sırasını da değiştirmeniz gerekir. DEĞERLER.

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

Önceki örnekte operatörü kullanırken SOKMAK tablo sütun adlarını açıkça işaretledik. Bu sözdizimini kullanarak bazı sütunları atlayabiliriz. Bu, bazı sütunlar için değer girdiğiniz ancak diğer sütunlar için bu değerleri sağlamadığınız anlamına gelir. Örneğin:

Satıcılara EKLEYİN (ID, Şehir, Satıcı_adı) DEĞERLER("6", "Los Angeles", "Harry Monroe")

Bu örnekte iki sütun için değer belirtmedik. Adres Ve Ülke. Bazı sütunları ifadeden hariç tutabilirsiniz TAKIN, eğer bu tablo tanımına izin veriyorsa. Bu durumda koşullardan birinin karşılanması gerekir: bu sütun geçerli olarak tanımlandı HÜKÜMSÜZ(herhangi bir değerin olmaması) veya tablo tanımında belirtilen varsayılan değer. Bu, herhangi bir değer belirtilmezse varsayılan değerin kullanılacağı anlamına gelir. Tablonun satırlarında değerlerin görünmesine izin vermeyen bir sütun eksikse HÜKÜMSÜZ ve tanımlanmış bir varsayılan değer yoksa, DBMS bir hata mesajı oluşturacak ve satır eklenmeyecektir.

3. Seçilen verileri ekleme

Önceki örnekte, sorguya manuel olarak girerek tablolara veri ekledik. Ancak operatör TAKIN Başka bir tablodan veri eklemek istiyorsak bu işlemi otomatikleştirmemize olanak tanır. Bu amaçla SQL'de şöyle bir yapı vardır: EKLEYİN... SEÇİN.... Bu tasarım aynı anda bir tablodan veri seçip diğerine eklemenizi sağlar. Diyelim ki başka bir masamız var Satıcılar_ABürünlerimizin Avrupa'daki satıcılarının bir listesi ile bunları genel tabloya eklememiz gerekiyor Satıcılar. 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:

Satıcılara EKLEYİN (Kimlik, Adres, Şehir, Satıcı_adı, Ülke) SEÇKimlik, Adres, Şehir, Satıcı_adı, Ülke Satıcılar_AB'DEN

Dahili anahtarların değerlerinin tekrarlanmamasına dikkat etmeniz gerekmektedir (alan İD), aksi halde bir hata meydana gelecektir. Şebeke SEÇMEönerileri de içerebilir NEREDE Verileri filtrelemek için. Ayrıca DBMS'nin ifadede yer alan sütunların adlarına dikkat etmediğini de belirtmek gerekir. SEÇME onun için yalnızca bunların düzenlenme sırası önemlidir. Bu nedenle seçilen ilk belirtilen sütundaki veriler SEÇME, her durumda tablonun ilk sütunu doldurulacaktır. Satıcılar, operatörden sonra belirtilir TAKIN, alan adından bağımsız olarak.

4. Verileri bir tablodan diğerine kopyalamak

Genellikle veritabanlarıyla çalışırken, yedekleme veya değişiklik amacıyla herhangi bir tablonun kopyalarını oluşturmaya ihtiyaç duyulur. Yapmak tam kopya SQL'deki tablolarda ayrı bir operatör var İÇİNİ SEÇİN. Örneğin tablonun bir kopyasını oluşturmamız gerekiyor Satıcılar isteği şu şekilde yazmanız gerekir:

Satıcılardan * INTO Sellers_new SEÇİN

Önceki tasarımın aksine EKLEYİN... SEÇİN... Mevcut bir tabloya veri eklendiğinde tasarım, verileri yeni tabloya kopyalar. Ayrıca, ilk yapının verileri içe aktardığını, ikinci yapının ise dışa aktardığını da söyleyebilirsiniz. Tasarımı kullanırken SEÇİN ... İÇİNE ... FROM ... Aşağıdakiler dikkate alınmalıdır:

  • - operatördeki herhangi bir cümleyi kullanabilirsiniz SEÇME, örneğin GRUPLANDIRMA ŞEKLİ Ve SAHİP OLMAK
  • - birden fazla tablodan veri eklemek için birleştirmeyi kullanabilirsiniz
  • - kaç tablodan alınmış olursa olsun veriler yalnızca bir tabloya eklenebilir.

Takım tabloya satır ekler veya ana tablo görünümü.

Sql INSERT Komut Söz Dizimi

Komut Sözdizimini Ekle


INSERT komutunun temel anahtar sözcükleri ve parametreleri
  • şema- genellikle bazı kullanıcıların adlarıyla eşleşen izin tanımlayıcı
  • tablo görünümü- satırların ekleneceği tablonun adı; bir görünüm belirtilirse satırlar görünümün ana tablosuna eklenir
  • alt sorgu_1- sunucunun görünümle aynı şekilde işlediği bir alt sorgu
  • kolon- eklenen her satır için ifadedeki değerin girildiği bir tablo veya görünüm sütunu DEĞERLER veya alt sorgu; tablonun sütunlarından biri bu listeden çıkarılırsa, eklenen satırın sütun değeri, tablo oluşturulduğunda tanımlanan varsayılan sütun değeri olur. Bir sütun listesi tamamen atlanırsa, madde DEĞERLER veya sorgunun tablodaki tüm sütunlar için değerleri belirlemesi gerekir
  • DEĞERLER- tabloya veya görünüme eklenecek bir değerler dizisini tanımlar; Anlam cümlede tanımlanmalıdır DEĞERLER sütun listesindeki her sütun için
  • alt sorgu_2- tabloya eklenen satırları döndüren bir alt sorgu; bu alt sorgunun seçim listesi, ifade sütun listesiyle aynı sayıda sütuna sahip olmalıdır

İfade ifadeyle DEĞERLER tabloya tek bir satır ekler. Bu satır ifadeyle tanımlanan değerleri içerir DEĞERLER.
İle beyan alt sorgu bir cümle yerine DEĞERLER alt sorgunun döndürdüğü tüm satırları tabloya ekler. Sunucu işlemleri alt sorgu ve döndürülen her satırı tabloya ekler. Alt sorgu herhangi bir satırı seçmezse sunucu tabloya herhangi bir satır eklemez.
Alt sorgu hedef iddia tablosu da dahil olmak üzere herhangi bir tabloya veya görünüme erişebilir . Sunucu, tablodaki sütunların iç konumuna ve ifade değerlerinin sırasına göre yeni satırlardaki alanlara değerler atar. DEĞERLER veya sorgu seçim listesinde. Sütun listesinde herhangi bir sütun eksikse, sunucu onlara tablo oluşturulduğunda tanımlanan varsayılan değerleri atar. Bu sütunlardan herhangi birinde NOT NULL kısıtlaması varsa sunucu, kısıtlamanın ihlal edildiğini belirten bir hata döndürür ve INSERT deyimini iptal eder.
Bir INSERT ifadesi yayınlandığında, tabloda tanımlanan herhangi bir INSERT tetikleyicisi etkinleştirilir.

Örnek 1'E EKLEYİN

TAKIN borç DEĞERLER(50, "ÜRÜNLER", "SAN FRANCISCO");

TAKIN Müşteriler (şehir, ad, kişi sayısı) DEĞERLER('Londra', 'Hoffman', 2001);

Örnek 2'YE EKLEYİN
Aşağıdaki komut, komisyonları gelirlerinin %25'ini aşan şirket çalışanlarının verilerini prim tablosuna kopyalar:

TAKIN bonus SEÇİN adı, işi, salı, iletişim FROM emp WHERE iletişim > 0.25 * sal;

Örnek 3'E EKLEYİN
Eklemeniz gerekiyorsa HÜKÜMSÜZ-value, bunu normal bir değer olarak aşağıdaki gibi belirtmelisiniz:

TAKIN Satış Elemanları DEĞERLERİ (1001,'Peel',NULL,12);

Örnek 4'E EKLEYİN
Komut, bir tablodan değerleri almak ve bunları bir sorgu kullanarak başka bir tabloya yerleştirmek için kullanılabilir. Bunu yapmak için cümleyi değiştirmek yeterlidir. DEĞERLER ilgili talebe göre:

TAKIN Londonstaff SELECT * FROM Satış Görevlileri WHERE şehir = 'Londra';

MySQL EKLEYİN

MySQL veritabanına yeni satırlar eklemek için şunu kullanın: EKLEYİN komutu, komut örnekleri aşağıda verilmiştir:
Örnek 1'E EKLEYİN.
Sokmak Yeni hat tablo_adı tablosuna.

TAKIN

Örnek 2'YE EKLEYİN.
İhtiyacımız olan sütunlara veri eklendiğini gösteren tablo_adı tablosuna yeni bir satır eklemek.

TAKIN tablo_adı VALUES('1','165','0','ad');

Veritabanında MySQL Tek komutla birden fazla yeni satır eklemek mümkündür.
Örnek 3'E EKLEYİN.
Tablo_adı tablosuna birden fazla satır ekleme.

TAKIN table_name (tbl_id, chislo, chislotwo, name) VALUES ('1′,'159′,'34','name1′), ('2′,'14','61','name2′), ('3 ′,'356′,'8′,'isim3');

sql sorgusu INSERT INTO, bir veritabanı tablosu oluşturulduğunda anlamlıdır. Yani tablo var, bir adı var, oluşturulmuş satırları ve sütunları var. tablo operatörü tarafından oluşturulur: , tablo operatörü tarafından değiştirilir.

sql sorgusu INSERT INTO - sorgu sözdizimi

sql sorgusu INSERT INTO aşağıdaki sözdizimine sahiptir:

INSERT INTO tablo_adı (gerekiyorsa parantez içinde veri eklemek istediğiniz sütunların listesini ekleyin) VALUES eklenen veri1, eklenen veri2, eklenen veri3.

INSERT ve INTRO arasına IGNORE seçeneğini ekleyebilirsiniz. Bu gerekli değildir. Bir tabloyu düzenlerken birincil anahtarları korumak için gereklidir. Aksi takdirde, düzenleme sırasında birincil anahtarların kopyalanması meydana gelirse, IGNORE seçeneği eklenirken, düzenlenen tabloda birincil anahtarın bulunduğu ilk satır kalacak, diğer birincil anahtarlar silinecektir. Varsayılan olarak bu seçeneği atlıyoruz.

İsteğe bağlı olarak LOW_PRIORITY ve DELAYED seçenekleri mevcuttur. Veritabanına bilgi ekleme önceliklerini belirlerler. Birincisi veritabanının yayınlanmasının beklenmesini belirtir, ikincisi ise bilgilerin ara belleğe alınması anlamına gelir.

Sorgudaki: VALUES ifadesini içeren INSERT satırı, veritabanı tablosuna tek bir satır eklemenizi sağlar. VALUES cümlesi bu verinin değerlerini içerir.

VALUES ifadesi yerine alt sorgular belirtilebilir. Bir alt sorguya sahip INSERT, alt sorgunun döndürdüğü satırları tabloya ekler. Veritabanı sunucusu alt sorguyu işler ve döndürülen tüm satırları tabloya ekler. Alt sorgu seçmediği sürece sunucu satır eklemez.

  • alt sorgu_1 - sunucunun görünümle aynı şekilde işlediği bir alt sorgu
  • subquery_2, tabloya eklenen satırları döndüren bir alt sorgudur. Bu alt sorgunun listesi, INSERT sütun listesiyle aynı sayıda sütuna sahip olmalıdır.

Alt sorgular pratik olarak MySQL veritabanında kullanılmaz.

MySQL veritabanındaki INSERT INTO sql sorgusu örnekleri

INSERT INTRO komutunu kullanarak MySQL veritabanına yeni satırlar ekliyoruz.

İlk örnek.

tablo_adı tablosuna yeni satırlar ekleyin.

INSERT INTO table_name VALUES ('2′,'145′,'1′,'name');

Bu, tablonun table_name sütunlarına 2,145,1,name değerlerini eklemek istediğimiz anlamına gelir. Sütunlar belirtilmediğinden değerler tablonun tüm sütunlarına doldurulur.

Örnek iki.

Tablo_adı tablosunun gerekli (belirtilen) sütunlarına bilgi ekleyin.

INSERT INTO table_name (client_customer, client_subclient, client_mail) VALUES ('name1','subname1',' [e-posta korumalı]′), ('isim2','altad2',' [e-posta korumalı]′), ('isim3','altad3',(' [e-posta korumalı]′);

Igor Serov özellikle "" sitesi için.

INSERT deyimi tabloya yeni kayıtlar ekler. Bu durumda, sütun değerleri değişmez sabitler olabilir veya bir alt sorgunun yürütülmesinin sonucu olabilir. İlk durumda, her satırı eklemek için ayrı bir INSERT ifadesi kullanılır; ikinci durumda, alt sorgunun döndürdüğü sayıda satır eklenecektir.

Operatör sözdizimi aşağıdaki gibidir:

    TAKIN [ (,...) ]

    (DEĞERLER(,…))

  1. | (VARSAYILAN DEĞERLER)

Sunulan sözdiziminden görebileceğiniz gibi, sütun listesi isteğe bağlıdır (buna denir) köşeli parantez sözdizimi açıklamasında). Eksikse, eklenen değerlerin listesi eksiksiz olmalıdır, yani tablonun tüm sütunları için değerler sağlanmalıdır. Bu durumda değerlerin sırası, satırların eklendiği tablo için CREATE TABLE deyiminin belirttiği sıraya uygun olmalıdır. Ayrıca bu değerlerin girildiği sütunlarla aynı veri türünde olması gerekmektedir. Örnek olarak, aşağıdaki CREATE TABLE deyimiyle oluşturulan Ürün tablosuna bir satır eklemeyi düşünün:

    TABLO OLUŞTURMA ürünü

    yapıcı karakter (1) NULL DEĞİL,

    model varchar(4) BOŞ DEĞİL,

    varchar(7) yazın NULL DEĞİL

Bu tabloya üretici B'nin PC modeli 1157'yi eklemek istediğinizi varsayalım.Bunu aşağıdaki ifadeyle yapabilirsiniz:

    ÜRÜNE EKLEYİN

    DEĞERLER ("B", 1157, "PC");

Bir sütun listesi belirtirseniz bunların "doğal" sırasını değiştirebilirsiniz:

    ÜRÜNE EKLEYİN (tip, model, üretici)

    DEĞERLER ("PC", 1157, "B");

Görünüşe göre bu tamamen gereksiz bir özellik ve bu da tasarımı daha da hantal hale getiriyor. Ancak sütunların varsayılan değerleri varsa kazanır. Aşağıdaki tablo yapısını göz önünde bulundurun:

    TABLO OLUŞTURMA ürün_D

    yapıcı karakter (1) NULL,

    model varchar(4) NULL,

    varchar yazın (7 ) BOŞ DEĞIL VARSAYILAN "PC"

Burada tüm sütunların değerlerinin varsayılan değerlere sahip olduğunu unutmayın (ilk ikisi NULL ve son sütun - PC tipi). Artık şunu yazabiliriz:

    INSERT INTO Product_D (model, yapımcı)

    DEĞERLER(1157; "B");

Bu durumda, bir satır eklenirken eksik olan değer, varsayılan değer olan PC ile değiştirilecektir. CREATE TABLE ifadesinde bir sütuna varsayılan bir değer verilmezse ve bu tablo sütununda NULL kullanımını yasaklamak için NOT NULL kısıtlaması belirtilirse, NULL'un varsayılan değerinin varsayılacağını unutmayın.

Şu soru ortaya çıkıyor: Bir sütun listesi belirtmemek ve yine de varsayılan değerleri kullanmak mümkün mü? Cevap Evet. Bunu yapmak için değeri açıkça belirtmek yerine DEFAULT ayrılmış sözcüğünü kullanın:

    Ürün_D'YE EKLEYİN

    DEĞERLER ("B", 1158, VARSAYILAN);

Tüm sütunların varsayılan değerleri olduğundan, varsayılan değerlere sahip bir satır eklemek için şunu yazabilirsiniz:

    Ürün_D'YE EKLEYİN

    DEĞERLER(VARSAYILAN, VARSAYILAN, VARSAYILAN);

Ancak bu durum için, yukarıdaki operatörün formda yeniden yazılabileceği özel bir VARSAYILAN DEĞERLER yapısı vardır (operatör sözdizimine bakınız).

    Product_D VARSAYILAN DEĞERLERE EKLEYİN;

Bir tabloya satır eklerken bu tabloya uygulanan tüm kısıtlamaların kontrol edildiğini unutmayın. Bunlar birincil anahtar veya benzersiz dizin kısıtlamaları, CHECK kısıtlamaları veya referans bütünlüğü kısıtlamaları olabilir. Herhangi bir kısıtlamanın ihlal edilmesi durumunda satır ekleme işlemi reddedilecektir. Şimdi bir alt sorgu kullanma durumunu ele alalım. Kişisel bilgisayar modelleriyle (tip = 'PC') ilgili Ürün tablosundaki tüm satırları Product_D tablosuna eklememiz gerektiğini varsayalım. İhtiyacımız olan değerler zaten bazı tablolarda olduğundan, eklenen satırları manuel olarak oluşturmak öncelikle etkisizdir ve ikinci olarak giriş hatalarına neden olabilir. Bir alt sorgu kullanmak şu sorunları çözer:

Sütunların sırası her iki tablo için de aynı olduğundan, alt sorguda “*” simgesinin kullanılması bu durumda haklıdır. Durum böyle olmasaydı, INSERT ifadesine, alt sorguya veya her ikisine de sütunların sırasına uygun bir sütun listesi uygulanması gerekirdi:

Burada, daha önce olduğu gibi, mevcut varsayılan değerleri kullanmak istiyorsanız tüm sütunları belirtemezsiniz, örneğin:

Bu durumda, Product_D tablosunun tür sütunu, eklenen tüm satırlar için varsayılan PC değeriyle değiştirilecektir.

Bir yüklem içeren bir alt sorgu kullanıldığında, yalnızca yüklem değeri DOĞRU (BİLİNMEYEN değil!) olan satırların ekleneceğini unutmayın. Başka bir deyişle, Ürün tablosundaki tür sütunu NULL olabilirse ve bu değer birkaç satırda mevcutsa bu satırlar Product_D tablosuna eklenmeyecektir.

UNION ALL yan tümcesiyle bir satır oluşturan bir alt sorgu kullanmanın yapay tekniği, VALUES yan tümcesinde satır oluşturucuyu kullanırken INSERT deyimine bir satır ekleme konusundaki sınırlamanın üstesinden gelmenize olanak tanır. Dolayısıyla, bir INSERT deyimini kullanarak birkaç satır eklememiz gerekiyorsa şunu yazabiliriz:

    Ürün_D'YE EKLEYİN

    "B" AS yapımcısı, 1158 AS modeli, "PC" AS tipini SEÇİN

    BİRLİK TÜMÜ

    "C", 2190, "Dizüstü Bilgisayar"ı SEÇİN

    BİRLİK TÜMÜ

    "D", 3219, "Yazıcı"yı SEÇİN;

Yinelenen satırların yokluğu garanti edilse bile UNION ALL'ın kullanılması UNION'a tercih edilir, çünkü bu durumda kopyaları ortadan kaldırmak için herhangi bir kontrol yapılmayacaktır.

Satır yapıcıyı kullanarak birden fazla demet eklemenin halihazırda uygulandığına dikkat edilmelidir. Microsoft Corporation tarafından geliştirilen ilişkisel veritabanı yönetim sistemi (DBMS).Yapılandırılmış Sorgu Dili), ilişkisel veritabanlarındaki verileri oluşturmak, değiştirmek ve işlemek için kullanılan evrensel bir bilgisayar dilidir. SQL Server 2008. Bu olasılık göz önüne alındığında son sorgu şu şekilde yeniden yazılabilir:

    Product_D DEĞERLERİNE EKLEYİN

    ("B", 1158, "PC"),

    ("C", 2190, "Dizüstü Bilgisayar"),


Tepe