ecosmak.ru

Sql'de insert nedir? SQL INSERT INTO SELECT ifadesi

SQL'i kullanarak bilgileri bir tablodan diğerine kopyalayabilirsiniz.

INSERT INTO SELECT ifadesi, verileri bir tablodan kopyalar ve mevcut bir tabloya ekler.

SQL INSERT INTO SELECT ifadesi,

INSERT INTO SELECT ifadesi bir tablodaki verileri seçer ve onu mevcut bir tabloya ekler. Hedef tablodaki mevcut satırların hiçbiri değiştirilmez.

SQL SELECT'E INSERT, Sözdizimi

Tüm sütunları bir tablodan diğerine, mevcut tabloya kopyalayabiliriz:

TAKIN Tablo 2
* İÇİNDEN SEÇİN tablo 1;

Veya yalnızca istediğimiz sütunları mevcut başka bir tabloya kopyalayabiliriz:

TAKIN Tablo 2
(sütun_adı(lar))
SEÇME sütun_adı(ları)
İTİBAREN tablo 1;

Veritabanının demo sürümü

Bu eğitimde iyi bilinen Northwind veritabanını kullanacağız.

Aşağıda "Müşteriler" tablosundan bir seçim yer almaktadır:

Kullanıcı kimliğiMüşterinin adıİrtibat kişisiAdresşehirPosta koduBir ülke
1 Alfred's Futterkiste Maria Anders Obere Cad. 57 Berlin 12209 Almanya
2 Ana Trujillo Emparedados ve helados Ana Trujillo Avda. 2222 Anayasası Meksika df. 05021 Meksika
3 Antonio Moreno Taqueria Antonio Moreno Mataderos 2312 Meksika df. 05023 Meksika

Ve "Tedarikçiler" tablosundan seçim:

SQL INSERT INTO SELECT, Örnekler

"Tedarikçiler"den yalnızca birkaç sütunun "Müşteriler"e kopyalanması:

Yalnızca Alman tedarikçileri "Müşteriler"e kopyalamak.

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.
Tablo_adı tablosuna yeni bir satır ekleniyor.

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');

Son güncelleme: 07/13/2017

Veri eklemek için aşağıdaki resmi sözdizimine sahip INSERT komutunu kullanın:

INSERT tablo_adı [(sütun_listesi)] VALUES (değer1, değer2, ... değerN)

İlk önce INSERT INTO ifadesi gelir, ardından parantez içinde verilerin eklenmesi gereken sütunların virgülle ayrılmış listesini belirtebilirsiniz ve en sonunda DEĞERLER kelimesinden sonra sütunlar için eklenecek değerler listelenir. parantez.

Örneğin, aşağıdaki veritabanının daha önce oluşturulduğunu varsayalım:

VERİTABANI OLUŞTURUN ürünleridb; GO ÜRÜNLERİ KULLANINdb; CREATE TABLE Ürünler (Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Üretici NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)

INSERT komutunu kullanarak buna bir satır ekleyelim:

Ürün DEĞERLERİNİ GİRİN ("iPhone 7", "Apple", 5, 52000)

SQL Server Management Studio'da başarılı bir şekilde yürütüldükten sonra mesaj alanında "1 satır etkilendi" mesajı görünmelidir:

VALUES anahtar sözcüğünden sonra parantez içindeki sütunlara ait değerlerin bildirildiği sıraya göre iletildiğini dikkate almakta fayda var. Örneğin yukarıdaki CREATE TABLE ifadesinde ilk sütunun Id olduğunu görebilirsiniz. Ancak IDENTITY özelliği belirtildiği için bu sütunun değeri otomatik olarak oluşturulur ve atlanabilir. İkinci sütun ÜrünAdı'nı temsil eder, dolayısıyla ilk değer olan "iPhone 7" dizesi bu sütuna iletilecektir. İkinci değer - "Apple" dizisi, Üreticinin üçüncü sütununa aktarılacaktır. Yani değerler sütunlara şu şekilde aktarılır:

    ÜrünAdı: "iPhone 7"

    Üretici: "Apple"

Ayrıca değerleri girerken değerlerin ekleneceği doğrudan sütunları da belirleyebilirsiniz:

Ürünlere (ÜrünAdı, Fiyat, Üretici) DEĞERLER GİRİN ("iPhone 6S", 41000, "Apple")

Burada değer yalnızca üç sütun için belirtilmiştir. Üstelik artık değerler sütun sırasına göre aktarılıyor:

    ÜrünAdı: "iPhone 6S"

    Üretici: "Apple"

Belirtilmeyen sütunlar için (bu durumda ProductCount), DEFAULT özniteliği belirtilirse varsayılan bir değer veya bir NULL değeri eklenecektir. Ancak belirtilmemiş sütunların null olması veya DEFAULT niteliğine sahip olması gerekir.

Aynı anda birkaç satır da ekleyebiliriz:

ÜRÜN DEĞERLERİNE GİRİN ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

Bu durumda tabloya üç satır eklenecektir.

Ayrıca, eklerken DEFAULT anahtar sözcüğünü veya NULL değerini kullanarak sütunun varsayılan bir değere sahip olması gerektiğini belirtebiliriz:

Ürünlere EKLEYİN (ÜrünAdı, Üretici, Ürün Sayısı, Fiyat) DEĞERLER ("Mi6", "Xiaomi", VARSAYILAN, 28000)

Bu durumda ProductCount sütununun varsayılan değeri kullanılacaktır (ayarlanmışsa, değilse NULL).

Tüm sütunların varsayılan değeri belirten bir DEFAULT özelliği varsa veya null yapılabilirse, tüm sütunlar için varsayılan değerler ekleyebilirsiniz:

ÜRÜNLERE VARSAYILAN DEĞERLERİ GİRİN

Ancak Ürünler tablosunu alırsak, birkaç alan DEFAULT niteliğine sahip olmadığından ve aynı zamanda NULL değerine izin vermediğinden böyle bir komut bir hatayla başarısız olacaktır.

Herkese selam! Bu makale bunu nasıl yapabileceğinizi tartışacak tabloya veri ekle Microsoft SQL Server'da, T-SQL diline en azından biraz aşina iseniz, muhtemelen şimdi INSERT deyimi ve bunun bir tabloya veri eklemek için nasıl kullanılabileceği hakkında konuşacağımızı fark etmişsinizdir.

Her zamanki gibi küçük bir teoriyle başlayalım.

T-SQL'de INSERT ifadesi

SOKMAK bir tabloya veri eklemek için tasarlanmış bir T-SQL talimatıdır; yeni kayıtlar oluşturuyoruz. Bu talimat hem bir tabloya tek satır eklemek hem de verileri toplu olarak eklemek için kullanılabilir. INSERT deyimi veri eklemek için izin gerektirir ( SOKMAK) hedef tabloya.

Eklenmesi gereken veri parçasında INSERT deyimini kullanmanın birkaç yolu vardır:

  • Eklenecek belirli değerlerin listelenmesi;
  • Bir veri kümesini SELECT sorgusu olarak belirtme;
  • Tablo verilerini döndüren bir prosedür çağrısı biçiminde bir veri kümesinin belirtilmesi.

Basitleştirilmiş sözdizimi

EKLEYİN [tablo] ( sütun listesi...) DEĞERLER ( Değerler listesi...) Veya SEÇİN örnek istek Veya UYGULA prosedür

  • INSERT INTO bir tabloya veri ekleme komutudur;
  • Tablo, yeni kayıtlar eklemek istediğiniz hedef tablonun adıdır;
  • Sütun listesi, verilerin ekleneceği tablonun virgüllerle ayrılmış sütun adlarının bir listesidir;
  • VALUES, tabloya ekleyeceğimiz değerleri belirttiğimiz bir tablo değeri yapıcısıdır;
  • Değer listesi, virgülle ayrılmış olarak eklenecek değerlerdir. Sütun listesinde sütunların görünme sırasına göre listelenirler;
  • SELECT, tabloya eklenecek verileri seçmek için kullanılan bir sorgudur. Sorgunun döndürdüğü sonuç kümesi sütun listesiyle eşleşmelidir;
  • EXECUTE, bir tabloya eklenmek üzere veri elde etmeye yönelik bir prosedür çağrısıdır. Saklı yordamın döndürdüğü sonuç kümesinin sütun listesiyle eşleşmesi gerekir.

INSERT INTO ifadesinin basitleştirilmiş sözdizimi kabaca böyle görünür; çoğu durumda tablolara yeni kayıtları bu şekilde eklersiniz.

Veri ekleyeceğiniz sütunların listesinin yazılmasına gerek yoktur, bu durumda sıraları tablodaki sütunların gerçek sırasına göre belirlenecektir. Eklenecek değerleri belirlerken veya seçilecek sorguyu yazarken bu sırayı hatırlamanız gerekir. Kişisel olarak, yine de veri eklemeyi planladığınız sütunların bir listesini belirtmenizi öneririm.

Ayrıca sütun listesinin ve değer listesinin sırasıyla zorunlu sütunlar içermesi gerektiğini de unutmamalısınız; bunlar NULL değerini içeremeyen sütunlardır. Bunları belirtmezseniz ve sütunun varsayılan değeri yoksa bir hata oluşur.

Ayrıca ekleyeceğiniz değerlerin veri tipinin, bu değerin ekleneceği sütunun veri tipiyle eşleşmesi veya en azından örtülü dönüşümü desteklemesi gerektiğini de belirtmek isterim. Ancak veri türünü kontrol etmenizi öneririm ( biçim) hem değerler listesinde hem de SELECT sorgusunda değerler.

Bu kadar teori yeter, hadi pratiğe geçelim.

İlk veri

Tabloya veri eklemek için tablonun kendisine ihtiyacımız var, o yüzden onu oluşturalım ve ona kayıt eklemeyi deneyelim.

Not! Tüm örnekler Microsoft SQL Server 2016 Express'te çalıştırılacaktır.

TABLO OLUŞTUR TestTable( KİMLİK(1,1) NULL DEĞİL, (100) NULL DEĞİL, NULL DEĞİL)

Test tablomuz fiyatları içeren ürünlerin bir listesini içerecektir.

Ayrıca örneklerde tabloya veri eklemek için tablo değeri döndüren bir prosedür kullanacağız, hadi onu da oluşturalım.

PROSEDÜR OLUŞTURUN TestProsedürünü BAŞLARKEN SEÇİN ÜrünAdı, Fiyat TestTable SONUDAN

Örneğin, yeni oluşturulan TestTable tablosundan veri döndürecektir.

Not!

Anladığınız gibi, bu materyali okumak T-SQL dili hakkında biraz bilgi sahibi olmayı gerektirir; bu nedenle, bir şey sizin için net değilse, aşağıdaki materyallere aşina olmanızı öneririm:

Örnek 1 – Tablo değeri yapıcısını kullanarak tabloya yeni bir kayıt eklemek

Öncelikle bir kayıt eklemeyi deneyelim ve hemen sonuca bakalım, yani. Örnek için istek yazalım.

INSERT INTO TestTable(ÜrünAdı, Fiyat) DEĞERLER ("Bilgisayar", 100) GO SELECT * FROM TestTable

Tablo adından sonra veri ekleyeceğimiz sütunların isimlerini virgülle ayırarak sıraladığımızı, ardından anahtar kelimeyi belirttiğimizi görüyorsunuz. DEĞERLER ve parantez içinde de aynı sırayla virgülle ayırarak eklemek istediğimiz değerleri yazdık.

INSERT deyiminden sonra SELECT deyimi yazıp bunları GO deyimiyle ayırdım.

Şimdi birkaç satır eklememiz gerektiğini düşünelim. Bunun için aşağıdaki isteği yazacağız.

INSERT INTO TestTable(ÜrünAdı, Fiyat) DEĞERLER ("Bilgisayar", 100), ("Klavye", 20), ("Monitör", 50) GO SELECT * FROM TestTable


Örnek 2 - SELECT sorgusu kullanarak tabloya yeni satırlar ekleme

Çoğu zaman bir tabloya, örneğin bir seçme sorgusuna dayalı olarak çok fazla veri eklemeye ihtiyaç duyulur; SEÇME. Bunu yapmak için VALUES yerine isteği belirtmemiz yeterli.

TestTable'A EKLEYİN(ÜrünAdı, Fiyat) TestTable'DAN ÜrünAdı'nı, Fiyatı SEÇİN NEREDE Kimliği >


Bu örnekte, TestTable tablosundaki verileri döndüren, ancak tamamını değil, yalnızca kimliği 2'den büyük olan verileri döndüren bir SELECT sorgusu yazdık. Ve sonuç aynı TestTable tablosuna eklendi.

Sütun listesi belirtmeden bir tabloya nasıl kayıt ekleyebileceğinize örnek olarak yukarıdaki sorguyla tamamen aynı işi yapacak, yalnızca eklenecek sütunları listelemeyecek başka bir veri ekleme sorgusu yazalım.

TestTable'A EKLEYİN ÜrünAdı'nı, Fiyatını TestTable'DAN SEÇİN NEREDE Kimliği > 2 GO SELECT * TestTable'DAN


Bu durumda, TestTable tablosunda ilk sütunun ÜrünAdı ve ikincisinin Fiyat olduğundan eminiz, dolayısıyla bunu bu şekilde yazmaya gücümüz yetiyor. Ancak yine de pratikte bir sütun listesi belirtmek daha iyidir.

Dikkat ettiyseniz, tüm örneklerde Id sütununu belirtmedim ama elimizde var, herhangi bir hata oluşmadı, bu sütun IDENTITY özelliğine sahip olduğundan, otomatik olarak tanımlayıcılar oluşturur, dolayısıyla böyle bir sütuna veri eklemek basitçe yapılamaz.

Örnek 3 - Saklı yordam kullanarak tabloya yeni kayıtlar ekleme

Şimdi saklı yordamın bize döndüreceği verileri tabloya ekleyelim. Buradaki anlam aynı, DEĞERLER yerine istek yerine prosedür çağrısını belirtiyoruz. Ancak anladığınız gibi, prosedür tarafından döndürülen sütunların sırası ve sayısı, eklenecek sütunların listesiyle tam olarak eşleşmelidir ( sütun listesi belirtilmemiş olsa bile).

TestTable'A EKLEYİN (ÜrünAdı, Fiyat) EXEC TestProsedürüne GİT * TestTable'DAN SEÇİN


Umarım bu materyal talimatları anlamanıza yardımcı olmuştur. TAKIN ve şimdilik sahip olduğum tek şey bu!

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.

Yükleniyor...