Murakkab SELECT va INSERT ifodalar (SELECT INTO, INSERT INTO SELECT) — bir so’rov natijasini boshqa jadvalga ko’chirish yoki nusxa yaratish vositalari. Zaxira nusxa olish, ma’lumotni bir jadvaldan boshqasiga uzatish yoki filtrlangan natijadan yangi jadval yaratish — bularning bari shu ifodalar orqali bajariladi.
SELECT INTO — so’rov natijasidan yangi jadval yaratadi. INSERT INTO SELECT — so’rov natijasini mavjud jadvalga qo’shadi.
Boshlang’ich jadval
Quyidagi foydalanuvchilar jadvali bilan ishlaymiz:
| id | ism | shahar |
|---|---|---|
| 1 | Farrux | Toshkent |
| 2 | Master Sherkulov | Toshkent |
| 3 | Aziz | Samarqand |
SELECT INTO — yangi jadval yaratish
SELECT INTO so’rov natijasidan yangi jadval yaratadi. Masalan, faqat Toshkentdagilardan yangi jadval:
SELECT ism, shahar
INTO toshkent_foydalanuvchilar
FROM foydalanuvchilar
WHERE shahar = 'Toshkent';
Natijada toshkent_foydalanuvchilar nomli yangi jadval yaratildi:
| ism | shahar |
|---|---|
| Farrux | Toshkent |
| Master Sherkulov | Toshkent |
SELECT ... INTO yangi_jadval — so’rov natijasini yangi jadvalga saqladi. Bu zaxira nusxa olish yoki ma’lumotni ajratishda foydali.
INSERT INTO SELECT — mavjud jadvalga qo’shish
INSERT INTO SELECT so’rov natijasini mavjud jadvalga qo’shadi. Faraz qilaylik, arxiv jadvali allaqachon bor:
INSERT INTO arxiv (ism, shahar)
SELECT ism, shahar
FROM foydalanuvchilar
WHERE shahar = 'Samarqand';
Bu so’rov Samarqanddagilarni arxiv jadvaliga qo’shdi:
| ism | shahar |
|---|---|
| Aziz | Samarqand |
INSERT INTO ... SELECT — bir jadvaldan olingan qatorlarni boshqasiga ko’chiradi. SELECT INTO dan farqi: bu yerda jadval oldindan mavjud bo’lishi kerak.
Ikki ifodani solishtirish
Ikki ifodaning farqini jadvalda ko’ramiz:
| Ifoda | Jadval | Vazifasi |
|---|---|---|
SELECT INTO |
yangi yaratadi | natijadan yangi jadval |
INSERT INTO SELECT |
mavjud bo’lishi kerak | natijani mavjudga qo’shadi |
Amaliy qo’llanish
Bu ifodalar real vazifalarda ishlatiladi: SELECT INTO — jadvalning tez zaxira nusxasini olishda, INSERT INTO SELECT — eskirgan yozuvlarni arxiv jadvaliga ko’chirishda. Ikkovi ham katta hajmdagi ma’lumotni bir qatorda samarali ko’chiradi — buni qo’lda qilish mumkin emas.
Xulosa
Bu bo’limda SELECT INTO bilan natijadan yangi jadval yaratishni, INSERT INTO SELECT bilan natijani mavjud jadvalga qo’shishni va ularning farqini ko’rib chiqdik. Bu ifodalar ma’lumotni ko’chirish va zaxiralashning kuchli vositasidir. Keyingi darsda CASE va NULL ifodalariga o’tamiz.