SQL Murakkab SELECT va INSERT ifodalar (SELECT INTO, INSERT INTO SELECT)

SELECT INTO

SELECT INTO ifodasi biror jadvaldan ma’lumotlarni yangi jadvalga nusxalab ko’chirish uchun ishlatiladi. Sintaksisi quyidagicha:

Barcha ustunlarni nusxalash uchun:

SELECT *INTO yangi_jadval [IN boshqa_malumotlar_bazasi] FROM eski_jadval WHERE shartli_ifoda;

Ba’zi ustunlarni nusxalash uchun

SELECT ustun1, ustun2, ustun3, ... INTO yangi_jadval [IN boshqa_malumotlar_bazasi] 
FROM eski_jadval WHERE shartli_ifoda;
Eslatma: Yangi jadval ustunlari eski ustunlarning nomlari ostida yaratiladi. Agar yangi nom berish zarurati bo’lsa AS kalit so’zi bilan yangi nomlarni berishingiz mumkin.

Keling endi SELECT INTO yordamida yozilgan so’rovlarga misollar ko’rib chiqamiz.

Quyidagi ifoda Xaridorlar jadvalidagi ma’lumotlarni yangi jadvalga to’liq ko’chiradi:

SELECT * INTO XaridorlarYangiJadval FROM XaridorlarEskiJadval;

Quyidagi ifoda esa Xaridorlar jadvalining ba’zi ustunidagi ma’lumotlarni nusxalaydi:

SELECT XaridorId, XaridorIsmi, Websayt INTO XaridorlarYangiJadval FROM XaridorlarEskiJadval;

Endi yangi jadvalni joriy ma’lumotlar bazasida emas, boshqa ma’lumotlar bazasida (MBazasi1.mdb) yaratamiz.

SELECT XaridorId, XaridorIsmi, Websayt INTO XaridorlarYangiJadval IN ‘MBazasi2.mdb’ FROM XaridorlarEskiJadval;

Keling, bir emas bir nechta jadvallardan bog’lanish orqali olingan ma’lumotlarni yangi jadvalga yozamiz.

SELECT Xaridorlar.XaridorId, Xaridorlar.XaridorIsmi, Maqolalar.MaqolaId INTO YangiJadval1 FROM Xaridorlar
LEFT JOIN Maqolalar ON Xaridorlar.XaridorId = Maqolalar.XaridorId;

INSERT INTO SELECT

INSERT INTO SELECT ifodasi bir jadvaldan ma’lumotlarni tanlab olib, mavjud biror jadvalga qo’shish uchun foydalaniladi. Sharti shuki, ikkala jadvaldagi ustunlarning ma’lumotlar turlari bir xilda mos kelishi kerak. Sintaksisi quyidagicha:

Barcha ustunlarni qo’shish uchun:

INSERT INTO jadval2 SELECT * FROM jadval1 WHERE shartli_ifoda;

Faqat ba’zi ustunlardagi ma’lumotlarni qo’shish uchun:

INSERT INTO jadval2 (ustun1, ustun2, ustun3, ...) SELECT ustun1, ustun2, ustun3, ... FROM jadval1 WHERE shartli_ifoda;

Quyidagi so’rov INSERT INTO SELECT yordamida yozilgan so’rovlarga misol bo’la oladi. Unda Foydalanuvchilar jadvalidagi qatorlar Xaridorlar jadvaliga ikkita ustun bo’yicha qo’shiladi.

INSERT INTO Xaridorlar (XaridorIsmi, Websayt) SELECT Ismi, Websayt FROM Foydalanuchilar;