JavaRush /Java blogi /Random-UZ /Biz ma'lumotlar bazalarini va SQL tilini tahlil qilamiz. ...

Biz ma'lumotlar bazalarini va SQL tilini tahlil qilamiz. (4-qism - uy vazifasini tekshirish) - "A dan Zgacha Java loyihasi"

Guruhda nashr etilgan
Java loyihasini yaratish haqidagi turkum maqola (boshqa materiallarga havolalar oxirida). Uning maqsadi - asosiy texnologiyalarni tahlil qilish, natijada telegram botini yozish. Oldingi maqolalar va uy vazifalarini ma'lumotlar bazalari bo'yicha tahlil qilish: 1 , 2 , 3 . Sabr va sabr-toqatga ega bo'lgan har bir kishiga, to'rtinchi maqola uchun men bilan birga bo'lgan har bir kishiga - yaxshi. Ular aytganidek, yurgan yo'lni o'zlashtira oladi. Bu hafta Ma'lumotlar bazalari bo'yicha yakuniy maqola chiqariladi, unda biz munosabatlar va qo'shilish turlari haqida gaplashamiz . Ammo yangi ma'lumotlar bilan shug'ullanishdan oldin, keling, uy vazifamizni tekshirib ko'raylik ... Men o'zimni haqiqatan ham o'qituvchi kabi his qildim. Menga g'azablanmang: menda pedagogik ma'lumot yo'q, bu aniq. O'tgan hafta masofadan boshqarish pultini batafsil tekshirish materialning asosiy qismini egallaganligi sababli, men uy vazifamni tahlil qilish va yangi materialni ko'rib chiqishni ikki qismga bo'lishga qaror qildim."A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  4-qism - uy vazifasini tekshirish - 1

Aslida, uy vazifasini tahlil qilish

PD bilan shug'ullanadigan va bu haqda gapiradigan odamlar borligidan xursandman. Bu ajoyib! Men iloji boricha aminmanki, bilimlarni mustahkamlamasdan oddiygina o'qish hech qayerga olib boradigan yo'ldir. Shuning uchun, qilgan yoki harakat qilgan har bir kishi hurmat qiladi. Sizga topshiriqlarning shartlarini eslatib o'taman:
  1. HAVING operatorini tushuning va bizning misolimizdagi jadvallar uchun namuna so'rovini yozing. Agar siz aniqroq qilish uchun ba'zi maydonlar yoki ko'proq qiymatlarni qo'shishingiz kerak bo'lsa, ularni qo'shing. Agar kimdir xohlasa, sharhlaringizga misol yechimingizni yozing - shuning uchun vaqtim bo'lsa, men ham tekshirib ko'raman.
  2. UI orqali ma'lumotlar bazasi bilan ishlash uchun MySQL Workbench dasturini o'rnating. O'ylaymanki, biz allaqachon konsolda ishlash bo'yicha yetarlicha amaliyotga ega bo'ldik. Ma'lumotlar bazasiga ulaning. Agar siz ma'lumotlar bazasi bilan ishlash uchun boshqa narsadan foydalansangiz, bu vazifani o'tkazib yuboring. Bu erda va bundan keyin men faqat MySQL Workbench-dan foydalanaman.
  3. Bizning ma'lumotlarimizdan foydalanib, kvitansiya so'rovlarini yozing:
    1. eng kichik/eng aholi yashaydigan mamlakat;
    2. mamlakat aholisining o'rtacha soni;
    3. ismlari "a" bilan tugaydigan mamlakatlar aholisining o'rtacha soni;
    4. aholisi to'rt milliondan ortiq bo'lgan mamlakatlar soni;
    5. aholi sonining kamayishi bo'yicha mamlakatlarni saralash;
    6. mamlakatlarni tabiiy tartibda nomlari bo'yicha tartiblang.

Keling, HAVING haqida gapiraylik

Having operatorini bilish sizga SQL bilan bog'liq muammolar yuzaga keladigan bir nechta intervyudan o'tishga yordam beradi. Shuning uchun uni tushunish juda muhimdir. Shunday qilib, siz funktsiyalarni yig'ish uchun shartlardan foydalana olmaysiz (SUM, MIN, MAX, AVG). Bundan tashqari, HAVING guruhlangan maydonlar uchun ishlatiladi. Bu nima degani? Misol uchun, agar biz shaharlarda o'rtacha aholisi 50 000 aholidan ortiq bo'lgan mamlakatlarni olishni istasak, HAVING dan foydalanmasdan qilolmaymiz. Men tushunganimdek, bu yig'ish WHERE bayonoti bajarilgandan so'ng sodir bo'lganligi sababli amalga oshiriladi va unga keyinchalik hisoblab chiqiladigan yig'ish qiymatlarini qo'shish mumkin emas. Agar hozirgacha mening fikrlarim tushunchaga ko'p qo'shmasa ham, siz buni shunchaki haqiqat sifatida qabul qilishingiz va u bilan ketishingiz mumkin. Dasturlashda ko'pincha shunday bo'ladiki, agar biror narsa bir lahzada noaniq bo'lsa, bu miya uni hali hazm qilmaganligini anglatishi mumkin. Bu fikr bilan uxlang va ertasi kuni hamma narsa aniq bo'ladi.

MySQL Workbench o'rnatilmoqda

Bu erda va keyin men so'rovlar uchun Workbench-dan foydalanaman. O'rnatish va ma'lumotlar bazasiga ulanishni yaratish uchun sizga nima kerakligini ko'rsataman. Bu Oracle mahsulotidir, shuning uchun siz ularning veb-saytiga o'ting va kerakli versiya va operatsion tizimni tanlashingiz kerak. Buni amalga oshirish uchun ushbu havolaga o'ting : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 2Bu erda siz kerakli operatsion tizimni tanlashingiz mumkin. Yuklab olish ni bosing , lekin yuklab olish o'rniga biz ushbu oynani ko'ramiz: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 3Yo'qolmang, shunchaki " Yo'q rahmat, faqat yuklab olishimni boshlang" deb nomlangan tugmani qidiring va yuklab olish boshlanadi. Nega ular buni qilyapti? Ehtimol, ko'proq odamlar ular bilan ro'yxatdan o'tishlari uchun bu biz uchun muhim emas. Muvaffaqiyatli yuklab olingandan so'ng, o'rnatish faylini ishga tushiring. MacOS-da bu shunday ko'rinadi: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 4shunchaki belgini sudrab olib boring va shu bilan o'rnatish tugallandi. MySQL-ni o'rnatish kabi qiyin emas, to'g'rimi? Yoki biz bunga ko'nikib qoldik va tajribali bo'ldik;) Bu vazifaning ikkinchi qismi ma'lumotlar bazasiga ulanishni o'rnatishdir. Buning uchun nima kerak? MySQL Connections yonidagi ortiqcha belgisini bosing: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 5Ko'rsatilgan oynada kerakli ma'lumotlarni kiriting:
  • Ulanish nomi - bizning ulanishimiz nomi. Keyinchalik identifikatsiya qilish bilan bog'liq muammolar bo'lmasligi uchun ismlarni iloji boricha aniq yozing. Men bu ulanishga JRTB_DB nomini beraman ;
  • Xost nomi - allaqachon mahalliy 127.0.0.1 (aka localhost) sifatida o'rnatiladi . Bizning holatda, hech narsani o'zgartirish kerak emas, chunki ma'lumotlar bazasi kompyuterda o'rnatilgan, lekin agar ma'lumotlar bazasi boshqa joyda bo'lsa, xostni (ma'lumotlar bazasi ishlayotgan mashinaning IP) mos ravishda o'zgartirish kerak;
  • Foydalanuvchi nomi - agar kerak bo'lsa, foydalanuvchini ham belgilashingiz mumkin. Agar siz ushbu kalitga hech narsa qo'shmagan bo'lsangiz, uni o'zgarishsiz qoldiring;
  • Parol - Keychainda saqlash tugmasini bosing va o'zingiz uchun o'rnatgan parolni aniq belgilang. Men hamma narsani oddiy qoldirdim - root .
Ulanishning ishlashini tekshirish uchun bosing Ulanishni sinab ko'ring : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 6Xo'sh, agar hamma narsa to'g'ri bajarilgan bo'lsa, natija uzoq kutilmaydi: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 7Endi bizda ma'lumotlar bazasida saqlangan ulanish mavjud va biz ulanishni yaratib, to'ldirishimiz shart emas. har safar nom va parolda. Va bu baxt shunday ko'rinadi: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 8Biz yangi yaratilgan ulanishga kiramiz va so'rov oynasini ko'ramiz. Hammasi to'g'ri ekanligiga ishonch hosil qilish uchun keling, ma'lumotlar bazalari ro'yxatini tekshirib ko'raylik, o'zimiznikiga o'tamiz va shaharlar haqidagi barcha ma'lumotlarni olamiz: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 9Va bu erda biz kerak bo'lgan narsalar uchun kart-blansh olamiz. Birinchi bo'lim biz kiritgan skript uchun javobgardir. Keyinchalik, Natijalar panjarasida biz skriptdagi oxirgi operatsiya natijasini ko'ramiz. Va Action Output operatsiyalar ro'yxatini va uning natijasini ko'rsatadi. Juda foydali narsa, men sizga aytmoqchiman: uning yordami bilan siz ma'lum skriptlarning bajarilish tezligini kuzatishingiz mumkin. Nima uchun bu muhim? Ilovada topshiriqni bajarish tezligidagi eng keng tarqalgan muammolardan biri ma'lumotlar bazasida so'rovlarni bajarish tezligidir. Bu erda siz ularni tez va qulay tarzda qo'lda tekshirishingiz mumkin.

Biz kerakli so'rovlarni yozamiz

Bizda atigi 7 ta soʻrov bor, ketaylik!

  1. Aholi eng ko'p bo'lgan mamlakatni oling. Bu erda siz ayyorlik bilan borishingiz va bir nechta marshrutlarni tanlashingiz mumkin:

  • Mamlakat jadvaliga ko'ra

Keyin biz so'rovimizni aholi soni bo'yicha saralashimiz va faqat bitta yozuvni olishimiz kerak. Buning uchun skript oxiriga LIMIT operatorini qo'shishingiz va kerakli miqdorni belgilashingiz kerak : $ SELECT * FROM country ORDER BY BY aholi DESC LIMIT 1;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 10

  • Shahar jadvaliga ko'ra

Bu erda hamma narsa qiziqroq, chunki so'rov yanada murakkab, ammo qiziqarliroq bo'ladi. Qo‘shilish haqida hali hech qanday tasavvurga ega emasmiz, shuning uchun biz faqat mamlakat identifikatorini olishimiz mumkin: $ SELECT country_id, SUM(aholi) FROM city GROUP BY BY country_id ORDER BY BY SUM(aholi) DESC LIMIT 1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 11Bu erda biz ajoyib ish qildik - biz har bir mamlakatdagi barcha ma'lum shaharlar aholisining yig'indisini to'pladik, shu summa bo'yicha tartiblandi va birinchi elementni oldik. Xo'sh, bu ajoyibmi? Men xursandman :D Shundan so'ng siz darhol so'rov gurusi kabi his qilasiz... (uzoq emas, albatta))

  1. Eng kichik mamlakatni oling. Bu erda siz ayyorlik bilan borishingiz va bir nechta marshrutlarni olishingiz mumkin

Bunday holda, hamma narsa xuddi shunday bo'ladi. Yagona farq shundaki, saralash teskari bo'ladi - bu hammasi. Shuning uchun men shunchaki so'rovlarni yozaman:

  • Shahar jadvaliga ko'ra

$ TANGLASH mamlakat_identifikatori, SUM(aholi) SAHARDAN GURUHDAN MAMLAKAT_ID BOʻYICHA BUYURTDIY SUM(aholi) BOʻYICHA LIMIT 1;

  • Mamlakat jadvaliga ko'ra

$ TANGLASH * DAVLATDAN TARTIB BO'YICHA aholi LIMIT 1; Va natijani o'zingiz ko'ring!

  1. Mamlakatdagi o'rtacha aholi soni

Bu yerda yana texnik spetsifikatsiya negadir to'g'ri emas, go'yo uni menejer yozgandek... Nega men bunday qarorga keldim? Chunki qaysi stolda ishlash kerakligi aniq emas. Ammo bu normaldir: hamma narsa darhol aniq va tushunarli bo'ladigan vazifalar yo'q. Shuning uchun, siz topshiriqlarni diqqat bilan o'qib chiqishingiz kerak va agar sizda savollar bo'lsa, ularni darhol so'rang! To'g'ri, izoh. Ma'lumotlar bazasida mavjud bo'lgan ma'lumotlarni hisobga olgan holda, biz shaharlardagi ma'lumotlardan foydalangan holda qidiramiz. Buning uchun quyidagi so'rovni yozing: $ SELECT country_id, AVG(population) FROM city GROUP BY BY country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 12Bu yerda hammasi oddiy: biz AVG funksiyasidan foydalanamiz va shahar yozuvlarimizni mamlakatlar bo‘yicha guruhlaymiz.

  1. Ismlari "a" bilan tugaydigan mamlakatlardagi o'rtacha aholi soni

Bu erda so'rov bo'yicha ozgina o'zgarishlar bo'ladi. Guruhlashdan oldin ismlar bo'yicha filtrlashni qo'shishimiz kerak. Men ushbu maqolani nashr etishdan oldin barcha talabalar singari uy vazifamni bajaraman va bu muammoni birlashmasdan hal qilib bo'lmasligini tushunaman. Nega? Chunki davlat identifikatoridan tashqari uning ismini ham olishimiz kerak. Va bu ikkita jadvalni bitta yozuvga birlashtirmasdan amalga oshirilmaydi. Shuning uchun, men bu vazifani bajaraman, albatta, lekin bu mening jambim...))) Men so'rovda LIKE tugmasidan foydalanib, vazifa o'ylab topmoqchi edim...) $ SELECT ci.country_id, AVG(ci.population) ) FROM city ci INNER JOIN country co ON ci.country_id = co.id WHERE co.name LIKE "%a" GROUP BY BY country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 13Bu erda nima bo'ldi? Birinchidan, biz mamlakat_id kaliti yordamida shahar va mamlakat jadvallaridagi yozuvlarni birlashtirdik, ular “a” bilan tugashi uchun mamlakat nomlari bo‘yicha filtrlangan va shundan keyingina country_id bo‘yicha guruhlangan.

  1. Aholisi to'rt milliondan ortiq mamlakatlar soni

Bu yerda biz faqat COUNT funksiyasidan foydalanishimiz va aholi soni bo‘yicha filtrlashni qo‘shishimiz kerak: $ SELECT COUNT(*) dan WHERE aholisi > 4000000; Natijada 3 ta davlat borligini bilib oldik, bu to'g'rimi? Ha, faqat Moldova bu bosqichdan o'ta olmaydi.

  1. Aholi sonining kamayishi bo'yicha mamlakatlarni tartiblang

Buning uchun biz allaqachon bilgan ORDER BY operatoridan foydalanishimiz kerak. Ammo shuni yodda tutingki, sukut bo'yicha tartiblash tabiiy tartibda bo'ladi. Raqamlar uchun bu o'sish tartibida tartiblanganligini bildiradi, satrlar uchun birinchi belgilardan boshlab tartiblanganligini bildiradi. Agar bizga kamayib borayotgan tartib kerak bo'lsa, bizga tabiiyning teskarisi kerak: $ SELECT * FROM country ORDER BY Population DESC;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 14

  1. Mamlakatlarni tabiiy tartibda nomlari bo'yicha tartiblang

Bu erda tabiiy tartib nima ekanligini bilish foydali bo'ladi. Bu birlamchi bo'lgani uchun, bu biz uchun pirojnoe: $ SELECT * FROM country ORDER BY BY;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 15

Chiqish o'rniga

Shunday bo'ladiki, uy vazifasi yechimining hajmi juda katta bo'ladi, shuning uchun biz istisno qilamiz: men ushbu maqolani chek bilan nashr etaman va juma kuni men ulanishlar va qo'shilishlar bilan yangi materialni nashr etaman. O'qiganingiz uchun barchaga rahmat. Jumagacha!

Seriyadagi barcha materiallar ro'yxati ushbu maqolaning boshida.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION