SQL INSERT INTO SELECT iborasi. Transact-SQL - ma'lumotlarni kiritish qatorlar qismini qo'shish

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, keyin 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 mahsulotlardb; GO USE productsdb; JADVAL YARATING 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 ayni paytda NULL qiymatiga ruxsat bermaydi.

Yuqorida muhokama qilingan SELECT iborasidan tashqari, Ma'lumotlarni boshqarish tili (DML) yana uchta iborani o'z ichiga oladi: INSERT, UPDATE va DELETE. SELECT iborasi kabi, bu uchta bayonot jadvallar yoki ko'rinishlarda ishlaydi. Ushbu maqola INSERT bayonotini qamrab oladi va qolgan ikkita bayonot keyingi maqolada yoritiladi.

INSERT bayonoti jadvalga qatorlarni (yoki qator qismlarini) kiritadi. Ushbu ko'rsatmaning ikki xil shakli mavjud:

INSERT tab_name [(col_list)] DEFAULT VALUES | VALUES (( DEFAULT | NULL | ifoda ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement | execute_statement) Sintaksis qoidalari

Yo'riqnomaning birinchi shakli jadvalga bitta qatorni (yoki uning qismini) kiritish imkonini beradi. INSERT operatorining ikkinchi shakli esa jadvalga SELECT operatorining natijalar to'plamini yoki EXECUTE operatori tomonidan bajariladigan saqlangan protsedurani kiritish imkonini beradi. Saqlangan protsedura jadvalga kiritiladigan ma'lumotlarni qaytarishi kerak. INSERT iborasi bilan foydalanilganda, SELECT iborasi tegishli ustunlarning ma'lumotlar turlari mos kelsa, ma'lumotlar kiritilayotgan boshqa yoki bir xil jadvaldan qiymatlarni tanlashi mumkin.

Ikkala shakl uchun har bir kiritilgan qiymatning ma'lumotlar turi mos keladigan jadval ustunining ma'lumotlar turiga mos kelishi kerak. Barcha satr va vaqtinchalik ma'lumotlar qo'shtirnoq ichiga olinishi kerak; Raqamli qiymatlarni qo'shtirnoq ichiga olish shart emas.

Bitta qatorni kiritish

INSERT bayonotining ikkala shakli uchun ustunlar ro'yxatini aniq ko'rsatish ixtiyoriydir. Ustunlarni ro'yxatga kiritmaslik jadvaldagi barcha ustunlarni ko'rsatish bilan bir xil.

DEFAULT VALUES parametri barcha ustunlar uchun standart qiymatlarni kiritadi. TIMESTAMP ma'lumotlar turi yoki IDENTITY xususiyatiga ega ustunlar tizim tomonidan avtomatik ravishda yaratilgan qiymatlar bilan sukut bo'yicha kiritiladi. Boshqa ma'lumotlar turlarining ustunlari uchun, agar mavjud bo'lsa, tegishli nol bo'lmagan standart qiymat kiritiladi, aks holda NULL. Agar ustun null qiymatlarga ruxsat bermasa va belgilangan standart qiymatga ega bo'lmasa, INSERT bayonoti bajarilmaydi va xabar ko'rsatiladi.

Quyidagi misol SampleDb ma'lumotlar bazasidagi Xodimlar jadvaliga qatorlarni kiritadi va ma'lumotlar bazasiga oz miqdordagi ma'lumotlarni kiritish uchun INSERT iborasidan foydalanishni ko'rsatadi:

SampleDb dan foydalanish; INSERT INTO xodimlarning QIMmatlariga (34990, "Andrey", "Batonov", "d1"); Xodimlar Qimmatlariga QO'SHISH (38640, "Aleksey", "Vasin", "d3");

Yangi qatorga qiymatlarni kiritishning ikki xil usuli mavjud. Quyidagi misoldagi INSERT iborasi aniq NULL kalit so'zidan foydalanadi va tegishli ustunga NULL qiymatini kiritadi:

SampleDb dan foydalanish; INSERT INTO HOME VALUES (34991, "Andrey", "Batonov", NULL);

Jadvalning ba'zi (barcha emas) ustunlariga qiymatlarni kiritish uchun odatda ushbu ustunlarni aniq ko'rsatishingiz kerak. Belgilanmagan ustunlar NULL qiymatlarga ruxsat berishi yoki belgilangan standart qiymatga ega bo'lishi kerak.

SampleDb dan foydalanish; INSERT INTO Employee(Id, Name, Familiya) VALUES (34992, "Andrey", "Batonov");

Oldingi ikkita misol ekvivalentdir. Xodimlar jadvalida NULL qiymatlarga ruxsat beruvchi yagona ustun DepartamentNumber ustunidir va boshqa barcha ustunlar CREATE TABLE iborasidagi NOT NULL bandi bilan o'chirib qo'yilgan.

Qadriyatlar tartibi VALUES taklifi INSERT iboralari CREATE TABLE operatorida ko'rsatilgan tartibdan farq qilishi mumkin. Bunday holda, ularning tartibi ustunlar ro'yxatida tegishli ustunlar ko'rsatilgan tartibda mos kelishi kerak. Quyida asl nusxadan boshqa tartibda ma'lumotlarni kiritish misoli keltirilgan:

SampleDb dan foydalanish; INSERT INTO Xodim(Bo'lim raqami, familiyasi, identifikatori, ismi) QIYMATLAR ("d1", "Batonov", 34993, "Andrey");

Bir nechta qatorlarni kiritish

INSERT iborasining ikkinchi shakli jadvalga quyi so'rov bilan tanlangan bir yoki bir nechta qatorlarni kiritadi. Quyidagi misolda INSERT iborasining ikkinchi shakli yordamida jadvalga qatorlarni qanday kiritish ko'rsatilgan. Bunday holda, Moskvada joylashgan bo'limlarning raqamlari va nomlarini tanlash uchun so'rov bajariladi va natijada olingan natijalar to'plami ilgari yaratilgan yangi jadvalga yuklanadi.

Yuqoridagi misolda yaratilgan yangi Moskva Departamenti jadvali mavjud bo'lim jadvali bilan bir xil ustunlarga ega, Joylashuv ustunidan tashqari. INSERT bayonotidagi quyi so'rov Bo'lim jadvalidagi Joylashuv ustunining qiymati "Moskva" bo'lgan barcha qatorlarni tanlaydi, so'ngra so'rov boshida yaratilgan yangi jadvalga kiritiladi.

Quyidagi misolda INSERT operatorining ikkinchi shakli yordamida jadvalga qatorlar kiritishning boshqa usuli ko‘rsatilgan. Bunday holda, p2 loyihasida ishlaydigan "Menejer" lavozimiga ega bo'lgan barcha xodimlar uchun xodimlar soni, loyiha raqamlari va loyihaning boshlanish sanasini tanlash uchun so'rov bajariladi va natijada olingan natijalar to'plamining boshida yaratilgan yangi jadvalga yuklanadi. so'rov:

SampleDb dan foydalanish; CREATE TABLE ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR (4) NO NULL, EnterDate DATE); INSERT INTO ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Manager";

INSERT iborasi yordamida qatorlarni kiritishdan oldin, MoscowDepartment va ManagerTeam jadvallari (yuqoridagi misollarda) bo'sh edi. Agar jadval allaqachon mavjud bo'lsa va ma'lumotlarga ega qatorlarni o'z ichiga olgan bo'lsa, unga yangi qatorlar qo'shiladi.

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 GURUH BO'YICHA 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.

Ushbu bayonot jadvalga bir yoki bir nechta yozuvlarni qo'shadi (qo'shish so'rovini bajaradi).

Sintaksis

Bir nechta yozuvlarni qo'shish uchun so'rov:

INSERT INTO final_object [(maydon 1[, maydon 2[, ...]])]
TANLASH [ manba.]maydon 1[, maydon 2[, ...]
FROM jadval_ifodasi

Bitta yozuv qo'shish uchun so'rov:

INSERT INTO final_object [(maydon 1[, maydon 2[, ...]])]
QIYMATLAR ( maydon 1[, maydon 2[, ...])

INSERT INTO bayonoti quyidagi elementlardan iborat:

Qism

Tavsif

final_object

Yozuvlar qo'shiladigan jadval yoki so'rovning nomi.

maydon 1, maydon 2

Bahsdan keyin final_object- ma'lumotlar qo'shiladigan maydonlarning nomlari; bahsdan keyin manba- ma'lumotlar olinadigan maydonlarning nomlari.

tashqi_ma'lumotlar bazasi

Tashqi ma'lumotlar bazasiga yo'l. Yo'lning tavsifi uchun IN bandidagi maqolaga qarang.

manba

Yozuvlar ko'chiriladigan jadval yoki so'rovning nomi.

jadval_ifodasi

Yozuvlarni olmoqchi bo'lgan bir yoki bir nechta jadval nomlari. Bu argument alohida jadval nomi, INNER JOIN, LEFT JOIN yoki RIGHT JOIN yordamida tuzilgan natija ifodasi yoki saqlangan so‘rov bo‘lishi mumkin.

qiymat 1, qiymat 2

Yangi yozuvning muayyan maydonlariga qo'shiladigan qiymatlar. Har bir qiymat ro'yxatdagi pozitsiyasiga mos keladigan maydonga kiritiladi: qiymat 1 ga qo'shildi maydon 1 yangi kirish, qiymat 2- V maydon 2 Siz qiymatlarni vergul bilan ajratishingiz va matn maydonlarini qo'shtirnoq ("") ichiga qo'yishingiz kerak.

Eslatmalar

INSERT INTO iborasi yuqoridagi sintaksisdan foydalangan holda jadvalga bitta yozuv qo'shishi mumkin. Bunday holda, siz yozuvdagi har bir maydon uchun nom va qiymatlarni belgilaysiz. Yozuvdagi qiymatlar tayinlangan barcha maydonlarni va tegishli qiymatlarni belgilashingiz kerak. Agar siz maydon qiymatini belgilamasangiz, unga standart qiymat yoki NULL tayinlanadi. Yozuvlar jadvalning oxiriga qo'shiladi.

INSERT INTO operatori yuqorida ko'rsatilganidek, SELECT... FROM bandidan foydalanib boshqa jadval yoki so'rovdan yozuvlar to'plamini qo'shish uchun ham ishlatilishi mumkin (Bir nechta yozuvlarni qo'shish uchun so'rovlar sintaksisiga qarang). Bunday holda, SELECT bandi ko'rsatilganlarga qo'shiladigan maydonlarni belgilaydi final_object.

Manba yoki final_object jadval yoki so'rov bo'lishi mumkin. So'rov berilganda, Microsoft Access ma'lumotlar bazasi mexanizmi o'zi qaytaradigan barcha jadvallarga yozuvlarni qo'shadi.

INSERT INTO iborasidan foydalanish ixtiyoriy. Belgilangan bo'lsa, u SELECT iborasidan oldin bo'lishi kerak.

Agar maqsadli jadvalda birlamchi kalit mavjud boʻlsa, bir yoki bir nechta asosiy kalit maydonlariga qoʻshgan qiymatlaringiz yagona va farqli ekanligiga ishonch hosil qiling. NULL; aks holda yozuvlar qo'shilmaydi.

Hisoblagich maydoni bo'lgan jadvalga yozuvlar qo'shilsa va siz ularni qayta raqamlashni xohlasangiz, so'rovga Hisoblagich maydonini qo'shmang. Agar siz maydondagi asl qiymatlarni saqlamoqchi bo'lsangiz, so'rovga Hisoblagich maydonini qo'shing.

IN bandidan foydalanib, boshqa ma'lumotlar bazasidagi jadvalga yozuvlarni qo'shishingiz mumkin.

Jadval yaratish uchun SELECT... INTO iborasidan foydalanib, jadval yaratish uchun soʻrov yuboring.

Qo'shish so'rovini ishga tushirishdan oldin, qaysi yozuvlar qo'shilishini aniqlash uchun natijalardan foydalanish uchun bir xil tanlov mezonlari bilan tanlangan so'rovdan foydalaning.

Qo'shish so'rovi yozuvlarni bir yoki bir nechta jadvaldan boshqa jadvalga ko'chiradi. Bunday holda, qo'shilgan yozuvlarni o'z ichiga olgan jadvallar o'zgarishsiz qoladi.

Boshqa jadvaldagi yozuvlarni qo'shish o'rniga, VALUES bandidan foydalanib, har bir maydonning qiymatini alohida yangi yozuvga o'rnatishingiz mumkin. Agar maydonlar ro'yxati o'tkazib yuborilsa, VALUES bandi har bir jadval maydoni uchun mos qiymatlarni o'z ichiga olishi kerak; aks holda INSERT operatsiyasi bajarilmaydi. Yaratmoqchi bo'lgan har bir qo'shimcha yozuv uchun INSERT INTO iborasidan va VALUES bandidan foydalaning.