SQL insert so'rovlaridagi sintaksis. SQL so'rovi INSERT INTO - ma'lumotlar bazasini ma'lumotlar bilan to'ldirish. SQL INSERT INTO SELECT, Sintaksis

sql so'rovi INSERT INTO ma'lumotlar bazasi jadvali yaratilganda mantiqiy bo'ladi. Ya'ni, jadval mavjud, nomi bor, qatorlar va ustunlar yaratilgan. jadval operator tomonidan tuziladi: , jadval operator tomonidan o'zgartiriladi.

sql so'rovi INSERT INTO - so'rovlar sintaksisi

sql so'rovi INSERT INTO quyidagi sintaksisga ega:

INSERT INTO table_name (agar kerak bo'lsa, qavslar ichiga ma'lumotlarni kiritmoqchi bo'lgan ustunlar ro'yxatini kiriting) VALUES kiritilgan ma'lumotlar1, kiritilgan ma'lumotlar2, kiritilgan ma'lumotlar3.

INSERT va INTRO o'rtasida E'tibor bermaslik variantini qo'shishingiz mumkin. Bu talab qilinmaydi. Jadvalni tahrirlashda asosiy kalitlarni himoya qilish uchun kerak. Aks holda, tahrirlash vaqtida birlamchi kalitlarning takrorlanishi sodir bo'lsa, IGNORE opsiyasi kiritilganda, tahrir qilinayotgan jadvalda asosiy kalit bilan birinchi qator o'chiriladi. Odatiy bo'lib, biz bu variantni o'tkazib yuboramiz.

LOW_PRIORITY va DELAYED ixtiyoriy variantlari mavjud. Ular ma'lumotlar bazasiga ma'lumot qo'shishning ustuvor yo'nalishlarini belgilaydilar. Birinchisi ma'lumotlar bazasining chiqarilishini kutishni belgilaydi, ikkinchisi ma'lumotni buferlashni anglatadi.

So'rovdagi qator: VALUES iborasi bilan INSERT ma'lumotlar bazasi jadvaliga bitta qator qo'shish imkonini beradi. VALUES bandi ushbu ma'lumotlarning qiymatlarini o'z ichiga oladi.

VALUES iborasi oʻrniga quyi soʻrovlar belgilanishi mumkin. INSERT pastki so'rov bilan jadvalga quyi so'rov tomonidan qaytarilgan qatorlarni qo'shadi. Ma'lumotlar bazasi serveri quyi so'rovni qayta ishlaydi va barcha qaytarilgan qatorlarni jadvalga kiritadi. Agar quyi so'rov ularni tanlamasa, server qatorlarni kiritmaydi.

  • subquery_1 - server ko'rinish bilan bir xil tarzda ishlov beradigan pastki so'rov
  • subquery_2 - bu jadvalga kiritilgan qatorlarni qaytaruvchi quyi so'rov. Ushbu quyi so'rov ro'yxati INSERT ustunlar ro'yxati bilan bir xil sonli ustunlarga ega bo'lishi kerak.

MySQL ma'lumotlar bazasida quyi so'rovlar deyarli ishlatilmaydi.

MySQL ma'lumotlar bazasida INSERT INTO sql so'roviga misollar

INSERT INTRO buyrug'i yordamida MySQL ma'lumotlar bazasiga yangi qatorlarni kiritamiz.

Birinchi misol.

Jadvalga yangi qatorlar qo'ying table_name.

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

Bu biz jadvalning table_name ustunlariga 2,145,1,name qiymatlarini kiritmoqchi ekanligimizni anglatadi. Ustunlar ko'rsatilmaganligi sababli, qiymatlar jadvalning barcha ustunlarida to'ldiriladi.

Ikkinchi misol.

Ma'lumotni jadval_nomi jadvalining kerakli (belgilangan) ustunlariga kiriting.

INSERT INTO jadval_nomi (mijoz_mijoz, mijoz_subclient, mijoz_pochta) VALUES ('ism1','subname1',' [elektron pochta himoyalangan]'), ('ism2','subname2',' [elektron pochta himoyalangan]'), ('ism3','subname3',(' [elektron pochta himoyalangan]′);

Igor Serov, ayniqsa "" sayti uchun.

Oldingi bo'limlarda biz oldindan tuzilgan jadvallardan ma'lumotlarni olish ishlarini ko'rib chiqdik. Endi jadvallarni qanday yaratish/o'chirish, yangi yozuvlarni qo'shish va eskilarini o'chirishni aniqlash vaqti keldi. Ushbu maqsadlar uchun SQL Quyidagi kabi operatorlar mavjud: YARATMOQ- jadval yaratadi; ALTER- jadval tuzilishini o'zgartiradi; DOPLASH- jadval yoki maydonni o'chiradi; KIRITMOQ- jadvalga ma'lumotlarni qo'shadi. Keling, ushbu operatorlar guruhi bilan tanishishni operatordan boshlaylik KIRITMOQ.

1. Butun satrlarni qo'shish

Nomidan ko'rinib turibdiki, operator KIRITMOQ ma'lumotlar bazasi jadvaliga qatorlar qo'shish (qo'shish) uchun ishlatiladi. Qo'shish bir necha usul bilan amalga oshirilishi mumkin:

  • - bitta to'liq qator qo'shing
  • - qatorning bir qismini qo'shish
  • - so'rov natijalarini qo'shish.

Shunday qilib, jadvalga yangi qator qo'shish uchun biz jadval nomini ko'rsatishimiz, ustun nomlarini sanab o'tishimiz va konstruktsiyadan foydalanib har bir ustun uchun qiymatni belgilashimiz kerak. INSERT INTO jadval_nomi (1-maydon, 2-maydon ...) QIYMATLAR (qiymat1, qiymat2...). Keling, bir misolni ko'rib chiqaylik.

INSERT INTO sotuvchilar (ID, Manzil, Shahar, Sotuvchi_nomi, Mamlakat) VALUES("6", "1-ko'cha", "Los-Anjeles", "Garri Monro", "AQSh")

Shuningdek, siz ustun nomlarining tartibini o'zgartirishingiz mumkin, lekin ayni paytda parametrdagi qiymatlar tartibini o'zgartirishingiz kerak. QIYMATLAR.

2. Chiziqlarning bir qismini qo'shish

Oldingi misolda, operatordan foydalanganda KIRITMOQ jadval ustunlari nomlarini aniq belgilab oldik. Ushbu sintaksisdan foydalanib, biz ba'zi ustunlarni o'tkazib yuborishimiz mumkin. Bu shuni anglatadiki, siz ba'zi ustunlar uchun qiymatlarni kiritasiz, lekin boshqalar uchun ularni taqdim etmaysiz. Masalan:

Sotuvchilar (ID, Shahar, Sotuvchi_nomi) QIYMATLARGA QO'SHISH("6", "Los-Anjeles", "Garri Monro")

Ushbu misolda biz ikkita ustun uchun qiymat ko'rsatmadik Manzil Va Mamlakat. Ba'zi ustunlarni bayonotdan chiqarib tashlashingiz mumkin INSERT INTO, agar bu jadvalni aniqlashga imkon bersa. Bunday holda, shartlardan biri bajarilishi kerak: bu ustun haqiqiy deb hisoblanadi NULL(hech qanday qiymat yo'qligi) yoki jadval ta'rifida belgilangan standart qiymat. Bu shuni anglatadiki, agar qiymat ko'rsatilmagan bo'lsa, standart qiymat ishlatiladi. Agar jadvalda qiymatlar uning satrlarida paydo bo'lishiga ruxsat bermaydigan ustun etishmayotgan bo'lsa NULL va belgilangan standart qiymatga ega bo'lmasa, DBMS xato xabarini yaratadi va qator qo'shilmaydi.

3. Tanlangan ma'lumotlarni qo'shish

Oldingi misolda biz ma'lumotlarni so'rovga qo'lda kiritish orqali jadvallarga kiritdik. Biroq, operator INSERT INTO agar biz boshqa jadvaldan ma'lumotlarni kiritmoqchi bo'lsak, bu jarayonni avtomatlashtirishga imkon beradi. Buning uchun SQLda shunday konstruktsiya mavjud INSERT INTO ... TANLASH .... Ushbu dizayn bir vaqtning o'zida bitta jadvaldan ma'lumotlarni tanlash va uni boshqasiga kiritish imkonini beradi. Faraz qilaylik, bizda boshqa stol bor Sellers_EU Evropadagi tovarlarimizni sotuvchilar ro'yxati bilan va biz ularni umumiy jadvalga qo'shishimiz kerak Sotuvchilar. Bu jadvallarning tuzilishi bir xil (ustunlar soni bir xil va nomlari bir xil), lekin ma’lumotlar boshqacha. Buning uchun quyidagi so'rovni yozishimiz mumkin:

INSERT INTO Sotuvchilar (ID, Manzil, Shahar, Sotuvchi_nomi, Mamlakat) TANLASHID, manzil, shahar, sotuvchi_nomi, sotuvchilar_EU dan mamlakat

Ichki kalitlarning qiymatlari takrorlanmasligi uchun siz e'tibor berishingiz kerak (maydon ID), aks holda xatolik yuz beradi. Operator TANLASH takliflarni ham o‘z ichiga olishi mumkin QAYERDA ma'lumotlarni filtrlash uchun. Shuni ham ta'kidlash kerakki, DBMS bayonotdagi ustunlar nomlariga e'tibor bermaydi. TANLASH, uning uchun faqat ularning joylashish tartibi muhim. Shuning uchun, birinchi ko'rsatilgan ustundagi ma'lumotlar tufayli tanlangan TANLASH, har qanday holatda jadvalning birinchi ustunida to'ldiriladi Sotuvchilar, operatordan keyin ko'rsatilgan INSERT INTO, maydon nomidan qat'iy nazar.

4. Ma'lumotlarni bir jadvaldan ikkinchisiga ko'chirish

Ko'pincha ma'lumotlar bazalari bilan ishlashda zaxiralash yoki o'zgartirish maqsadida har qanday jadvallarning nusxalarini yaratish zarurati tug'iladi. Jadvalning to'liq nusxasini yaratish uchun SQL alohida bayonot beradi TANLASH. Masalan, jadvalning nusxasini yaratishimiz kerak Sotuvchilar, so'rovni quyidagicha yozishingiz kerak bo'ladi:

Sotuvchilardan * Sellers_new INTO ni tanlang

Oldingi dizayndan farqli o'laroq INSERT INTO ... TANLASH ... Mavjud jadvalga ma'lumotlar qo'shilganda, dizayn ma'lumotlarni yangi jadvalga ko'chiradi. Bundan tashqari, birinchi konstruktsiya ma'lumotlarni import qiladi, ikkinchisi esa eksport qiladi, deb aytishingiz mumkin. Dizayndan foydalanganda TANLASH ... INTO ... FROM ... Quyidagilarni hisobga olish kerak:

  • - operatorda istalgan jumlalardan foydalanishingiz mumkin TANLASH, kabi GROUP BY Va EGA
  • - bir nechta jadvallardan ma'lumotlarni qo'shish uchun qo'shilishdan foydalanishingiz mumkin
  • - ma'lumotlar nechta jadvaldan olinganligidan qat'iy nazar, faqat bitta jadvalga qo'shilishi mumkin.

Jamoa jadvalga qatorlar qo'shadi yoki asosiy jadval ko'rinishi.

Sql INSERT buyruq sintaksisi

Buyruq sintaksisini kiritish


INSERT buyrug'ining asosiy kalit so'zlari va parametrlari
  • sxema- ruxsat identifikatori, odatda ba'zi foydalanuvchi nomiga mos keladi
  • jadval ko'rinishi- qatorlar kiritilishi kerak bo'lgan jadval nomi; agar ko'rinish belgilangan bo'lsa, satrlar ko'rinishning asosiy jadvaliga kiritiladi
  • pastki soʻrov_1- server ko'rinish bilan bir xil tarzda ishlov beradigan pastki so'rov
  • ustun- har bir kiritilgan qator uchun iboraning qiymati kiritiladigan jadval yoki ko'rinish ustuni QIYMATLAR yoki pastki so'rov; agar jadval ustunlaridan biri ushbu ro'yxatdan o'tkazib yuborilgan bo'lsa, kiritilgan qator uchun ustun qiymati jadval yaratilganda belgilangan standart ustun qiymati hisoblanadi. Agar ustunlar ro'yxati butunlay o'tkazib yuborilsa, band QIYMATLAR yoki so'rov jadvaldagi barcha ustunlar uchun qiymatlarni aniqlashi kerak
  • QIYMATLAR- jadval yoki ko'rinishga kiritiladigan qiymatlar qatorini belgilaydi; gapda ma'no aniqlanishi kerak QIYMATLAR ustunlar ro'yxatidagi har bir ustun uchun
  • pastki so'rov_2- jadvalga kiritilgan qatorlarni qaytaruvchi quyi so'rov; ushbu quyi so'rovning tanlash ro'yxati bayonot ustunlari ro'yxati bilan bir xil sonli ustunlarga ega bo'lishi kerak

Bayonot iborasi bilan QIYMATLAR jadvalga bitta qator qo'shadi. Ushbu qatorda ibora bilan belgilangan qiymatlar mavjud QIYMATLAR.
bilan bayonot pastki so'rov ibora o'rniga QIYMATLAR pastki so'rov tomonidan qaytarilgan barcha qatorlarni jadvalga qo'shadi. Server ishlov beradi pastki so'rov va har bir qaytarilgan qatorni jadvalga kiritadi. Agar quyi so'rov hech qanday qatorni tanlamasa, server jadvalga hech qanday satr kiritmaydi.
Quyi soʻrov istalgan jadval yoki koʻrinishga, shu jumladan maqsadli tasdiqlash jadvaliga kira oladi . Server jadvaldagi ustunlarning ichki joylashuvi va iboralar qiymatlari tartibi asosida yangi qatorlardagi maydonlarga qiymatlarni belgilaydi. QIYMATLAR yoki so'rovlarni tanlash ro'yxatida. Agar ustunlar ro'yxatida biron bir ustun bo'lmasa, server ularga jadval yaratilganda belgilangan standart qiymatlarni belgilaydi. Agar ushbu ustunlardan birortasi NO NULL chekloviga ega bo'lsa, server cheklov buzilganligini ko'rsatuvchi xatoni qaytaradi va INSERT iborasini bekor qiladi.
INSERT bayonoti chiqarilganda, jadvalda belgilangan har qanday INSERT triggeri yoqiladi.

INSERT INTO 1-misol

INSERT INTO bo'lim QIYMATLAR(50, "MAHSULOTLAR", "SAN-FRANSISKO");

INSERT INTO Mijozlar (shahar, cname, cnum) QIYMATLAR(“London”, “Xoffman”, 2001);

INSERT INTO 2-misol
Quyidagi buyruq komissiyalari daromadning 25% dan ortiq bo'lgan kompaniya xodimlarining ma'lumotlarini bonus jadvaliga ko'chiradi:

INSERT INTO bonus TANLASH emal, ish, sal, comm FROM emp WHERE comm > 0,25 * sal;

INSERT INTO 3-misol
Agar siz kiritishingiz kerak bo'lsa NULL-value, siz uni oddiy qiymat sifatida quyidagicha belgilashingiz kerak:

INSERT INTO Sotuvchi VALUES (1001,'Peel',NULL,12);

4-misolga kiriting
Buyruq so'rov yordamida bir jadvaldan qiymatlarni olish va ularni boshqasiga joylashtirish uchun ishlatilishi mumkin. Buning uchun jumlani almashtirish kifoya QIYMATLAR tegishli so'rovga:

INSERT INTO Londonstaff SELECT * FROM Salespeople WHERE city = 'London';

MySQL INSERT

MySQL ma'lumotlar bazasiga yangi qatorlarni kiritish uchun foydalaning INSERT buyrug'i, buyruq misollari quyida keltirilgan:
INSERT INTO 1-misol.
Jadvalga yangi qator qo'yish table_name.

INSERT INTO

INSERT INTO 2-misol.
Bizga kerak bo'lgan ustunlarga ma'lumotlar kiritilishini ko'rsatadigan jadval_nomi jadvaliga yangi qatorni kiritish.

INSERT INTO jadval_nomi VALUES('1','165','0','nom');

Ma'lumotlar bazasida MySQL Bitta buyruq yordamida bir nechta yangi qatorlarni kiritish mumkin.
INSERT INTO 3-misol.
Jadval_nomi jadvaliga bir nechta satrlar kiritish.

INSERT INTO jadval_nomi (tbl_id, chislo, chislotwo, nom) VALUES ('1','159','34','name1'), ('2','14','61','name2'), ('3' ′,'356','8','nom3');

SQL-dan foydalanib, siz ma'lumotlarni bir jadvaldan ikkinchisiga ko'chirishingiz mumkin.

INSERT INTO SELECT iborasi bitta jadvaldan ma'lumotlarni nusxalaydi va mavjud jadvalga kiritadi.

SQL INSERT INTO SELECT iborasi,

INSERT INTO SELECT iborasi bitta jadvaldan ma'lumotlarni tanlaydi va mavjud jadvalga kiritadi. Maqsadli jadvaldagi mavjud qatorlar o'zgartirilmaydi.

SQL INSERT INTO SELECT, Sintaksis

Biz barcha ustunlarni bir jadvaldan boshqasiga, mavjud jadvalga nusxalashimiz mumkin:

INSERT INTO jadval 2
dan * dan tanlang 1-jadval;

Yoki biz faqat o'zimiz xohlagan ustunlarni boshqa mavjud jadvalga nusxalashimiz mumkin:

INSERT INTO jadval 2
(ustun_nom(lar))
TANLASH ustun_nom(lar)
FROM 1-jadval;

Ma'lumotlar bazasining demo versiyasi

Ushbu qo'llanmada biz taniqli Northwind ma'lumotlar bazasidan foydalanamiz.

Quyida "Mijozlar" jadvalidan tanlov mavjud:

Foydalanuvchi IDsiMijozning ismiAloqa qiluvchi shaxsManzilshaharPochta indeksiBir mamlakat
1 Alfreds Futterkiste Mariya Anders Obere ko'chasi. 57 Berlin 12209 Germaniya
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Konstitutsiya 2222 Meksika D.F. 05021 Meksika
3 Antonio Moreno Taqueria Antonio Moreno Mataderos 2312 Meksika D.F. 05023 Meksika

Va "Yetkazib beruvchilar" jadvalidan tanlov:

SQL INSERT INTO SELECT, Misollar

"Yetkazib beruvchilar" dan "Mijozlar" ga faqat bir nechta ustunlarni nusxalash:

Faqat nemis etkazib beruvchilarini "Mijozlar" ga nusxalash.

Oxirgi yangilanish: 07/13/2017

Ma'lumotlarni qo'shish uchun quyidagi rasmiy sintaksisga ega INSERT buyrug'idan foydalaning:

jadval_nomini INSERT [(ustun_roʻyxati)] VALUES (qiymat1, qiymat2, ... qiymatN)

Avval INSERT INTO ifodasi keladi, so'ngra qavslar ichida ma'lumotlar qo'shilishi kerak bo'lgan ustunlarning vergul bilan ajratilgan ro'yxatini belgilashingiz mumkin va oxirida VALUES so'zidan keyin ustunlar uchun qo'shiladigan qiymatlar ro'yxatda keltirilgan. qavslar.

Misol uchun, quyidagi ma'lumotlar bazasi ilgari yaratilgan deylik:

MA'LUMOTLAR BAZASINI YARATING productsdb; GO USE productsdb; JADVAL YARATISH Mahsulotlar (Id INT IDENTITY PRIMARY KEY, Mahsulot nomi NVARCHAR(30) NO NULL, Ishlab chiqaruvchi NVARCHAR(20) NO NULL, ProductCount INT DEFAULT 0, Price MONEY NULL EMAS)

INSERT buyrug'i yordamida unga bitta qator qo'shamiz:

INSERT Products VALUES ("iPhone 7", "Apple", 5, 52000)

SQL Server Management Studio-da muvaffaqiyatli bajarilgandan so'ng, xabar maydonida "1 qator (lar) ta'sirlandi" degan xabar paydo bo'lishi kerak:

VALUES kalit so'zidan keyin qavs ichidagi ustunlar uchun qiymatlar e'lon qilingan tartibda o'tkazilishini hisobga olish kerak. Masalan, yuqoridagi CREATE TABLE bayonotida birinchi ustun Id ekanligini ko'rishingiz mumkin. Ammo uning uchun IDENTITY atributi ko'rsatilganligi sababli, ushbu ustunning qiymati avtomatik ravishda yaratiladi va uni o'tkazib yuborish mumkin. Ikkinchi ustun Mahsulot nomini bildiradi, shuning uchun birinchi qiymat, "iPhone 7" qatori ushbu ustunga o'tkaziladi. Ikkinchi qiymat - "Olma" qatori uchinchi ustunga o'tkaziladi Ishlab chiqaruvchi va hokazo. Ya'ni, qiymatlar ustunlarga quyidagicha uzatiladi:

    Mahsulot nomi: "iPhone 7"

    Ishlab chiqaruvchi: "Apple"

Bundan tashqari, qiymatlarni kiritishda siz qiymatlar qo'shiladigan darhol ustunlarni belgilashingiz mumkin:

INSERT INTO Mahsulotlar (mahsulot nomi, narxi, ishlab chiqaruvchi) QIYMATLAR ("iPhone 6S", 41000, "Apple")

Bu erda qiymat faqat uchta ustun uchun ko'rsatilgan. Bundan tashqari, endi qiymatlar ustunlar tartibida uzatiladi:

    Mahsulot nomi: "iPhone 6S"

    Ishlab chiqaruvchi: "Apple"

Belgilanmagan ustunlar uchun (bu holda ProductCount), DEFAULT atributi ko'rsatilgan bo'lsa, standart qiymat yoki NULL qiymat qo'shiladi. Biroq, aniqlanmagan ustunlar null bo'lishi yoki DEFAULT atributiga ega bo'lishi kerak.

Biz bir vaqtning o'zida bir nechta qatorlarni qo'shishimiz mumkin:

MAHSULOTLAR QIYMATLARIGA QO‘SHISH ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

Bunday holda, jadvalga uchta qator qo'shiladi.

Bundan tashqari, qo'shilganda, ustun DEFAULT kalit so'zidan yoki NULL qiymatidan foydalangan holda standart qiymatga ega bo'lishi kerakligini belgilashimiz mumkin:

INSERT INTO Mahsulotlar (mahsulot nomi, ishlab chiqaruvchi, mahsulot soni, narxi) QIYMATLAR ("Mi6", "Xiaomi", DEFAULT, 28000)

Bunday holda, ProductCount ustuni uchun standart qiymatdan foydalaniladi (agar u o'rnatilgan bo'lsa, agar u o'rnatilmagan bo'lsa, NULL).

Agar barcha ustunlar standart qiymatni belgilaydigan DEFAULT atributiga ega bo'lsa yoki null bo'lmasa, barcha ustunlar uchun standart qiymatlarni kiritishingiz mumkin:

MAHSULOTLARGA KO'PLAMA QIYMATLARGA QO'SHIRING

Ammo agar biz Mahsulotlar jadvalini olsak, bunday buyruq xato bilan bajarilmaydi, chunki bir nechta maydonlar DEFAULT atributiga ega emas va bir vaqtning o'zida NULL qiymatiga ruxsat bermaydi.