SQL INSERT INTO SELECT iborasi. SQL INSERT INTO SELECT iborasi Butun qatorlarni qo'shish

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 maqolada INSERT bayonoti muhokama qilinadi, qolgan ikkita bayonot esa keyingi maqolada muhokama qilinadi.

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 qo'shib, ma'lumotlar bazasiga kichik hajmdagi ma'lumotlarni kiritish uchun INSERT iborasidan foydalanishni namoyish etadi:

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'chirilgan.

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'plamini loyiha boshida yaratilgan yangi jadvalga yuklaydi. 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 KIRISH("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.

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.

Hammaga salom! Qanday qilib buni amalga oshirishingiz mumkin, bu maqolada muhokama qilinadi jadvalga ma'lumotlarni qo'shish Microsoft SQL Serverda, agar siz T-SQL tili bilan hech bo'lmaganda bir oz 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 ishlatilishi 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 T-SQL tilini biroz bilishni anglatadi, shuning uchun sizga biror narsa tushunarsiz bo'lsa, men quyidagi materiallar bilan tanishib chiqishingizni tavsiya qilaman:

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 biz 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 SELECT bayonotini yozdim va ularni GO bayonoti bilan ajratdim.

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.


Ushbu misolda biz TestTable jadvalidan ma'lumotlarni qaytaradigan SELECT so'rovini yozdik, lekin hammasi emas, faqat ID 2 dan katta bo'lganlar. Va natija xuddi shu TestTable jadvaliga kiritildi.

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 yozamiz, faqat u qo'shiladigan ustunlarni ro'yxatga kiritmaydi.

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


Bu holda, Test jadvalidagi birinchi ustun mahsulot nomi, ikkinchisi esa Narx ekanligiga ishonchimiz komil, shuning uchun biz buni 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 yozuvlarni 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 qilamanki, ushbu material sizga ko'rsatmalarni tushunishga yordam berdi. INSERT INTO, va hozircha menda bor narsa shu!