SQL so'rovlar tili. SQL bayonlari bilan tanishish; IN, BETWEEN, LIKE iboralari yordamida SELECT buyrug'i yordamida Accessda eng oddiy SQL so'rovlarini yaratish Access va SQL ma'lumotlar bazalariga misollar


Microsoft Access SQL va ANSI SQL solishtirish Microsoft Access SQL asosan ANSI-89 (1-daraja) ga mos keladi, ba'zi ANSI SQL funksiyalari Microsoft Access SQL da ishlatilmaydi Microsoft Access SQL ajratilgan so'zlar va ANSI SQL tomonidan qo'llab-quvvatlanmaydigan xususiyatlardan foydalanadi Access 2000 (MS Jet) 4.0) tilni ANSI SQL-92 standartiga yaqinlashtiradigan qo'shilgan kengaytmalar - rejim faqat Jet uchun MS OLE DB Provayderidan foydalanganda mavjud.


SELECT buyruqlar sintaksisi (Microsoft Access) SELECT [predikat] (* | jadval. * | [Jadval.] Maydon_1 [, [jadval.] Maydon_2 [, ...]]) FROM ifodasi [, ...] FROM bandi SELECT roʻyxati FROM maydonlari ifodasi Ifoda ma'lumotlarni olish uchun bir yoki bir nechta jadvallarni belgilaydigan ifodadir. Bu ifoda alohida jadvalning nomi, saqlangan so‘rovning nomi yoki INNER JOIN, LEFT JOIN yoki RIGHT JOIN operatsiyalarining natijasi bo‘lishi mumkin. ICHKI JOIN, LEFT JOIN O‘NG QO‘SHILMA.


SELECT bayonoti argumentlari Predikat (ALL, DISTINCT, DISTINCTROW yoki TOP) tanlash mezonlaridan biridir. Predikatlar qaytarilgan yozuvlar sonini cheklash uchun ishlatiladi. Agar ular yo'q bo'lsa, ALL predikati sukut bo'yicha ishlatiladi (SQL bayonotida ko'rsatilgan shartlarga mos keladigan barcha yozuvlarni tanlaydi) SQL DISTINCT - tanlangan maydonlarda takroriy qiymatlarni o'z ichiga olgan yozuvlarni istisno qiladi. DISTINCTROW - alohida takrorlanadigan maydonlar o'rniga butunlay takrorlanuvchi yozuvlarga asoslangan ma'lumotlarni o'tkazib yuboradi. Agar so'rovda faqat bitta jadval yoki barcha jadvallarning barcha maydonlari bo'lsa, DISTINCTROW predikati e'tiborga olinmaydi. TOP n - ORDER BY bandi yordamida tasvirlangan diapazonning boshida yoki oxirida belgilangan miqdordagi yozuvlarni qaytaradi. SELECT]] 5 ta eng koʻp boʻlimlar jadvalidan: TOP 5 ta xodimni TANlang. [Boʻlim kodi], Sanoq (xodim. nomi) AS. Xodimlar GURUHIGA BOʻYICHA. [Boʻlim kodi] TARTIB BOʻYICHA TARTIB (xodim nomi) DESC;


SELECT bayonoti argumentlari jadvali - bu yozuvlar olinadigan jadvalning nomi. EGA KIRISH OPSIYASI BILAN - so'rov egasiga mos keladigan foydalanuvchi ruxsatlarini berish uchun xavfsiz ishchi guruhi bilan ko'p foydalanuvchili muhitda foydalaniladi. maydon_1, maydon_2 - ma'lumotlar tanlanishi kerak bo'lgan maydonlarning nomlari. Agar siz bir nechta maydonlarni qo'shsangiz, ular ko'rsatilgan tartibda olinadi. Alias_1, Alias_2 - bu jadvaldagi asl ustun nomlari o'rniga ustun sarlavhalari bo'ladigan nomlar. Ifoda - tanlangan ma'lumotlarni o'z ichiga olgan bir yoki bir nechta jadvallarning nomlari Tashqi ma'lumotlar bazasi - agar ular joriy ma'lumotlar bazasida bo'lmasa, ifoda argumenti yordamida ko'rsatilgan jadvallarni o'z ichiga olgan ma'lumotlar bazasi nomi. SELECT xodimi, to'liq ismi, [ish haqi] * Xodimdan 0,5 AS Bonus; O'rtacha (employee.report) xodimdan O'rtacha_port ASAN SELECT;


Bir nechta jadvallarni birgalikda qayta ishlash SELECT xodim.name, mavzu. [Mavzu nomi qisqa] FROM xodim INNER JOIN (mavzu INNER JOIN [mavzularga egalik] ON mavzu. [Mavzu kodi] = [sub'ektlarga egalik]. [Intizom kodi]) ON staff.code = [elementlarga egalik] [xodimlar kodi];




O'rtasida ... Va 1 ifoda 2 VA 3 ifoda o'rtasida (Microsoft Access SQL da 2 ifoda 3 ifodadan katta bo'lishi mumkin, lekin ANSI SQLda emas). xodim.ism, xodim.report FROM xodim QAYERDAN SELECT ((((xodim.report) 1000 dan 2000 gacha)); So'rov: xodim.ism, xodim.report FROM xodim QAYERDAN SELECT ((((employee.report) 2000 dan 1000 gacha)); xato bermaydi va bir xil javob beradi xodim.ismi, xodim.report FROM xodim QAYERDA (((employee.report) 15000)); xodim.ism, xodim.report FROM xodim QAYERDAN SELECT ((((xodim.report) 1000 dan 2000 gacha emas));


Naqshli belgilar Like predikati bilan turli naqsh belgilaridan foydalaniladi. MS Access SQL ANSI SQL joker belgisi bir belgi? _ (pastki chiziq) belgilar guruhi *% belgilar roʻyxatida bitta belgi [char-list] belgilar roʻyxatida yoʻq bitta belgi yetishmayapti [! char_list] yoʻq Oxirgi ikkita xususiyat faqat Access 2000 da ANSI SQL-92 rejimi ANSI joker belgilaridan foydalanishi mumkin. Bitta so‘rovda belgilarni aralashtirib bo‘lmaydi. SELECT xodimi.FROM xodimi WHERE (((xodim.Full ismi) “D *” kabi));


GROUP BY SELECT bandi Fields FROM jadvalining WHERE tanlash sharti bunda guruhlash Maydonlar yozuvlarni guruhlash uchun foydalaniladigan maydonlarning nomlari (10 tagacha). Guruhlanadigan maydonlar argumentidagi maydon nomlarining tartibi ushbu maydonlarning har biri uchun guruhlash darajasini belgilaydi. Yozuvlarni guruhlashdan chiqarib tashlash uchun WHERE bandidan va guruhlashdan keyin yozuvlarga filtr qo‘llash uchun HAVING bandidan foydalaning. HAVING GROUP BY bandidan foydalanilganda, SELECT iborasining maydonlar ro'yxatidagi barcha maydonlar GROUP BY bandiga kiritilishi yoki SQL agregat funktsiyasi uchun argument sifatida ishlatilishi kerak. 5 dan ortiq xodimi bo'lgan bo'limlar: Xodimni [Bo'lim kodi], Hisobni (Xodimning to'liq ismi) AS [Raqam_Xodimlar] BO'LGAN Xodimlar guruhidan [Bo'lim kodi] BO'LGAN (((Son (xodimning to'liq ismi))> 5 )); 5));">




Ichki so'rov. Predikat mavjud. Xodimni TANISH, (Xodim) AS Raqam_Sertifikat_Ish FROM KERAK (((Mavjud (Tanlash DISTINCT Xodim FROM Xodim INNER JOIN Ex ON Ishchi = Nusxa Xodim)) False)) xodim GROUPY; False)) GROUP BY BY xodimlar; "> False)) GROUP BY BY xodimlar;"> False)) GROUP BY BY ishchi; "title =" (! LANG: Subquery. Predikat mavjud. SELECT xodimi kompaniya, Count (Xodim xodimi) AS Number_Cattest_ Employee FROM Employee WHERE (((Mavjud (SELECT DISTINCT Employee Company, Employee Employee FROM Xodim INNER JOIN Copy ON Employee = Copy Employee)) False)) GROUP BY Company; Employe"> title="Ichki so'rov. Predikat mavjud. Xodimni TANISH, (Xodim) AS Raqam_Sertifikat_Ish FROM KERAK (((Mavjud (Tanlash DISTINCT Xodim FROM Xodim INNER JOIN Ex ON Ishchi = Nusxa Xodim)) False)) xodim GROUPY;"> !}








QBE Query Builder yordamida quyi soʻrovni yaratish Agar siz maydon shartlarini aniqlash uchun quyi soʻrovdan foydalanayotgan boʻlsangiz, ushbu maydon ustunidagi Kriteriyalar qatoridagi katakka SELECT iborasini kiriting. SELECT iborasi qavs ichiga olinishi kerak.








Yozuvlar o'chirilmoqda. SQL so'rovi (hosil qilingan) DISTINCTROW student.FULLNAME FROM student WHERE (((student.FULLNAME) = "Burlak GN"));


DELETE bayonoti O'chirish so'rovi faqat belgilangan maydonlarning mazmunini emas, balki butun yozuvni o'chiradi. Muayyan maydon uchun ma'lumotlarni o'chirish uchun mavjud qiymatlarni Null qiymatlari bilan almashtiradigan yozuvni yangilash so'rovini yarating. Qidiruv mezonlari ko'rsatilmagan o'chirish so'rovi jadvaldagi barcha yozuvlarni o'chirib tashlaydi. DROP buyrug'idan farqli o'laroq, jadval tuzilishi va barcha xususiyatlar saqlanib qoladi.


Yozuvlar o'chirilmoqda. SQL so'rovi So'rovi: DELETE * FROM student WHERE student.Full name = "Burlak GN"; xuddi shunday natija beradi.



















35





41



MS Access DBMS ilovasi jadvallar va massivlarga biriktirilgan ma'lumotlar bazalarini yaratish va saqlash uchun to'liq huquqli yordamchi hisoblanadi. Agar ma'lumotlar bazasi juda katta bo'lsa, kerakli qiymatlarni tezda topish qiyin.

Shuning uchun Accessda so'rovlar deb nomlangan xususiyat mavjud. Keling, nima ekanligini, qanday ishlashini, qanday xususiyatlarga ega ekanligini ko'rib chiqaylik.

Microsoft Access-da so'rovlarni yaratish

Access-da so'rovlarni qanday yaratishni tushunish uchun siz DBMS bilan ishlash asoslarini bilishingiz kerak.

Ushbu protsedurani bajarishning ikki yo'li mavjud:

  • So'rov konstruktori.
  • So'rov ustasi.

Birinchi usul barcha mavjud so'rovlardan istalganini qo'lda rejimda yaratishga imkon beradi, lekin foydalanuvchining Access ilovasi bilan ishlash tajribasiga ega bo'lgan kichik ogohlantirish bilan. Bundan tashqari, u hech bo'lmaganda asosiy vazifalarini tushunishi kerak. Ikkinchi usulga kelsak, uni batafsilroq ko'rib chiqish kerak.

Yangi boshlanuvchilar uchun oson yo'l

Bilimdon odam sichqonchani bir necha marta bosish orqali foydalanuvchi so'rovni bajarishi kerak bo'lgan komponentlarni tanlaydi va keyin to'plangan kalit qiymatlarga muvofiq tezda ro'yxatga olish kitobini shakllantiradi. Agar bu ma'lumotlar bazasi bilan birinchi tanishish bo'lsa va foydalanuvchi Accessda so'rovlarni qanday yaratish haqida tasavvurga ega bo'lmasa, u holda Wizard dasturi tanlanadi.

Ushbu rejimda siz quyidagi so'rov turlari bilan tanishishingiz va tushunishingiz mumkin:

  • Oddiy.
  • Kesib o'tish.
  • Bo'ysunuvchilarsiz yozuvlar.
  • Ikki nusxadagi yozuvlar.

Ushbu tanlov sehrgar bilan ishlashning birinchi bosqichida allaqachon qilingan. Va kelajakda, aniq ko'rsatmalarga rioya qilgan holda, hatto tajribasiz foydalanuvchi ham so'rovni osongina yaratishi mumkin. Keling, uning navlari bilan tanishaylik.

Oddiy so'rov

Ushbu elektron jadval vositasi foydalanuvchi tomonidan belgilangan maydonlardan kerakli ma'lumotlarni to'playdi. Nomidan ko'rinib turibdiki, bu yangi boshlanuvchilar uchun eng mashhur so'rov turi. Uning qulayligi shundaki, bunday tartib yangi tabda ochiladi. Shuning uchun, Access 2010 da so'rovni qanday yaratish kerakligi haqidagi savolga javob sehrgarning birinchi menyusi ochilgandan so'ng aniq bo'ladi.

Oʻzaro soʻrov

Ushbu turdagi namuna olish ancha murakkab. Ushbu rejimda "Sehrgar" yordamida Accessda o'zaro so'rovni qanday yaratishni aniqlash uchun birinchi oynada ushbu funktsiyani bosishingiz kerak.

Ekranda jadval paydo bo'ladi, unda siz asl nusxada joylashgan uchta ustunni tanlashingiz mumkin.

Qolgan tanlanmagan maydonlardan biri so'rovlar jadvalining sarlavhalari sifatida ishlatilishi mumkin. Protseduraning uchinchi bosqichida (kesishma) funktsiyaning o'zgaruvchanligi (o'rtacha, yig'indi, birinchi, oxirgi) bilan boshqa qiymat tanlanadi.

Fotosuratda o'zaro so'rov yaratilganligi va belgilangan parametrlarga muvofiq kerakli harakatlar bajarilganligi ko'rsatilgan.

Ikki nusxadagi yozuvlar

Nomidan ko'rinib turibdiki, ushbu so'rovning asosiy maqsadi jadvaldagi barcha bir xil qatorlarni belgilangan parametrlar bo'yicha tanlashdir. Bu shunday ko'rinadi:

Bundan tashqari, bir vaqtning o'zida bir nechta qatorlarni moslashtirish uchun qo'shimcha maydonlar tanlovi mavjud.

Ikki nusxadagi yozuvlarni tanlash uchun siz so'rovlar ro'yxatini kengaytirishingiz va u erda yangi papka yaratishingiz kerak. Keyin, "Yangi so'rov" oynasida "Ikki nusxadagi yozuvlarni qidirish" qatorini tanlang. Keyinchalik, siz ustaning ko'rsatmalariga amal qilishingiz kerak.

Bo'ysunuvchilarsiz yozuvlar

Bu "Master - qulsiz yozuvlar" rejimida mavjud so'rovning oxirgi turi.

Bunday holda, faqat jadvallar va so'rovlarning hech qanday maydonida ishlatilmaydigan, lekin allaqachon yaratilgan qiymatlar tanlanadi.

Ushbu tur faqat bir nechta ma'lumotlar bazalari mavjud bo'lgan hollarda tegishli.

Ushbu to'rtta so'rov turlarining barchasi murakkab elementlar bilan ishlash uchun asosiy boshlang'ich nuqtani ta'minlaydi, ammo Access ma'lumotlar bazasida so'rovni qanday yaratishni osonlashtiradi.

MS Access da so'rovlar funksiyalari

Keling, nima uchun yuqorida tavsiflangan amallarni bajarishingiz kerakligini aniqlaylik. Access DBMSdagi barcha oddiy va murakkab so'rovlarning maqsadi quyidagilardan iborat:

  • Jadvallarda kerakli ma'lumotlarni to'plash, ularni keyinchalik ko'rish, tahrirlash, yangi qiymatlarni qo'shish.
  • Barcha turdagi hisobot shakllarini tayyorlash uchun ajoyib manba material.
  • Ekranda yig'indilarni (o'rtacha qiymat, yig'indi, og'ish, jami) ko'rsatish bilan butun ma'lumotlar massivlari bo'yicha matematik va statistik hisoblash protseduralarini o'tkazish.

Namuna so'rovi

Ushbu turdagi ma'lumotlar bazasi ishi murakkab, chunki u bir nechta jadvallarning ishtirokini talab qiladi.

Barcha jadvallar umumiy kalit maydonlariga ega bo'lishi kerak. Aks holda, operatsiya muvaffaqiyatsiz bo'ladi.

Keling, Access-da tanlangan so'rovni qanday yaratishni ko'rib chiqaylik. Birinchidan, kerakli maydonlarni tanlash bilan oddiy so'rovni yaratishingiz kerak. Bu yerda allaqachon ma'lumotlarni kerakli shaklga keltirish uchun tahrirlashingiz mumkin. Aytgancha, kiritilgan o'zgarishlar asl jadvallarga o'tkaziladi, shuning uchun bu nuqta e'tiborga olinishi kerak.

Ochilgan dizayner oynasida "Jadvallarni qo'shish" oynasi to'ldiriladi. Bu erda siz dastlabki qiymatlarni chiqarib olishingiz kerak bo'lgan jadvallar yoki so'rovlarni qo'shishingiz kerak.

Qo'shgandan so'ng, siz so'rov shartlarini to'ldirishni boshlashingiz mumkin. Buning uchun bizga "Dala" qatori kerak. Unda siz so'rov paytida ko'rsatiladigan jadvallardan qiymatlarni tanlashingiz kerak.

Amaliyotni yakunlash uchun siz "Bajarish" tugmasini bosishingiz kerak.

Parametrlar bilan so'rov

Bu foydalanuvchidan ma'lum ma'lumotlar bazasi ko'nikmalarini talab qiladigan murakkab protseduralarning yana bir turi. Bunday harakatlarning asosiy yo'nalishlaridan biri - bu hajmli ma'lumotlarga ega hisobotlarni yaratishga tayyorgarlik, shuningdek, umumiy natijalarni olish. Dizayner yordamida Access 2007 da so'rovlarni qanday yaratish haqida quyida muhokama qilinadi.

Ma'lumotlarni tanlash uchun ushbu protsedurani boshlash uchun kerakli maydonlarni tanlash uchun oddiy so'rovni yaratishingiz kerak. Bundan tashqari, Konstruktor rejimi orqali "Tanlash sharti" maydonini to'ldirish kerak va kiritilgan qiymat asosida tanlov amalga oshiriladi.

Shunday qilib, Access-da parametr bilan so'rovni qanday yaratish kerakligi haqidagi savolga javob oddiy - tanlov uchun dastlabki parametrlarni kiritish. Konstruktor bilan ishlash uchun so'rov ustasidan foydalanish kerak. U erda filtrlash uchun asosiy ma'lumotlar yaratiladi, ular keyingi ishlar uchun asos bo'lib xizmat qiladi.

Kengaytirilgan o'zaro mos yozuvlar so'rovi

Biz ishlarni murakkablashtirishda davom etamiz. Bir nechta ma'lumotlar jadvallari mavjud bo'lganda Access-da so'rovlarni qanday yaratish haqida ma'lumotni tushunish yanada qiyinroq. O'zaro mos yozuvlar so'rovi allaqachon sehrgar bilan ishlash variantlaridan biri sifatida ko'rib chiqilgan. Biroq, "Dizayn" rejimida siz shunga o'xshash so'rovni yaratishingiz mumkin.

Buning uchun "Query Builder" - "Cross" tugmasini bosishingiz kerak.

Manba jadvallarini qo'shish menyusi, shuningdek tanlangan maydonlarni to'ldirish imkoniyati ochiladi. E'tibor berish kerak bo'lgan yagona narsa - bu "Bulk Operation" va "Cross Table" elementlari. Ular to'g'ri to'ldirilishi kerak, aks holda protsedura to'g'ri bajarilmaydi.

O'zaro so'rovlar bir nechta ma'lumot manbalaridan ma'lumotlarni topish va olishning eng oson usuli, shuningdek, diagrammalar va grafiklarni yaratish qobiliyatidir.

Bundan tashqari, ushbu protseduradan foydalanganda, bir nechta ishlab chiqish variantlari bo'lsa ham, qidiruv tezroq bo'ladi.

Albatta, ishga xalaqit beradigan “tuzoqlar” ham bor. Misol uchun, ma'lumotlar bazasini ustun qiymati bo'yicha saralash uchun so'rovni yaratishda tizim xatoga yo'l qo'yadi. Ya'ni, faqat standart elementlar bo'yicha saralash mavjud - "o'sish va kamaytirish".

Xulosa qilib shuni aytish kerakki, foydalanuvchi Access-da so'rovlarni qanday yaratishni o'zi hal qiladi - usta yoki Dizayner yordamida. Garchi, MS Access-dan foydalanadigan ko'pchilik uchun birinchi variant ko'proq mos keladi. Axir, Sehrgarning o'zi barcha ishni bajaradi, so'rov shartlarini tanlashda foydalanuvchi uchun bir necha marta bosish qoladi.

Kengaytirilgan sozlamalardan foydalanish uchun professional darajadagi ma'lumotlar bazasi tajribasi aniq talab qilinadi. Agar ishda katta ma'lumotlar bazalari ishtirok etsa, ma'lumotlar bazasini buzmaslik va ma'lumotlar yo'qolishining oldini olish uchun mutaxassislarga murojaat qilish yaxshidir.

Faqatgina dasturchilar uchun mavjud bo'lgan bir nuqta bor. Maʼlumotlar bazasining asosiy tili SQL boʻlganligi uchun kerakli soʻrovni dastur kodi koʻrinishida yozish mumkin. Ushbu rejimda ishlash uchun allaqachon yaratilgan so'rovning satrini bosish kifoya qiladi va ochilgan kontekst menyusida "SQL rejimi" ni tanlang.

Eng oddiy holatda, so'rov kerakli maydonlarning bir jadvalidan tanlashni, belgilangan tanlash shartlariga mos keladigan yozuvlarni va so'rov natijalarini ko'rishni amalga oshiradi.

Tanlov shartlari bilan tanlov so'rovlarini loyihalash

Tovarlarni yetkazib berish ma’lumotlar bazasidagi MAHSULOT jadvalidan ma’lumotlarni olish misolidan foydalanib, Access’da tanlov so‘rovlarini ko‘rib chiqamiz.

Muammo 1... Mahsulotning bir qator xususiyatlarini uning nomi bilan tanlash kerak bo'lsin.

  1. Ma'lumotlar bazasi oynasida so'rov yaratish uchun lenta yorlig'ini tanlang - Yaratilish(Yaratish) va guruhda So'rovlar(So'rovlar) tugmasini bosing So'rov konstruktori(So'rovlar dizayni). Dizayn rejimida bo'sh so'rov oynasi ochiladi - Talab N(QueryN) va dialog oynasi Jadval qo'shish(Jadvalni ko'rsating) (4.2-rasm).
  2. Oynada Jadval qo'shish(Jadvalni ko'rsatish) MAHSULOT jadvalini tanlang va tugmani bosing Qo'shish(Qo'shish). Tanlangan jadval so'rovning ma'lumotlar sxemasi sohasida ko'rsatiladi. Derazani yop Jadval qo'shish(Jadvalni ko'rsatish) tugmachasini bosish orqali Yopish(Yopish).

Amalga oshirilgan harakatlar natijasida so'rovlar ma'lumotlari sxemasi so'rovlar konstruktor oynasining yuqori panelida paydo bo'ladi (4.1-rasm), bu so'rov uchun tanlangan jadvallar. Bunday holda, bitta stol MAHSULOT. Jadval maydonlar ro'yxati bilan ifodalanadi. Jadval maydonlari ro'yxatining yulduzcha (*) bilan belgilangan birinchi qatori jadval maydonlarining butun to'plamini bildiradi. Pastki panel so'rov shakli bo'lib, uni to'ldirishingiz kerak.

Bundan tashqari, tasmada yangi yorliq (So'rov asboblari | Dizayn) paydo bo'ladi va avtomatik ravishda faollashtiriladi (4.3-rasmda u ushbu yorliqning bir qismida ko'rsatilgan), unda yaratilgan so'rovning turi rang bilan ta'kidlangan - Namuna(Tanlash). Shunday qilib, sukut bo'yicha, har doim olib kelish so'rovi yaratiladi. Ushbu yorliqdagi buyruqlar so'rovni yaratishda kerakli amallarni bajarish uchun asboblar to'plamini taqdim etadi. Ushbu yorliq dizayn rejimida yangi so'rov yaratganingizda yoki mavjud so'rovni tahrirlaganingizda ochiladi.

  1. So'rov ma'lumotlari sxemasidan istalgan jadvalni olib tashlash uchun sichqoncha kursorini uning ustiga olib boring va tugmani bosing. Qo'shish uchun - tugmani bosing Jadvalni ko'rsatish(Jadvalni ko'rsatish) guruhda So'rovni sozlash(So'rovni sozlash) yorlig'i So'rovlar bilan ishlash | Konstruktor(So'rov asboblari | Dizayn) yoki buyruqni ishga tushiring Jadval qo'shing(Jadvalni ko'rsatish) so'rov ma'lumotlari sxemasida chaqirilgan kontekst menyusida.
  2. Dizayn oynasida (4.4-rasm) MAHSULOT jadvalidagi maydonlar roʻyxatidan NAME_ITS, PRICE, AVAILABILITY_of_s maydonlarini soʻrov formasi ustunlari qatoriga ketma-ket torting. Maydon(Dala).
  3. Jadvaldagi kerakli maydonlarni so'rovning tegishli ustunlariga kiritish uchun siz quyidagi usullardan foydalanishingiz mumkin:
    • so'rov shaklining birinchi qatorida Maydon(Maydon) sichqonchani bosish orqali ro'yxat tugmasi paydo bo'lishiga olib keling va ro'yxatdan kerakli maydonni tanlang. Ro'yxat so'rov ma'lumotlari sxemasida ko'rsatilgan jadvallarning maydonlarini o'z ichiga oladi;
    • so'rov ma'lumotlari sxemasidagi jadval maydoni nomini ikki marta bosing;
    • barcha jadval maydonlarini kiritish uchun so'rov ma'lumotlari sxemasidagi jadval maydoni ro'yxatidagi * (yulduzcha) belgisini sudrab yoki ikki marta bosishingiz mumkin.
  4. Agar siz tasodifan so'rov formasida keraksiz maydonni tashlab qo'ysangiz, uni o'chiring. Buni amalga oshirish uchun kursorni yuqoridagi ustun belgilash maydoniga olib boring, u erda u pastga qaragan qora o'q ko'rinishini oladi va bosing. Ustun ta'kidlangan. Tugmani bosing yoki buyruqni bajaring Ustunlarni o'chirish Guruhdagi (ustunlarni o'chirish). So'rovni sozlash(So'rovni sozlash).
  5. Mos ravishda Displeydagi chiqish(Ko'rsatish) maydonlarni belgilang, aks holda ular so'rovlar jadvaliga kiritilmaydi.
  6. Qatorda yozing Tanlov shartlari(Mezon) mahsulot nomi, shakldagi so'rov shaklida ko'rsatilganidek. 4.4. Tanlov bandidagi ifoda operatorni o'z ichiga olmagani uchun standart operator = ishlatiladi. Ifoda ishlatiladigan matn qiymati avtomatik ravishda qo'shiladigan qo'sh tirnoq ichida kiritiladi.
  7. “Ishga tushirish” tugmasini yoki “Natijalar” guruhidagi “Ko‘rish” tugmasini bosish orqali so‘rovni bajaring. Belgilangan tanlash shartlariga javob beradigan MAHSULOT jadvalidagi yozuv bilan jadval rejimida ekranda so'rov oynasi paydo bo'ladi.

Izoh
Jadval rejimidagi so'rovlar oynasi ma'lumotlar bazasi jadvalini ko'rish oynasiga o'xshaydi. Ba'zi so'rovlar jadvallari so'rov asosidagi asosiy jadval ma'lumotlarini o'zgartirish uchun ishlatilishi mumkin. Jadval ko'rinishida ko'rilgan so'rov Access 2010 ma'lumotlar bazasi jadvalidan farqli ravishda ustunga ega emas Qo'shish uchun bosing(Qo'shish uchun bosing), jadval tuzilishini o'zgartirish uchun mo'ljallangan. Ushbu rejimda, lenta yorlig'ida uy(Uyga) ma'lumotlar bazasi jadvalini ochishdagi kabi tugmalar mavjud.

  1. Agar murakkab mahsulot nomini kiritishda xatolikka yo'l qo'ysangiz, mahsulot jadvalda topilmaydi. Joker belgilar operatorlaridan foydalanish - yulduzcha (*) va savol belgisi (?) (standart bo'yicha so'rovlar uchun ANSI-89 standarti qo'llaniladi) yoki foiz belgisi (%) va pastki chiziq (_) (SQL Server uchun tavsiya etilgan ANSI-92 standarti), buni osonlashtiradi. kerakli satrlarni topish va ko'p xatolardan qochish. Mahsulotning toʻliq nomi oʻrniga Korpus * yoki Korpus% kiriting. So'rovingizni to'ldiring. Agar mahsulot nomi maydonida bitta qiymat "Korpus" so'zi bilan boshlansa, so'rov natijasi avvalgi holatda bo'lgani kabi bo'ladi. So'rov bajarilgandan so'ng, kiritilgan ibora Like operatori "Corpus *" bilan to'ldiriladi. Bu operator matn maydonlarini qidirishda joker belgilardan foydalanish imkonini beradi.
  2. Agar bir nechta mahsulotlarni topishingiz kerak bo'lsa, In operatoridan foydalaning. Qavslar ichida ko'rsatilgan ro'yxatdagi istalgan qiymatga tengligini tekshirish imkonini beradi. Tanlash shartlari qatoriga yozing ("MiniTower case"; "HDD Maxtor 20GB"; "FDD 3,5"). So'rovlar jadvalida uchta qator ko'rsatiladi. In bayonotida joker belgilarga ruxsat berilmaydi.
  3. Yorliqni bosish orqali so'rovni saqlang Fayl(Fayl) va buyruqni ishga tushiring Saqlash(Saqlash). Oynada Saqlash(Boshqa saqlash) so'rov nomini kiriting. Misol 1. E'tibor bering, so'rovning nomi faqat mavjud so'rovlar nomlari bilan emas, balki ma'lumotlar bazasidagi jadvallar nomlari bilan ham mos kelmasligi kerak.
  4. Kontekst menyusi buyrug'i yordamida joriy so'rovni yoping Yopish(Yopish) yoki so'rov oynasi tugmasini bosish orqali Yopish(Yopish).
  5. Navigatsiya panelida so'rovni tanlash va tanlash orqali saqlangan so'rovni ishga tushiring Ochiq(Ochiq).
  6. So'rovni tahrirlash uchun uni navigatsiya panelida tanlang va kontekst menyusidagi buyruqni bajaring Konstruktor(Dizayn ko'rinishi).

Maqsad 2. Narxi 1000 rubldan va QQS 10% dan oshmaydigan tovarlarni tanlash, shuningdek, narxi 2500 rubldan ortiq bo'lgan tovarlarni tanlash kerak bo'lsin. Natijada mahsulot nomi (NAME_TOV), uning narxi (PRICE) va QQS (VAT_VAT) bo‘lishi kerak.

  1. Dizayn rejimida yangi so'rov yarating, PRODUCT jadvalini qo'shing. Dizayn oynasida (4.5-rasm) MAHSULOT jadvalidagi maydonlar ro'yxatidan so'rov shakliga, NAIM_TOV, PRICE, RATE_VAT maydonlarini ketma-ket sudrab boring.
  2. Yozing Tanlov shartlari(Mezon) shakldagi so'rov shaklida ko'rsatilganidek. 4.5. Bir satrda yozilgan shartlar orasida mantiqiy VA amali bajariladi. Turli qatorlarda yozilgan shartlar orasida mantiqiy OR operatsiyasi bajariladi.
  3. So'rovingizni bajaring, tugmani bosing Bajarish Guruhda (yugurish). natijalar(Natijalar). Belgilangan tanlash shartlariga javob beradigan MAHSULOT jadvalidagi yozuvlar bilan jadval rejimida ekranda so'rov oynasi paydo bo'ladi.
  4. Kursor so'rov sarlavhasi ustida joylashganida chaqiriladigan so'rov kontekst menyusida tegishli buyruqni ishga tushirish orqali so'rovni saqlang. Unga nom bering 2-misol.

Muammo 3... Aytaylik, ma'lum bir davr uchun barcha hisob-fakturalarni tanlashingiz kerak. Natijada invoys raqami (NOM_NAK), ombor kodi (CODE_SK), jo‘natilgan sana (DATE_SHIPPED) va jo‘natilgan tovarlarning umumiy qiymati (SUM_NUMBER) bo‘lishi kerak.

  1. Dizayn rejimida yangi so'rov yarating, OVERLAY jadvalini qo'shing. Dizayn oynasida OVERLAY jadvalining maydonlari ro'yxatidan barcha kerakli maydonlarni so'rov shakliga ketma-ket sudrab olib tashlang.
  2. Qatordagi DATE_DATE maydoni uchun Tanlov shartlari(Mezonlar) # 01/11/2008 # va # 03/31/2008 # orasida yozing. Between operatori sana oralig'ini belgilaydi (ANSI-92 # o'rniga bitta tirnoqdan foydalanadi). Bundan tashqari, ushbu operator raqamli qiymat uchun intervalni belgilash imkonini beradi.

Birlashtirish uchun video darslikni tomosha qiling:

MS Access da siz ma'lumotlar bazalari, jadvallar, shakllar va boshqa hisobotlarni yaratishingiz mumkin. Ushbu maqola foydalanuvchiga MS Access-da SQL so'rovlarini bajarishga yordam beradi. SQL ma'lumotlar bazasidan ma'lumotlarni olish uchun foydalanadigan bir xil so'rovlarni bajarishingiz mumkin. Ushbu maqola MS Access-ni endigina o'rganishni boshlagan va MS Access-da SQL so'rovlarini bajarmoqchi bo'lgan foydalanuvchilar uchun mo'ljallangan. Ishni boshlashdan oldin talab qilinadigan yagona shart - bu tashkilotda ishlatiladigan ma'lumotlar bazasiga kirish huquqiga ega bo'lishingiz.

Qadamlar


Sizga nima kerak

  • Foydalanuvchi tashkilotning ma'lumotlar bazasiga kirish huquqiga ega bo'lishi kerak
  • MS Access orqali so'rovlarni boshlashdan oldin foydalanuvchi texnologiyani qo'llab-quvvatlash xizmatiga murojaat qilishi mumkin

Maqola haqida ma'lumot

Bu sahifa 4,443 marta ko'rilgan.

Bu foydali bo'ldimi?

DBMSga kirish

Microsoft Access - bu ma'lumotlar bazasini boshqarishning zamonaviy tizimlariga xos bo'lgan barcha vositalar va imkoniyatlarni oqilona muvozanatlashtiradigan relyatsion ma'lumotlar bazasi. Relyatsion ma'lumotlar bazasi ma'lumotlaringizni topish, tahlil qilish, saqlash va himoya qilishni osonlashtiradi, chunki ular bir joyda saqlanadi. Ingliz tilidan tarjima qilingan Access "kirish" degan ma'noni anglatadi. MS Access ma'lumotlar bazasini boshqarishning eng kuchli, moslashuvchan va ishlatish uchun qulay tizimlaridan biridir. Unda siz dasturning bir qatorini yozmasdan ko'pgina ilovalarni yaratishingiz mumkin, lekin agar siz juda murakkab narsa yaratishingiz kerak bo'lsa, u holda MS Access bu holat uchun kuchli dasturlash tilini taqdim etadi - Visual Basic Application.

Microsoft Access DBMS ning mashhurligi quyidagi sabablarga ko'ra yuzaga keladi:

O'rganish oson va tushunarli, Access ma'lumotlar bazasini boshqarish dasturlarini tezda yaratish uchun eng yaxshi tizimlardan biridir;

OLE texnologiyasidan foydalanish qobiliyati;

Microsoft Office paketi bilan integratsiya;

Veb-texnologiyalarni to'liq qo'llab-quvvatlash;

Vizual texnologiya sizning harakatlaringiz natijalarini doimiy ravishda ko'rish va ularni tuzatish imkonini beradi;

Ob'ektlarni rivojlantirish uchun "sehrgarlar" ning katta to'plamining mavjudligi.

Dastur ishlaydigan ob'ektlarning asosiy turlari: jadval, so'rov, forma, hisobot, sahifa, makros, modul.

Jadval - bu ma'lumotlarni saqlash uchun ishlatiladigan ob'ekt. Har bir jadvalda ma'lum turdagi ob'ektlar haqida ma'lumotlar mavjud. Jadvalda har xil turdagi ma'lumotlar saqlanadigan maydonlar (ustunlar) va yozuvlar (satrlar) mavjud. Har bir jadval uchun birlamchi kalit aniqlanishi kerak (har bir yozuv uchun yagona qiymatga ega bo'lgan bitta maydon yoki yig'indisi har bir yozuv uchun yagona bo'lgan bir nechta maydonlar), bu jadvaldagi har bir yozuvning yagona identifikatori hisoblanadi.

Ma'lumotlarga kirish tezligini oshirish uchun alohida jadval maydonlari (yoki ularning to'plami) indekslar sifatida e'lon qilinishi mumkin. Indeks - bu asosiy qiymatlardan foydalangan holda jadvalda qidirish va saralashni tezlashtiradigan vosita bo'lib, jadval satrlarining o'ziga xosligini ta'minlash imkonini beradi. Jadvalning asosiy kaliti avtomatik ravishda indekslanadi. Ba'zi ma'lumotlar turlariga ega bo'lgan maydonlar uchun indekslarni yaratishga yo'l qo'yilmaydi.

So'rov - foydalanuvchiga bir yoki bir nechta jadvallardan kerakli ma'lumotlarni olish imkonini beruvchi ob'ekt. Siz allaqachon mavjud bo'lgan bir yoki bir nechta jadval ma'lumotlaridan foydalangan holda yangi jadvallar yaratish uchun so'rovlardan foydalanishingiz mumkin. So'rovning eng keng tarqalgan turi - tanlangan so'rovdir. Tanlangan so'rov belgilangan shartlarga muvofiq bir yoki bir nechta jadvallardan ma'lumotlarni tanlaydi va keyin ularni kerakli tartibda ko'rsatadi.

Shakl - bu asosan ma'lumotlarni kiritish, uni ekranda ko'rsatish yoki ilovaning ishlashini boshqarish uchun mo'ljallangan ob'ekt.

Hisobot - bu keyinchalik chop etilishi yoki boshqa dastur hujjatiga kiritilishi mumkin bo'lgan hujjat yaratish uchun mo'ljallangan ob'ekt.

vizual rivojlanish dasturlash bazasi

Sahifa - joriy Access ma'lumotlar bazasi ma'lumotlariga kirish uchun ishlatiladi.

Makros - bu Access ma'lum bir hodisaga javoban bajarishi kerak bo'lgan bir yoki bir nechta harakatlarning tuzilgan tavsifi bo'lgan ob'ekt.

Modul - bu Microsoft Visual Basic-dagi dasturlarni o'z ichiga olgan ob'ekt bo'lib, ular sizga jarayonni kichikroq bosqichlarga bo'lish va makroslar yordamida topilmagan xatolarni aniqlash imkonini beradi.

DBMS Start - Programs - Microsoft Access tomonidan ishga tushiriladi. Fayl - Yangi buyrug'ini bajaring.

Ma'lumotlar bazasi ob'ektlari bilan ishlash interfeysi birlashtirilgan. Ularning har biri uchun standart ish rejimlari taqdim etiladi: Yaratish (ob'ektlar strukturasini yaratish); Konstruktor (ob'ektlarning tuzilishini o'zgartirish); Ochish (View, Run - ma'lumotlar bazasi ob'ektlari bilan ishlash uchun mo'ljallangan).

SQL so'rovlar tili

1986 yildan beri SQL (Tuzilgan so'rovlar tili). relyatsion ma'lumotlar bazalari uchun standart tildir. Xususan, u Access va Excel dasturlarida qo'llaniladi.

SQL - bu saqlangan ma'lumotlarni tavsiflash, saqlangan ma'lumotlarni olish va ma'lumotlarni o'zgartirish uchun mo'ljallangan axborot-mantiqiy til. Dastlab, SQL foydalanuvchi uchun ma'lumotlar bazasi bilan ishlashning asosiy usuli bo'lib, jadvallar yaratish, jadvallarga yangi yozuvlar qo'shish, jadvallardan yozuvlarni olish, yozuvlarni o'chirish va jadval tuzilmalarini o'zgartirish imkonini beradigan kichik buyruqlar (operatorlar) to'plami edi. Murakkabligi ortib borayotganligi sababli, SQL ko'proq qo'llaniladigan dasturlash tiliga aylandi va foydalanuvchilar vizual so'rovlar quruvchilardan foydalanish imkoniyatiga ega.

SQL tili operatorlar to'plamidir:

Data Definition Language (DDL) bayonotlari

Ma'lumotlarni manipulyatsiya qilish tili (DML) operatorlari

Data Control Language (DCL) operatorlari;

Transaction Control Language (TCL) bayonotlari.

MS Access-da so'rovlar SQL tili yordamida saqlanadi va amalga oshiriladi. Ko'pgina so'rovlar grafik tarzda yaratilishi mumkin bo'lsa-da (Model so'rovlari), ular SQL bayonotlari sifatida saqlanadi. Ba'zi hollarda (masalan, bo'ysunuvchi so'rovlarda) faqat SQL tilidan foydalanish mumkin.

SQL protsessual bo'lmagan tildir. U shunchaki nima qilish kerakligini e'lon qiladi va bajarish ma'lumotlar bazasini boshqarish tizimiga (ma'lumotlar bazasini boshqarish tizimi) tayinlanadi.

SQL uchta qiymatli mantiqdan foydalanadi. NULL (noma'lum yoki NO MA'LUMOT) an'anaviy mantiqiy TRUE va FALSE qiymatlari bilan bir qatorda ishlatiladi.

Amallar boshqa dasturlash tillarida bo'lgani kabi alohida elementlarda emas, balki butun ma'lumotlar to'plamida amalga oshiriladi.

SQL so'rovi bayonotlardan iborat. Har bir ko'rsatma bir nechta jumlalarni o'z ichiga olishi mumkin.

Bitta SQL so'rovi boshqasiga joylashtirilishi mumkin. Quyi so'rov so'rov ichidagi so'rovdan boshqa narsa emas. Odatda, pastki so'rov WHERE bandida ishlatiladi. Ammo quyi so'rovlardan foydalanishning boshqa usullari ham mavjud.

So'rov Q011. m_product jadvalidagi mahsulotlar haqidagi ma'lumotlar ko'rsatiladi, ularning kodlari m_income jadvalida ham mavjud:

TANLASH *
m_mahsulotdan
WHERE id IN (m_income FROM product_id ni tanlang);

Q012 so'rovi. m_product jadvalidagi mahsulotlar ro'yxati ko'rsatiladi, ularning kodlari m_outcome jadvalida yo'q:

TANLASH *
m_mahsulotdan
WHERE id IN YO'Q (m_outcome FROM product_id ni tanlang);

So'rov Q013. Ushbu SQL so'rovi m_income jadvalida kodlari bo'lgan, lekin m_outcome jadvalida bo'lmagan mahsulot kodlari va nomlarining noyob ro'yxatini ko'rsatadi:

DISTINCT mahsulot_identifikatorini tanlang, sarlavha
FROM m_income INNER JOIN m_product
ON m_income.product_id = m_product.id
WHERE product_id IN YO'Q (m_natijadan mahsulot_identifikatorini tanlang);

So'rov Q014. Nomlari M harfi bilan boshlanadigan m_category jadvalidan toifalarning noyob ro'yxati ko'rsatiladi:

DISTINCT sarlavhasini tanlang
m_mahsulotdan
QAYERDA "M *" kabi sarlavha;

So'rov Q015. So'rovdagi maydonlar bo'yicha arifmetik amallarni bajarish va so'rovdagi maydonlar nomini o'zgartirishga misol (taxallus). Ushbu misolda daromad sotilgan summaning 7 foizini tashkil etgan holda, har bir xarajat ob'ekti uchun xarajatlar miqdori = miqdor * narx va foyda marjasi hisoblab chiqiladi:

Narx, summa * narx AS natijasi_sum,
miqdori * narx / 100 * 7 AS foyda
FROM m_outcome;

So'rov Q016. Arifmetik amallarni tahlil qilish va soddalashtirish orqali siz so'rovni bajarish tezligini oshirishingiz mumkin:


natija_summi * 0,07 AS foyda
FROM m_outcome;

So'rov Q017. INNER JOIN bayonotidan foydalanib, siz bir nechta jadvallardagi ma'lumotlarni birlashtira olasiz. Quyidagi misolda, ctgry_id qiymatiga qarab, m_income jadvalining har bir yozuvi mahsulot tegishli bo'lgan m_category jadvalidagi toifa nomi bilan mos keladi:

c.title, b.title, dt, summa, narx, summa * narx AS daromad_sumini tanlang
FROM (m_income AS a INNER JOIN AS b ON a.product_id = b.id)
INNER JOIN m_category AS c ON b.ctgry_id = c.id
TARTIBI BO'YICHA c.title, b.title;

So'rov Q018. SUM - yig'indi, COUNT - miqdor, AVG - arifmetik o'rtacha, MAX - maksimal qiymat, MIN - minimal qiymat kabi funktsiyalar agregat funktsiyalar deb ataladi. Ular bir nechta qiymatlarni oladi va qayta ishlanganidan keyin ular bitta qiymatni qaytaradi. SUM agregat funktsiyasidan foydalangan holda miqdor va narx maydonlari mahsuloti yig'indisini hisoblash misoli:

SUM (summa * narx) Jami_sum sifatida tanlang
m_daromaddan;

So'rov Q019. Bir nechta agregat funktsiyalardan foydalanishga misol:


Sum (summa) ni Summa_summa, AVG (summa) ASUM_AVG,
MAX (summa) AS Amount_Max, Min (summa) AS Summa_Min,
Hisoblash (*) AS Jami_son
m_daromaddan;

So'rov Q020. Ushbu misol 2011 yil iyun oyida kapitallashtirilgan 1 kodli barcha elementlarning yig'indisini hisoblab chiqadi:

TANLASH
m_daromaddan
QAYERDA mahsulot_identifikatori = 1 VA dt # 01.06.2011 # VA # 30.06.2011 # # O'rtasida;.

So'rov Q021. Quyidagi SQL so'rovi 4 yoki 6 kodlari bilan sotilgan mahsulotlar miqdorini hisoblab chiqadi:

TANLASH
FROM m_outcome
QAYERDA product_id = 4 OR product_id = 6;

Q022 so'rovi. 2011 yil 12 iyunda 4 yoki 6 kodli tovarlar qancha miqdorda sotilganligi hisoblab chiqiladi:

Yig'indi (summa * narx) natija_sumi sifatida tanlang
FROM m_outcome
QAYERDA (mahsulot_id = 4 YOKI mahsulot_id = 6) VA dt = # 12/6/2011 #;

So'rov Q023. Vazifa quyidagicha. "Nonvoyxona" toifasidagi kapitallashtirilgan tovarlarning umumiy miqdorini hisoblang.

Ushbu muammoni hal qilish uchun siz uchta jadval bilan ishlashingiz kerak: m_income, m_product va m_category, chunki:
- kapitallashtirilgan tovarlarning miqdori va narxi m_daromadlar jadvalida saqlanadi;
- har bir mahsulotning toifa kodi m_product jadvalida saqlanadi;
- kategoriya sarlavhasining nomi m_category jadvalida saqlanadi.

Ushbu muammoni hal qilish uchun biz quyidagi algoritmdan foydalanamiz:
- pastki so'rov yordamida m_category jadvalidan "Non mahsulotlari" toifa kodini aniqlash;
- har bir kapitallashtirilgan mahsulot toifasini aniqlash uchun m_income va m_product jadvallarini birlashtirish;
- toifa kodi yuqoridagi quyi so'rov bilan belgilangan kodga teng bo'lgan tovarlar uchun tushum miqdorini (= miqdori * narxini) hisoblash.


m_mahsulotdan ICHKI JOIN AS m_daromad AS b ON a.id = b.product_id
WHERE ctgry_id = (Tanlang id FROM m_category WHERE title = "(! LANG: Nonvoyxona"); !}

So'rov Q024."Non mahsulotlari" toifasidagi kapitallashtirilgan tovarlarning umumiy miqdorini hisoblash masalasini quyidagi algoritm yordamida hal qilamiz:
- m_income jadvalining har bir yozuvi uchun uning mahsulot_identifikatori qiymatiga qarab, m_kategoriya jadvalidan toifa nomiga mos keladi;
- toifasi "Non mahsulotlari" ga teng bo'lgan yozuvlarni tanlang;
- kvitansiya miqdorini hisoblang = miqdor * narx.

Yig'indi (summa * narx) daromad_sumi AS
FROM (m_mahsulot ICHKI JOIN AS m_daromad AS b ON a.id = b.product_id)
WHERE c.title = "(! LANG: Nonvoyxona"; !}

Q025 so'rovi. Ushbu misol qancha mahsulot iste'mol qilinganligini hisoblab chiqadi:

COUNT ta (mahsulot_identifikatori) product_cnt SIFATIDA TANLANING
FROM (Tanlash DISTINCT product_id FROM m_outcome) AS t;

So'rov Q026. GROUP BY bandi yozuvlarni guruhlash uchun ishlatiladi. Odatda, yozuvlar bir yoki bir nechta maydonlar qiymati bo'yicha guruhlanadi va har bir guruhga ba'zi jamlangan operatsiyalar qo'llaniladi. Misol uchun, quyidagi so'rov tovarlarni sotish bo'yicha hisobotni yaratadi. Ya'ni, tovarlarning nomlari va ular sotilgan miqdorini o'z ichiga olgan jadval tuziladi:

Sarlavha, SUM (summa * narx) natija_sumi AS
FROM m_product AS a INNER JOIN m_outcome AS b
ON a.id = b.product_id
Sarlavha bo'yicha GRUUP;

So'rov Q027. Kategoriya bo'yicha savdo hisoboti. Ya'ni, mahsulot toifalarining nomlari, ushbu toifadagi mahsulotlar sotilgan umumiy summasi va o'rtacha sotish miqdorini o'z ichiga olgan jadval tuziladi. ROUND funktsiyasi o'rtacha qiymatni yuzinchigacha (o'nlik ajratgichdan keyingi ikkinchi raqam) yaxlitlash uchun ishlatiladi:

S. sarlavha, SUM (summa * narx) natija_sumi AS,
ROUND (AVG (summa * narx), 2) AS natija_sum_oʻrtacha
FROM (m_mahsulot ICHKI JOIN AS m_natija AS b ON a.id = b.product_id)
INNER JOIN m_category AS c ON a.ctgry_id = c.id
C. sarlavhasi boʻyicha GURUHLASH;

So'rov Q028. Har bir mahsulot uchun uning tushumlarining umumiy va o'rtacha soni hisoblab chiqiladi va umumiy tushumlar soni 500 tadan kam bo'lmagan tovarlar to'g'risidagi ma'lumotlarni ko'rsatadi:

mahsulot_identifikatorini, SUM (summa) AS summa_sum,
Tur (O'rtacha (summa), 2) AS summa_avg
m_daromaddan
mahsulot_identifikatori boʻyicha GURUHLASH
EGA SO'M (summa)> = 500;

So'rov Q029. Ushbu so'rov har bir modda bo'yicha 2011 yilning ikkinchi choragida uning tushumlari summasi va o'rtacha miqdorini hisoblab chiqadi. Agar olingan tovarlarning umumiy miqdori 1000 tadan kam bo'lmasa, ushbu mahsulot haqida ma'lumot ko'rsatiladi:

TANLASH sarlavhasi, SUM (summa * narx) daromad_sumi AS
FROM m_income a INNER JOIN m_product b ON a.product_id = b.id
QAYERDA dt # 4/1/2011 # VA # 6/30/2011 #
Sarlavha boʻyicha GURUHLASH
SO'MGA EGA (summa * narx)> = 1000;

Q030 so'rovi. Ba'zi hollarda ma'lum bir jadvalning har bir yozuvini boshqa jadvalning har bir yozuviga solishtirish kerak; Dekart mahsuloti deb ataladigan narsa. Bunday bog'lanish natijasida hosil bo'lgan jadval Dekart jadvali deb ataladi. Masalan, agar A jadvalida 100 ta, B jadvalida 15 ta yozuv bo'lsa, ularning Dekart jadvali 100 * 15 = 150 ta yozuvdan iborat bo'ladi. Quyidagi so'rov m_income jadvalidagi har bir yozuvni m_outcome jadvalidagi har bir yozuv bilan birlashtiradi:

TANLASH * FROM m_income, m_outcome;

Q031 so'rovi. Yozuvlarni ikkita maydon bo'yicha guruhlash misoli. Quyidagi SQL so'rovi har bir yetkazib beruvchidan har bir yetkazib beruvchidan olingan tovarlar miqdori va miqdorini hisoblab chiqadi:


SUM (summa * narx) daromad_sumi AS

Q032 so'rovi. Yozuvlarni ikkita maydon bo'yicha guruhlash misoli. Quyidagi so'rov har bir yetkazib beruvchi uchun biz tomonidan sotilgan mahsulot miqdori va miqdorini hisoblab chiqadi:

yetkazib beruvchi_identifikatori, mahsulot_identifikatori, SUM (summa) AS summa_sum,
SUM (summa * narx) natija_sumi AS
yetkazib beruvchi_identifikatori, mahsulot_identifikatori boʻyicha GROUP;

Q033 so'rovi. Ushbu misolda yuqoridagi ikkita so'rov (q031 va q032) quyi so'rovlar sifatida ishlatiladi. LEFT JOIN usulidan foydalangan holda ushbu so'rovlar natijalari bitta hisobotga birlashtiriladi. Quyidagi so'rovlar har bir yetkazib beruvchi uchun olingan va sotilgan mahsulotlarning miqdori va miqdori haqida hisobot beradi. Esda tutingki, agar biror mahsulot yetib kelgan bo‘lsa-yu, lekin hali sotilmagan bo‘lsa, bu yozuvning natija_sumi katagi bo‘sh bo‘ladi. Shuni ham ta'kidlash kerakki, bu so'rov nisbatan murakkab so'rovlarni quyi so'rov sifatida ishlatishga misoldir. Ushbu SQL so'rovining katta hajmdagi ma'lumotlar bilan ishlashi shubhali:

TANLASH *
FROM
SUM (summa * narx) daromad_sumi AS
ON a.mahsulot_id = b.id yetkazib beruvchi_identifikatori boʻyicha GURUH, mahsulot_id) AS a
CHAPGA QO'SHILING
(etkazib beruvchi_identifikatori, mahsulot_identifikatori, SUM (summa) summa_sum AS ni tanlang,
SUM (summa * narx) natija_sumi AS
FROM m_outcome AS a INNER JOIN m_product AS b
ON a.mahsulot_id = b.id yetkazib beruvchi_identifikatori boʻyicha GURUH, mahsulot_id) AS b
ON (a.mahsulot_identifikatori = b.mahsulot_identifikatori) VA (a.yetkazib beruvchi_id = b. yetkazib beruvchi_id);

Q034 so'rovi. Ushbu misolda yuqoridagi ikkita so'rov (q031 va q032) quyi so'rovlar sifatida ishlatiladi. RIGTH JOIN usulidan foydalangan holda ushbu so'rovlar natijalari bitta hisobotga birlashtiriladi. Keyingi so'rovda har bir mijoz tomonidan foydalanilgan to'lov tizimlari uchun to'lovlar miqdori va investitsiyalari miqdori to'g'risidagi hisobot ko'rsatiladi. Quyidagi so'rovlar har bir yetkazib beruvchi uchun olingan va sotilgan mahsulotlarning miqdori va miqdori haqida hisobot beradi. Shuni ta'kidlash kerakki, agar biron bir mahsulot allaqachon sotilgan bo'lsa-da, lekin hali kelmagan bo'lsa, unda ushbu yozuv uchun daromadlar_sumi katagi bo'sh bo'ladi. Bunday bo'sh kataklarning mavjudligi sotishni hisobga olishda xatolik belgisidir, chunki sotishdan oldin birinchi navbatda tegishli mahsulot kelishi kerak:

TANLASH *
FROM
(etkazib beruvchi_identifikatori, mahsulot_identifikatori, SUM (summa) summa_sum AS ni tanlang,
SUM (summa * narx) daromad_sumi AS
FROM m_income ICHKI JOIN AS m_product AS b ON a.product_id = b.id
yetkazib beruvchi_identifikatori, mahsulot_identifikatori boʻyicha GURUHLASH a
TO'G'RI QO'SHILING
(etkazib beruvchi_identifikatori, mahsulot_identifikatori, SUM (summa) summa_sum AS ni tanlang,
SUM (summa * narx) natija_sumi AS
FROM m_outcome ICHKI JOIN AS m_product AS b ON a.product_id = b.id
yetkazib beruvchi_identifikatori, mahsulot_identifikatori boʻyicha GURUHLASH b
ON (a.product_id = b.supplier_id) VA (a.product_id = b.product_id);

Q035 so'rovi. Mahsulotlar bo'yicha daromad va xarajatlar miqdori to'g'risidagi hisobotni ko'rsatadi. Buning uchun m_daromad va m_natija jadvallari bo'yicha mahsulotlar ro'yxati tuziladi, so'ngra ushbu ro'yxatdagi har bir mahsulot uchun m_daromad jadvali bo'yicha uning tushumlari yig'indisi va m_natija jadvali bo'yicha uning xarajatlari yig'indisi hisoblanadi:

mahsulot_identifikatorini, SUM (miqdorda) daromadlar_miqdori sifatida,
SUM (tashqi_summa) AS natija_summasi
FROM
(mahsulot_identifikatorini tanlang, miqdori AS miqdorida, 0 AS tashqarida
m_daromaddan
HAMMA ittifoq
SELECT product_id, 0 AS in_summa, AS sum out_summa
FROM m_outcome) AS t
GROUP BY BY product_id;

So'rov Q036. Agar unga uzatilgan to‘plam elementlardan iborat bo‘lsa, EXISTS TRUE qiymatini qaytaradi. EXISTS funktsiyasi, agar unga uzatilgan to'plam bo'sh bo'lsa, ya'ni hech qanday element bo'lmasa, FALSE qiymatini qaytaradi. Quyidagi so'rov m_income va m_outcome jadvallarida mavjud bo'lgan mahsulot kodlarini ko'rsatadi:

DISTINCT mahsulot_identifikatorini tanlang
FROM m_income AS a
QAYERDA MAVJUD (mahsulot_identifikatorini m_natijadan AS b

So'rov Q037. Mahsulot kodlari ko'rsatiladi, ular m_income jadvalida ham, m_outcome jadvalida ham mavjud:

DISTINCT mahsulot_identifikatorini tanlang
FROM m_income AS a
WHERE product_id IN (m_natijadan mahsulot_identifikatorini tanlang)

Q038 so'rovi. Mahsulot kodlari ko'rsatiladi, ular m_income jadvalidagi kabi mavjud, lekin m_outcome jadvalida mavjud emas:

DISTINCT mahsulot_identifikatorini tanlang
FROM m_income AS a
MAVJUD YO'Q QERDA (mahsulot_identifikatorini m_natijadan TANGLASH b
WHERE b.mahsulot_id = a.mahsulot_id);

So'rov Q039. Maksimal sotilgan mahsulotlar ro'yxati ko'rsatiladi. Algoritm quyidagicha. Har bir mahsulot uchun uning sotilgan miqdori hisoblab chiqiladi. Keyin, bu miqdorlarning maksimal miqdori aniqlanadi. So'ngra, har bir mahsulot uchun uning sotuvining umumiy miqdori yana hisoblab chiqiladi va mahsulotning kodi va jami maksimalga teng bo'lgan sotuvlar jami ko'rsatiladi:

mahsulot_identifikatori, SUM (summa * narx) summa_sum AS ni tanlang
FROM m_outcome
mahsulot_identifikatori boʻyicha GURUHLASH
SUM BO'LGAN (summa * narx) = (MAXS (s_sum) ni tanlang
FROM (mahsulot_identifikatori bo'yicha m_natijadan GROUP SO'YMAS SO'M (summa * narx) ni tanlang));

Q040 so'rovi. Zaxira qilingan so'z IIF (shartli operator) mantiqiy ifodani baholash va natijaga qarab harakatni bajarish uchun ishlatiladi (TRUE yoki FALSE). Quyidagi misolda, agar mahsulot miqdori 500 dan kam bo'lsa, etkazib berish "kichik" hisoblanadi. Aks holda, ya'ni kvitansiya miqdori 500 dan katta yoki unga teng bo'lsa, etkazib berish "katta" hisoblanadi:

SELECT dt, product_id, summa,
IIF (summa<500,"малая","большая") AS mark
m_daromaddan;

SQL so'rovi Q041. Agar IIF operatori bir necha marta ishlatilsa, uni SWITCH operatori bilan almashtirish qulayroqdir. SWITCH operatori (bir nechta tanlov operatori) mantiqiy ifodani baholash va natija asosida amalni bajarish uchun ishlatiladi. Quyidagi misolda partiyadagi tovar miqdori 500 dan kam bo‘lsa, yetkazib berilgan lot “kichik” deb hisoblanadi. Aks holda, ya’ni tovar miqdori 500 dan ortiq yoki unga teng bo‘lsa, lot “katta” hisoblanadi. ":

SELECT dt, product_id, summa,
SWITCH (summa<500,"малая",amount>= 500, "katta") AS belgisi
m_daromaddan;

Q042 so'rovi. <300 не выполняется, то проверяется является ли количество товаров в партии меньше 500. Если размер партии меньше 500, то она считается «средней». В противном случае партия считается «большой»:

SELECT dt, product_id, summa,
IIF (summa<300,"малая",
IIF (summa<1000,"средняя","большая")) AS mark
m_daromaddan;

SQL so'rovi Q043. Keyingi so‘rovda qabul qilingan partiyadagi tovar miqdori 300 tadan kam bo‘lsa, u holda partiya “kichik” deb hisoblanadi. Aks holda, ya'ni miqdor sharti bo'lsa<300 не выполняется, то проверяется является ли количество товаров в партии меньше 500. Если размер партии меньше 500, то она считается «средней». В противном случае партия считается «большой»:

SELECT dt, product_id, summa,
SWITCH (summa<300,"малая",
miqdori<1000,"средняя",
summa> = 1000, "katta") AS belgisi
m_daromaddan;

SQL so'rovi Q044. Keyingi so'rovda savdolar uch guruhga bo'linadi: kichik (150 tagacha), o'rta (150 dan 300 gacha), katta (300 va undan ko'p). Keyinchalik, har bir guruh uchun jami hisoblab chiqiladi:

Kategoriyani tanlang, SUM (natija_sum) AS Ctgry_Total
FROM (Tanlash summasi * narx AS natijasi_sum,
IIf (summa * narx<150,"малая",
IIf (summa * narx<300,"средняя","большая")) AS Category
FROM m_outcome) AS t
Turkum boʻyicha GURUHLASH;

SQL so'rovi Q045. DateAdd funktsiyasi berilgan sanaga kunlar, oylar yoki yillarni qo'shish va yangi sanani olish uchun ishlatiladi. Keyingi so'rov:
1) dt maydonidan sanaga 30 kun qo'shadi va dt_plus_30d maydonida yangi sanani ko'rsatadi;
2) dt maydonidagi sanaga 1 oy qo'shiladi va dt_plus_1m maydonida yangi sana ko'rsatiladi:

SELECT dt, dateadd ("d", 30, dt) AS dt_plus_30d, dateadd ("m", 1, dt) AS dt_plus_1m
m_daromaddan;

SQL so'rovi Q046. DateDiff funktsiyasi ikki sana o'rtasidagi farqni turli birliklarda (kunlar, oylar yoki yillar) hisoblab chiqadi. Quyidagi so'rov dt maydonidagi sana bilan kunlar, oylar va yillardagi joriy sana o'rtasidagi farqni hisoblab chiqadi:

SELECT dt, DateDiff ("d", dt, Date ()) AS oxirgi_kun,
DateDiff ("m", dt, Sana ()) AS oxirgi_oylar,
DateDiff ("yyyy", dt, Sana ()) AS last_years
m_daromaddan;

SQL so'rovi Q047. Tovar olingan kundan boshlab (m_daromad jadvali) joriy sanagacha bo'lgan kunlar soni DateDiff funksiyasi yordamida hisoblanadi va amal qilish muddati taqqoslanadi (m_mahsulot jadvali):


DateDiff ("d", dt, Sana ()) AS oxirgi_kunlar
FROM m_income AS a INNER JOIN m_product AS b
ON a.product_id = b.id;

SQL so'rovi Q048. Tovar olingan kundan boshlab joriy sanagacha bo'lgan kunlar soni hisoblab chiqiladi, so'ngra ushbu raqamning amal qilish muddatidan oshib ketishi tekshiriladi:

SELECT a.id, product_id, dt, lifedays,
DateDiff ("d", dt, Sana ()) AS oxirgi_kunlar, IIf (oxirgi_kunlar> hayot kunlari, "Ha", "Yo'q") AS date_expire
FROM m_daromad a INNER JOIN m_product b
ON a.product_id = b.id;

SQL so'rovi Q049. Tovar olingan kundan boshlab joriy sanagacha bo'lgan oylar soni hisoblanadi. month_so'nggi1 ustuni oylarning mutlaq sonini hisoblab chiqadi, month_last2 ustuni to'liq oylar sonini hisoblab chiqadi:

SELECT dt, DateDiff ("m", dt, Date ()) AS month_so'nggi1,
DateDiff ("m", dt, Sana ()) - iif (kun (dt)> kun (sana ()), 1,0) AS month_so'nggi2
m_daromaddan;

SQL so'rovi Q050. 2011 yil uchun kapitallashtirilgan tovarlar miqdori va miqdori bo'yicha har chorakda hisobot ko'rsatiladi:

SELECT kvartal, SUM (natija_sum) AS Jami
FROM (tanlash summasi * narx AS natija_sumi, oy (dt) AS m,
KALT (m<4,1,m<7,2,m<10,3,m>= 10.4) AS kvartal
FROM m_income WHERE yil (dt) = 2011) AS t
Kvartal bo'yicha GURUH;

Q051 so'rovi. Quyidagi so'rov foydalanuvchilar buyumni qabul qilish summasidan ko'proq miqdorda iste'mol qilinganligi to'g'risida tizimga ma'lumot kiritishlari mumkinmi yoki yo'qligini aniqlashga yordam beradi:

mahsulot_identifikatori, SUM (so‘m ichida) daromadlar_sumi AS, SUM (tashqi_sum) natija_sumi AS
FROM (mahsulot_identifikatorini SELECT, summa * narxi yig‘indi sifatida, 0 tashqarida
m_daromaddan
HAMMA ittifoq
mahsulot_identifikatorini tanlang, yig'indisi sifatida 0, yig'indisi sifatida summa * narxi
dan m_outcome) AS t
mahsulot_identifikatori boʻyicha GURUHLASH
SUM BO'LGAN (so'm ichida)

Q052 so'rovi. So'rov orqali qaytarilgan qatorlarni raqamlash turli usullar bilan amalga oshiriladi. Masalan, siz MS Access dasturining o'zidan foydalanib, MS Access da tayyorlangan hisobot satrlarini qayta raqamlashingiz mumkin. Shuningdek, VBA yoki PHP kabi dasturlash tillari yordamida raqamni qayta tiklashingiz mumkin. Biroq, ba'zida bu SQL so'rovining o'zida bajarilishi kerak. Shunday qilib, quyidagi so'rov m_income jadvalining qatorlarini ID maydoni qiymatlarining o'sish tartibiga ko'ra raqamlaydi:

COUNT (*) NI N, b.id, b.mahsulot_id, b.summa, b.narx sifatida tanlang
FROM m_income a INNER JOIN m_income b ON a.id<= b.id
GROUP BY b.id, b.mahsulot_id, b.summa, b.narx;

So'rov Q053. Mahsulotlar orasida birinchi beshlik sotuvlar miqdori bo'yicha ko'rsatiladi. Birinchi beshta yozuv TOP bayonoti yordamida ko'rsatiladi:

TOP 5, mahsulot_identifikatori, summa (summa * narx) yig'indisi sifatida tanlang
FROM m_outcome
mahsulot_identifikatori boʻyicha GURUHLASH
so'm bo'yicha BUYURTMA (summa * narx) DESC;

Q054 so'rovi. Sotish hajmi bo'yicha mahsulotlar orasida beshta yetakchi ko'rsatiladi va natijada qatorlar raqamlanadi:

COUNT (*) NI N, b.mahsulot_id, b.summa sifatida tanlang
FROM

FROM m_outcome GROUP BY product_id) AS a
ICHKI QO‘SHILMA
(mahsulot_identifikatorini tanlang, summa (summa * narx) AS summasi,
summa * 10000000 + mahsulot_identifikatori AS identifikatori
FROM m_outcome GROUP BY BY product_id) AS b
ON a.id> = b.id
GROUP BY b.mahsulot_id, b.summa
SON (*)<=5
COUNT BO'YICHA BUYURTDI (*);

Q055 so'rovi. Quyidagi SQL so'rovi MS Access SQL da COS, SIN, TAN, SQRT, ^ va ABS matematik funktsiyalaridan foydalanishni ko'rsatadi:

SELECT (m_income dan hisobni (*) tanlang) N sifatida, 3.1415926 pi, k,
2 * pi * (k-1) / N sifatida x, COS (x) COS_ sifatida, SIN (x) SIN_, TAN (x) TAN_ sifatida,
SQR (x) SQRT_ sifatida, x ^ 3 "x ^ 3", ABS (x) ABS_ sifatida
FROM (COUNT (*) TANI K AS
FROM m_income AS ICHKI JOIN m_income AS b ON a.id<=b.id
GRUP BY b.id) t;

Access DBMSda so'rovlarning ikki turi mavjud: QBE - namuna bo'yicha so'rov va SQL(Structured Query Language) — tuzilgan soʻrovlar tili. Namuna bo'yicha so'rov "So'rovlar dizayneri" oynasida maxsus so'rov shaklini to'ldirish orqali shakllantiriladi. SQL - so'rovlar dasturchilar tomonidan SQL ketma-ketligidan yaratiladi - ko'rsatmalar... SQL, qoida tariqasida, dasturchilar tomonidan "Yaratish" yorlig'idagi "So'rovlar konstruktori" buyrug'i bilan ochiladigan so'rov shakli bo'yicha shakllantiriladi va "View" menyusidan "SQL Mode" tanlanadi. SQL tili ma'lumotlar bilan ishlash uchun mo'ljallangan, ya'ni. relyatsion ma'lumotlar bazalarida ma'lumotlarni yaratish, o'zgartirish va boshqarish uchun.

Shuni ta'kidlash kerakki, ANSI-89 SQL va ANSI-92 SQL standartlariga mos keladigan bir nechta SQL so'rov usullari (ANSI-89 SQL va ANSI-92 SQL so'rovlari) mavjud.

Ko'rsatmalar SQL-dagi ma'lumotlar to'plamining tavsifini o'z ichiga oladi. SQL bayonotlari gaplardan iborat (SELECT, FROM, WHERE va boshqalar). Takliflar SQLda atamalar (operatorlar yoki buyruqlar, identifikatorlar, konstantalar va boshqalar)dan iborat. Bayonot bayonot bilan boshlanadi (TANISH, CREATE, INSERT, UPDATE, DELETE va hokazolardan biri) va nuqta-vergul bilan tugaydi. Asosiy SQL operatorlari SELECT, FROM va WHERE hisoblanadi.

Masalan, SQL bayonoti:
Talabalarni tanlash. Talabalar kodi
Talabalardan;
"SELECT Students.StudentCode" bandidan va "FROM Students" bandidan iborat.

SELECT bandi o'z ichiga oladi operator SELECT va identifikator"Talabalar. Talabalar kodeksi". Bu yerda StudentID maydonining toʻliq nomidan oldin maʼlumotlar bazasidagi Students jadvalining nomi qoʻyiladi. SELECT - kerakli ma'lumotlarni o'z ichiga olgan maydonni belgilaydi. FROM bandi FROM bandi va “Talabalar” identifikatoridan iborat. FROM - SELECT bandida ko'rsatilgan maydonlarni o'z ichiga olgan jadvalni belgilaydi.

Shuni ta'kidlash kerakki, SQLda so'rovni shakllantirishda uning sintaksisini hisobga olish kerak. SQL tilining sintaksisi ingliz tili sintaksisiga asoslangan bo'lsa-da, SQL tilining versiyalari sintaksisi turli DBMSlar uchun farq qilishi mumkin.

So'rovlarning bir nechta turlari mavjud: yozuvlarni tanlash, yangilash, qo'shish va o'chirish, o'zaro so'rov, jadvallarni yaratish va o'chirish, jadvalga qo'shilish va hokazo. Eng keng tarqalgani so'rovni olishdir. Tanlash so'rovlari jadvallarda mavjud bo'lgan foydalanuvchiga kerakli ma'lumotlarni tanlash uchun ishlatiladi. Ular faqat tegishli jadvallar uchun yaratilgan.

Access 2003 yoki 2007 DBMSda tanlash uchun SQL so'rovlarini ko'rish uchun faol so'rovlarni loyihalash oynasida View / SQL rejimi buyrug'ini bajarish kerak (1-rasm).


Guruch. 1.

Biz Access 2003 ma'lumotlar bazasidan o'quvchilar faoliyatining "Sinf = 5" mezoni bo'yicha ma'lumotlarni tanlash uchun SQL bayonotini (SELECT) olamiz (2-rasm).



Guruch. 2.

SELECT operatoridan quyidagicha (1-rasm) SQL tilidagi ma’lumotlar to‘plamini tavsiflaydi: SELECT – maydonlar nomlarini belgilaydi, oldidan ma’lumotlarni o‘z ichiga olgan jadvallar nomlari; FROM - jadvallarning asosiy maydonlari orqali jadvallar va ularning munosabatlarini belgilaydi (buning uchun INNER JOIN ... ON konstruktsiyasi qo'llaniladi), ular asosida ma'lumotlar tanlanadi; WHREME - maydonlarni tanlash shartlarini belgilaydi; ORDER BY - Talabalar jadvalining Familiya maydonining qiymatlarini o'sish tartibida saralash usulini belgilaydi (sukut bo'yicha, ortib borayotgan tartiblash amalga oshiriladi).

Ma'lumotlar bazasidan ma'lumotlarni olish bo'yicha ko'rsatmalardan kelib chiqadigan bo'lsak, SQL tili ma'lumotlar bazasidan nimani olish kerakligini tavsiflaydi, shu bilan birga bajarish ma'lumotlar bazasiga beriladi, chunki SQL tilida ma'lumotlarning bajarilishini boshqarishning o'ziga xos vositalari yo'q. dastur.