Asosiy SQL buyruqlaridagi quyi so'rovlar
SELECTdagi quyi so'rovlar
SELECT bayonotida biz quyi so'rovlarni to'rtta usulda kiritishimiz mumkin:
WHERE bandidagi holatda foydalaning
HAVING ifodasidagi shartda foydalaning
FROM bandida tanlash uchun jadval sifatida foydalaning
SELECT iborasida ustun spetsifikatsiyasi sifatida foydalaning
Keling, ushbu holatlarning ba'zilarini ko'rib chiqaylik. Misol uchun, o'rtacha narxdan yuqori bo'lgan barcha mahsulotlarni olaylik:
Istalgan mahsulotlarni olish uchun avvalo mahsulotning o'rtacha narxini olish uchun quyi so'rovni bajarishimiz kerak: Mahsulotlardan SELECT AVG(Price).
Yoki Buyurtmalar jadvalida buyurtmalari bo'lmagan mijozlar jadvalidan barcha mijozlarni tanlang:
Garchi bu holatda pastki so'rovlar yaxshi ishlayotgan bo'lsa-da, shuni ta'kidlash kerakki, bu boshqa jadvallardan ma'lumotlarni olishning eng samarali usuli emas, chunki T-SQL doirasida siz JOIN operatoridan turli jadvallardagi ma'lumotlarni birlashtirish uchun foydalanishingiz mumkin, bu haqda maqolada muhokama qilinadi. keyingi mavzu.
Ifodalar to'plamini olish
Taqqoslash operatorlarida foydalanilganda, pastki so'rovlar bitta skalyar qiymatni qaytarishi kerak. Ammo ba'zida qiymatlar to'plamini olish kerak bo'ladi. Taqqoslash operatorlarida foydalanilganda quyi so'rov qiymatlar to'plamini qaytarishi uchun uning oldida operatorlardan biri bo'lishi kerak: ALL, SOME yoki ANY.
ALL kalit so'zidan foydalanilganda, taqqoslash operatsiyasidagi shart pastki so'rov tomonidan qaytarilgan barcha qiymatlar uchun to'g'ri bo'lishi kerak. Misol uchun, narxi har qanday Apple mahsulotidan past bo'lgan barcha mahsulotlarni topamiz:
Agar bu holatda ALL kalit so'zini o'tkazib yuborsak, xatoga yo'l qo'yamiz.
Aytaylik, agar quyi so'rov vl1, val2 va val3 qiymatlarini qaytarsa, filtr sharti aslida ushbu qiymatlarni AND operatori orqali birlashtirish bilan bir xil bo'ladi:
Shu bilan birga, bunday so'rovni boshqa usulda qayta yozish ancha oson:
ANY va SOME kalit so'zlaridan foydalanilganda, taqqoslash amaliyotidagi shart pastki so'rov tomonidan qaytarilgan qiymatlardan kamida bittasi uchun to'g'ri bo'lishi kerak. Bu ikkala operator ham amalda o'xshash, shuning uchun ulardan birini ishlatish mumkin. Misol uchun, quyidagi holatda biz Apple kompaniyasining eng qimmat mahsulotidan arzonroq mahsulotlarni olamiz:
Shuni ham ta'kidlash kerakki, ushbu so'rovni quyidagi tarzda qayta yozish orqali soddalashtirish mumkin:
Ustun spetsifikatsiyasi sifatida pastki so'rov
Quyi so'rov natijasi tanlovdagi bitta ustunni ko'rsatishi mumkin. Misol uchun, keling, barcha buyurtmalarni tanlaymiz va ularga mahsulot nomi haqida ma'lumot qo'shamiz:
INSERT buyrug'idagi quyi so'rovlar
INSERT buyrug'ida pastki so'rovlar ustunlardan biriga kiritiladigan qiymatni aniqlash uchun ishlatilishi mumkin:
UPDATE buyrug'idagi quyi so'rovlar
UPDATE buyrug'ida quyi so'rovlardan foydalanish mumkin:
SET bayonotidan keyin o'rnatiladigan qiymat sifatida
WHERE bandidagi shartning bir qismi sifatida
Shunday qilib, xaridor Tom bo'lgan buyurtmalarda sotib olingan tovarlar sonini 2 taga ko'paytiraylik:
Yoki biz quyi so'rov natijasida olingan buyurtma uchun tovar narxini belgilaymiz:
DELETE buyrug'idagi quyi so'rovlar
DELETE buyrug'ida pastki so'rovlar ham shartning bir qismi sifatida qo'llaniladi. Shunday qilib, keling, Bob qilgan Galaxy S8 uchun barcha buyurtmalarni o'chirib tashlaymiz:
Do'stlaringiz bilan baham: |