T-SQL asoslari. DML. Transact-SQL - ma'lumotlarni kiritish ma'lumotlar bazasi demo versiyasi

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

Ikkita bor turli yo'llar bilan qiymatlarni kiritish yangi qator. 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 yuboriladi va natijada olingan natijalar to'plamiga yuklanadi. yangi stol, ilgari yaratilgan.

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.

Hammaga salom! Qanday qilib buni amalga oshirishingiz mumkin, bu maqolada muhokama qilinadi jadvalga ma'lumotlarni qo'shish Microsoft-da SQL Server Agar siz T-SQL tili bilan hech bo'lmaganda ozgina tanish bo'lsangiz, endi biz INSERT iborasi, shuningdek, jadvalga ma'lumotlarni qo'shish uchun qanday foydalanish haqida gaplashamiz.

Keling, odatdagidek, bir oz nazariya bilan boshlaylik.

T-SQL da INSERT bayonoti

KIRITMOQ T-SQL ko'rsatmasi bo'lib, jadvalga ma'lumotlarni qo'shish uchun mo'ljallangan, ya'ni. yangi yozuvlarni yaratish. Ushbu ko'rsatma jadvalga bitta qator qo'shish va ma'lumotlarni ommaviy kiritish uchun ham foydalanish mumkin. INSERT bayonoti ma'lumotlarni kiritish uchun ruxsat talab qiladi ( KIRITMOQ) maqsadli jadvalga.

Qo'shilishi kerak bo'lgan ma'lumotlarga INSERT iborasidan foydalanishning bir necha yo'li mavjud:

  • Kiritish uchun maxsus qiymatlarni ro'yxatga olish;
  • Ma'lumotlar to'plamini SELECT so'rovi sifatida ko'rsatish;
  • Jadval ma'lumotlarini qaytaruvchi protsedura chaqiruvi ko'rinishidagi ma'lumotlar to'plamini ko'rsatish.

Soddalashtirilgan sintaksis

INSERT [jadval] ( ustunlar ro'yxati ...) QIYMATLAR ( qadriyatlar ro'yxati, … ) Yoki SELECT namuna so'rovi Yoki IJRO QILING tartib

  • INSERT INTO — jadvalga maʼlumotlarni qoʻshish buyrugʻi;
  • Jadval - yangi yozuvlar kiritmoqchi bo'lgan maqsadli jadvalning nomi;
  • Ustunlar ro'yxati - vergul bilan ajratilgan jadvalning ma'lumotlar kiritiladigan ustun nomlari ro'yxati;
  • VALUES - jadval qiymati konstruktori bo'lib, uning yordamida biz jadvalga kiritadigan qiymatlarni belgilaymiz;
  • Qiymatlar ro'yxati - vergul bilan ajratilgan kiritiladigan qiymatlar. Ular ustunlar ro'yxatida ustunlar paydo bo'ladigan tartibda ro'yxatga olinadi;
  • SELECT — jadvalga kiritish uchun maʼlumotlarni tanlash soʻrovidir. Natija to'plami, so'rov qaytaradigan ustunlar ro'yxatiga mos kelishi kerak;
  • EXECUTE - jadvalga kiritish uchun ma'lumotlarni olish uchun protsedura chaqiruvi. Saqlangan protsedura qaytaradigan natija ustunlar ro'yxatiga mos kelishi kerak.

INSERT INTO iborasining soddalashtirilgan sintaksisi taxminan shunday ko'rinadi; ko'p hollarda jadvallarga yangi yozuvlar qo'shiladi.

Ma'lumotlarni kiritadigan ustunlar ro'yxatini yozish shart emas, bu holda ularning tartibi jadvaldagi ustunlarning haqiqiy tartibidan kelib chiqqan holda aniqlanadi. Tanlash uchun so'rovni kiritish yoki yozish uchun qiymatlarni belgilashda ushbu tartibni eslab qolishingiz kerak. Shaxsan men siz hali ham ma'lumotlarni qo'shishni rejalashtirgan ustunlar ro'yxatini ko'rsatishingizni tavsiya qilaman.

Shuni ham yodda tutish kerakki, ustunlar ro'yxati va qiymatlar ro'yxati mos ravishda talab qilinadigan ustunlarni o'z ichiga olishi kerak; bular NULL qiymatini o'z ichiga olmaydi. Agar siz ularni ko'rsatmasangiz va ustun standart qiymatga ega bo'lmasa, xatolik yuz beradi.

Shuni ham ta'kidlashni istardimki, siz kiritadigan qiymatlarning ma'lumotlar turi ushbu qiymat kiritiladigan ustunning ma'lumotlar turiga mos kelishi yoki hech bo'lmaganda yashirin konvertatsiya qilishni qo'llab-quvvatlashi kerak. Lekin men sizga ma'lumotlar turini nazorat qilishni maslahat beraman ( format) qiymatlar, ham qiymatlar ro'yxatida, ham SELECT so'rovida.

Nazariya yetarli, keling, amaliyotga o‘tamiz.

Dastlabki ma'lumotlar

Jadvalga ma'lumotlar qo'shish uchun bizga jadvalning o'zi kerak, shuning uchun uni yaratamiz va unga yozuvlar qo'shishga harakat qilamiz.

Eslatma! Barcha misollar Microsoft SQL Server 2016 Express da ishga tushiriladi.

JADVAL YARATISH Test jadvali (IDENTITY(1,1) NULL EMAS, (100) NULL EMAS, NULL EMAS)

Bizning sinov jadvalimiz narxlari ko'rsatilgan mahsulotlar ro'yxatini o'z ichiga oladi.

Shuningdek, misollarda jadvalga ma'lumotlarni qo'shish uchun jadval qiymatini qaytaradigan protseduradan foydalanamiz, shuning uchun uni ham yarataylik.

TARTIBIYI YARATING. TestProtsedurasini BAŞLATIRIB TANGLASH Mahsulot nomi, Test jadvali oxiridan boshlab narxi.

Masalan, u yangi yaratilgan TestTable jadvalidan ma'lumotlarni qaytaradi.

Eslatma!

Siz tushunganingizdek, ushbu materialni o'qish ma'lum ma'lumotlarga ega bo'lishni anglatadi T-SQL tili, shuning uchun sizga biror narsa tushunarsiz bo'lsa, men sizga quyidagi materiallar bilan tanishishingizni maslahat beraman:

1-misol – Jadval qiymati konstruktori yordamida jadvalga yangi yozuv qo‘shish

Avval bitta yozuvni qo'shishga harakat qilaylik va darhol natijani ko'rib chiqaylik, ya'ni. Keling, namuna uchun so'rov yozaylik.

Sinov jadvaliga (Mahsulot nomi, narxi) QIYMATLARGA QO'SHISH ("Kompyuter", 100) Test jadvalidan * TANLANGAN O'TISH

Ko'ryapsizmi, jadval nomidan keyin biz ma'lumotlarni qo'shadigan ustunlar nomlarini vergul bilan ajratdik, keyin kalit so'zni ko'rsatdik. QIYMATLAR Qavslar ichida, shuningdek, bir xil tartibda, vergul bilan ajratilgan holda, biz kiritmoqchi bo'lgan qiymatlarni yozdik.

INSERT bayonotidan keyin men yozdim SELECT bayonoti va ularni GO jamoasi ajratdi.

Keling, bir nechta qatorlarni qo'shishimiz kerakligini tasavvur qilaylik. Buning uchun quyidagi so'rovni yozamiz.

Sinov jadvaliga (Mahsulot nomi, narxi) QIYMATLARNI QO'YISH ("Kompyuter", 100), ("Klaviatura", 20), ("Monitor", 50) TANLASH * Test jadvalidan


2-misol - SELECT so'rovi yordamida jadvalga yangi qatorlar qo'shish

Ko'pincha jadvalga juda ko'p ma'lumotlarni qo'shish kerak bo'ladi, masalan, tanlangan so'rov asosida, ya'ni. TANLASH. Buning uchun VALUES o'rniga so'rovni ko'rsatish kifoya.

Sinov jadvaliga kiriting (mahsulot nomi, narxi) Mahsulot nomi, sinov jadvalidan narxini tanlang.


IN bu misolda yozdik SELECT so'rovi, bu TestTable jadvalidan ma'lumotlarni qaytaradi, lekin hammasi emas, faqat identifikatori 2 dan katta bo'lganlar. Va natija bir xil TestTable jadvaliga kiritilgan.

Jadvalga ustunlar ro'yxatini ko'rsatmasdan qanday qilib yozuvlar qo'shish mumkinligiga misol sifatida keling, yuqoridagi so'rov bilan aynan bir xil ishni bajaradigan boshqa ma'lumotlarni kiritish so'rovini yozaylik, faqat u qo'shiladigan ustunlar ro'yxatini ko'rsatmaydi.

TestJadvaliga QO'SHING. Mahsulot nomini tanlang, Test jadvalidan narxi. Id > 2 O'TING.


Bu holda, biz TestTable jadvalida birinchi ustun mahsulot nomi, ikkinchisi esa Narx ekanligiga ishonchimiz komil, shuning uchun biz uni shunday yozishimiz mumkin. Lekin, yana, amalda ustunlar ro'yxatini ko'rsatish yaxshiroqdir.

Agar e'tibor bergan bo'lsangiz, barcha misollarda Id ustunini ko'rsatmadim, lekin bizda bor, hech qanday xatolik yuz bermadi, chunki bu ustun IDENTITY xususiyatiga ega, u avtomatik ravishda identifikatorlarni hosil qiladi, shuning uchun bunday ustunga ma'lumotlarni kiritishni oddiygina qilib bo'lmaydi.

3-misol - Saqlangan protsedura yordamida jadvalga yangi yozuvlar qo'shish

Endi saqlangan protsedura bizga qaytib keladigan ma'lumotlarni jadvalga kiritamiz. Bu erda ma'no bir xil, VALUES o'rniga va so'rov o'rniga biz protsedura chaqiruvini ko'rsatamiz. Lekin siz tushunganingizdek, protsedura tomonidan qaytarilgan ustunlar tartibi va soni kiritilishi kerak bo'lgan ustunlar ro'yxatiga to'liq mos kelishi kerak ( ustunlar ro'yxati ko'rsatilmagan bo'lsa ham).

Sinov jadvaliga (Mahsulot nomi, narxi) QO'SHING


Umid, bu material ko'rsatmalarni tushunishingizga yordam berdi INSERT INTO, va hozircha menda bor narsa shu!

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. Foydalanish bu sintaksis, 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.

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:

Qavslar ichidagi ustunlar uchun qiymatlar keyinroq ekanligini hisobga olish kerak kalit so'z VALUES ular e'lon qilingan tartibda o'tkaziladi. 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.

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.