JavaRush /Блоги Java /Random-TG /Мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем. (Қисми...
Roman Beekeeper
Сатҳи

Мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем. (Қисми 4 - санҷиши вазифаи хонагӣ) - "Лоиҳаи Java аз А то Я"

Дар гурӯҳ нашр шудааст
Мақола аз як силсила дар бораи эҷоди лоиҳаи Java (пайвандҳо ба дигар маводҳо дар охир мебошанд). Ҳадафи он таҳлor технологияҳои калидӣ мебошад, ки натиҷааш навиштани боти телеграмма мебошад. Мақолаҳои қаблӣ ва таҳлor корҳои хонагӣ дар пойгоҳи додаҳо: 1 , 2 , 3 . Ба ҳар касе, ки сабру тоқат дошт, ба ҳар касе, ки ин мақолаи чорумро бо ман аз сар гузаронидааст, офарин. Чунон ки мегуянд, рохравро азхуд карда метавонад. Дар ин ҳафта мақолаи ниҳоӣ дар бораи Пойгоҳи додаҳо нашр карда мешавад, ки дар он мо дар бораи намудҳои муносибатҳо ва пайвастшавӣ сӯҳбат хоҳем кард . Аммо пеш аз он ки мо бо маълумоти нав сару кор кунем, биёед вазифаи хонагии худро тафтиш кунем ... Ман дар ҳақиқат худро муаллим ҳис мекардам. Аз ман ғазаб накунед: ман маълумоти педагогӣ надорам, ин бешубҳа. Азбаски ҳафтаи гузашта тафтиши муфассали пульти пульт ҳиссаи асосии маводро гирифт, ман қарор додам, ки таҳлor вазифаи хонагӣ ва баррасии маводи навро ба ду қисм тақсим кунам."Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 1

Дар асл, таҳлor вазифаи хонагӣ

Ман бешубҳа шодам, ки одамоне ҳастанд, ки PD мекунанд ва дар бораи он сӯҳбат мекунанд. Ин хуб аст! Ман то ҳадди имкон итминон дорам, ки танҳо хондан бидуни таҳкими дониш роҳ ба ҳеҷ ҷое нест. Аз ин рӯ, ҳар касе, ки кард ё кӯшиш кард, - эҳтиром. Ичозат дихед ба шумо шартхои супоришхоро хотиррасон намоям:
  1. Оператори HAVING- ро фаҳмед ва аз мисоли мо дархости намунавӣ барои ҷадвалҳо нависед. Агар ба шумо лозим аст, ки баъзе майдонҳо ё арзишҳои бештарро илова кунед, то равшантар шавад, онҳоро илова кунед. Агар касе бихоҳад, ҳалли намунаи худро дар шарҳҳо нависед - то ман ҳам метавонам онро тафтиш кунам, агар вақт дошта бошам.
  2. MySQL Workbench -ро насб кунед, то бо пойгоҳи додаҳо тавассути UI кор кунад. Ман фикр мекунам, ки мо аллакай таҷрибаи кофӣ аз консол кор кардаем. Ба базаи маълумот пайваст шавед. Агар шумо барои кор бо пойгоҳи дода чизи дигареро истифода баред, озодона ин вазифаро гузаред. Дар ин ҷо ва минбаъд ман танҳо MySQL Workbench -ро истифода хоҳам кард.
  3. Бо истифода аз маълумоти мо дархостҳо барои гирифтани маълумотро нависед:
    1. хурдтарин/аз ҳама сераҳолитарин кишвар;
    2. шумораи миёнаи сокинон дар кишвар;
    3. шумораи миёнаи сокинон дар кишварҳое, ки номашон бо “а” тамом мешавад;
    4. шумораи мамлакатхое, ки ахолиашон аз чор миллион зиёд аст;
    5. кишварҳоро аз рӯи камшавии шумораи аҳолӣ ҷудо кунед;
    6. кишварҳоро аз рӯи ном аз рӯи тартиби табиӣ ҷудо кунед.

Биёед дар бораи ДОШТА гап занем

Донистани оператори Having метавонад ба шумо кӯмак кунад, ки зиёда аз як мусоҳибаро гузаронед, ки дар он ҷо мушкилоти SQL вуҷуд дорад. Аз ин рӯ, фаҳмидани он хеле муҳим аст. Ҳамин тавр мешавад, ки шумо шартҳоро барои ҷамъбасти вазифаҳо истифода карда наметавонед (SUM, MIN, MAX, AVG). Илова бар ин, HAVING барои майдонҳое, ки гурӯҳбандӣ шудаанд, истифода мешавад. Ин чӣ маъно дорад? Масалан, агар мо мехоҳем, ки кишварҳоеро ба даст орем, ки шумораи миёнаи аҳолии шаҳрҳо аз 50 000 нафар зиёд аст, мо наметавонем бидуни истифода аз HAVING кор кунем. Тавре ки ман мефаҳмам, ин ба он сабаб анҷом дода мешавад, ки ҷамъкунӣ пас аз иҷро шудани изҳороти WHERE ба амал меояд ва илова кардани арзишҳои ҷамъбастӣ ба он, ки баъдтар ҳисоб карда мешаванд, ғайриимкон аст. Ҳатто агар то ба ҳол андешаҳои ман ба фаҳмиши зиёд илова накунанд, шумо метавонед инро ҳамчун далел қабул кунед ва бо он равед. Дар барномасозӣ, аксар вақт рӯй медиҳад, ки агар чизе дар як лаҳза норавшан бошад, ин маънои онро дорад, ки майна онро ҳанӯз ҳазм накардааст. Бо ин фикр хоб кунед, фардо ҳама чиз равшантар мешавад.

Насб кардани MySQL Workbench

Дар ин ҷо ва минбаъд ман Workbench-ро барои дархостҳо истифода хоҳам кард. Ман ба шумо нишон медиҳам, ки барои насб кардан ва эҷод кардани пайвастшавӣ ба пойгоҳи додаҳо чӣ лозим аст. Ин маҳсулот аз Oracle аст, бинобар ин ба шумо танҳо лозим аст, ки ба вебсайти онҳо равед ва version ва системаи амалиётии дилхоҳатонро интихоб кунед. Барои ин, ин истинодро пайгирӣ кунед : "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 2Дар ин ҷо шумо метавонед маҳз системаи оператсионии ба шумо лозимиро интихоб кунед. Зеркашӣ кунед , аммо ба ҷои зеркашӣ мо ин равзанаро мебинем: "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 3Гум нашавед, танҳо тугмаи " Не ташаккур, танҳо зеркашии маро оғоз кунед" -ро ҷустуҷӯ кунед ва зеркашӣ оғоз мешавад. Чаро онҳо ин корро мекунанд? Шояд барои он ки шумораи бештари одамон дар онҳо сабти ном шаванд, ин барои мо муҳим нест. Пас аз зеркашӣ бомуваффақият, файли насбкуниро иҷро кунед. Дар MacOS ин чунин ба назар мерасад: "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 4Танҳо нишонаро кашед ва ҳамин тавр, насбкунӣ ба анҷом расид. Мисли насби худи MySQL он қадар мушкил нест, дуруст? Ё мо танҳо ба он одат кардаем ва бештар таҷрибадор шудаем;) Қисми дуюми ин вазифа барқарор кардани пайвастшавӣ ба базаи мо мебошад. Барои ин чй лозим? Аломати плюсро дар паҳлӯи Пайвастҳои MySQL пахш кунед: "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 5Дар равзанаи пайдошуда маълумоти заруриро ворид кунед:
  • Номи пайвастшавӣ - номи пайвасти мо. Номҳоеро нависед, ки то ҳадди имкон возеҳ бошанд, то дертар дар шиносоӣ мушкorе ба вуҷуд наояд. Ман ба ин пайваст номи JRTB_DB медиҳам ;
  • Номи мизбон - аллакай ҳамчун маҳаллӣ 127.0.0.1 (aka localhost) таъин карда мешавад . Дар ҳолати мо ҳеҷ чизро тағир додан лозим нест, зеро базаи маълумот дар компютер насб карда шудааст, аммо агар базаи маълумот дар ҷои дигар бошад, пас хост (ip-и мошине, ки базаи маълумот дар он кор мекунад) бояд мувофиқан тағир дода шавад;
  • Номи корбар - шумо инчунин метавонед корбари худро дар ҳолати зарурӣ муайян кунед. Агар шумо дар ин калид чизе илова накарда бошед, онро бетағйир гузоред;
  • Рамз - клик кунед Захира дар Keychain ва гузарвожаеро, ки барои худ муқаррар кардаед, муқаррар кунед. Ман ҳама чизро оддӣ гузоштам - root .
Барои санҷидани он, ки оё пайвастшавӣ кор мекунад, клик кунед Пайвастшавиро санҷед : "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 6Хуб, агар ҳама чиз дуруст анҷом дода шуда бошад, натиҷа дер нахоҳад омад: "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 7Ҳоло мо дар пойгоҳи додаҳо пайвасти захирашуда дорем ва ба мо лозим нест, ки пайвастшавӣ эҷод кунем ва пур кунем. дар ном ва парол ҳар вақт. Ва ин хушбахтӣ чунин хоҳад буд: "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 8Мо ба пайвасти навтаъсис ворид мешавем ва равзанаи дархостро мебинем. Барои боварӣ ҳосил кардан, ки ҳама чиз дуруст аст, биёед рӯйхати пойгоҳи додаҳоро тафтиш кунем, ба мо равем ва ҳама маълумотро дар бораи шаҳрҳо гирем: "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 9Ва дар ин ҷо мо барои он чизе, ки ба мо лозим аст, карт-бланш мегирем. Қисми аввал барои скрипте, ки мо ворид мекунем, масъул аст. Минбаъд, дар Шабакаи Натиҷа , мо натиҷаи амалиёти охиринро дар скрипт мебинем. Ва Action Output рӯйхати амалиётҳо ва натиҷаи онро нишон медиҳад. Як чизи хеле муфид, ман мехоҳам ба шумо бигӯям: бо ёрии он шумо метавонед суръати иҷрои баъзе скриптҳоро назорат кунед. Чаро муҳим аст? Яке аз мушкилоти маъмултарин дар суръати иҷрои вазифаҳо дар барнома суръати иҷрои дархостҳо дар базаи маълумотҳо мебошад. Дар ин ҷо шумо метавонед онҳоро зуд ва ба осонӣ дастӣ тафтиш кунед.

Мо дархостҳои заруриро менависем

Мо танҳо 7 дархост дорем, то иҷро кунем, биёед!

  1. Кишвари сераҳолитаринро гиред. Дар ин ҷо шумо метавонед маккорона равед ва якчанд роҳҳоро интихоб кунед:

  • Мувофики чадвали мамлакат

Он гоҳ мо танҳо бояд дархости худро аз рӯи аҳолӣ ҷудо кунем ва танҳо як сабтро гирем. Барои ин ба шумо лозим аст, ки дар охири скрипт оператори LIMIT-ро илова кунед ва миқдори заруриро муайян кунед: $ SELECT * АЗ кишвар ORDER BY BY Population DESC LIMIT 1;"Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 10

  • Мувофики чадвали шахр

Дар ин ҷо ҳама чиз ҷолибтар аст, зеро дархост мураккабтар, аммо ҷолибтар хоҳад буд. Азбаски мо то ҳол дар бораи ҳамроҳшавӣ тасаввурот надорем, мо метавонем танҳо ID-и кишварро гирем: $ SELECT country_id, SUM(population) АЗ GROUP BY country_id ТАРТИБ БА СУМ(популяция) DESC LIMIT 1; "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Қисми 4 - Санҷиши вазифаи хонагӣ - 11Дар ин ҷо мо як кори олиҷаноб кардем - мо маблағи аҳолии ҳама шаҳрҳои маълуми ҳар кишварро ҷамъоварӣ кардем, аз рӯи ин маблағ ҷудо карда, элементи якумро гирифтем. Хуб, ин бузург аст? Ман шодам :D Пас аз ин шумо дарҳол худро ҳамчун як гуруи пурсиш эҳсос мекунед... (албатта дер нагузашта))

  1. Хурдтарин кишварро гиред. Дар ин ҷо шумо метавонед маккорона равед ва якчанд роҳро пеш гиред

Дар ин ҳолат, ҳама чиз комилан ҳамон хоҳад буд. Ягона тафовут дар он аст, ки ҷудокунӣ баръакс мешавад - ин ҳама. Аз ин рӯ, ман танҳо дархостҳо менависам:

  • Мувофики чадвали шахр

$ ИНТИХОБ КАРДАНИ кишвар_id, СУМ(ањолї) АЗ ГУРУХИ шањр АЗ РУИ ИДМ кишвар ТАРТИБ АЗ РУИ СУМ(ањолї) ЛИМИТИ 1;

  • Мувофики чадвали мамлакат

$ ИНТИХОБ * АЗ КИШВАР ТАРТИБ АЗ РУИ ахоли ЛИМИТИ 1; Ва натиҷаашро худатон бубинед!

  1. Шумораи миёнаи сокинон дар мамлакат

Дар ин чо боз спецификацияи техникй ба гунае дуруст нест, гуё мудир навишта бошад... Барои чй ман ин тавр карор додам? Зеро дар кадом миз кор кардан маълум нест. Аммо ин муқаррарӣ аст: ягон вазифае нест, ки дар он ҳама чиз фавран равшан ва фаҳмо бошад. Аз ин рӯ, шумо бояд супоришҳоро бодиққат хонед ва агар шумо саволе дошта бошед, фавран онҳоро пурсед! Дуруст аст, эрод. Бо назардошти маълумоте, ки мо дар база дорем, мо бо истифода аз маълумотҳои шаҳрҳо ҷустуҷӯ мекунем. Барои ин дархости зеринро нависед: $ SELECT country_id, AVG(популяция) АЗ шаҳр GROUP BY country_id; "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Кисми 4 — тафтиши вазифаи хонагй — 12Ин ҷо оддӣ аст: мо функсияи AVG-ро истифода мебарем ва сабтҳои шаҳрии худро аз рӯи кишвар гурӯҳбандӣ мекунем.

  1. Шумораи миёнаи сокинон дар кишварҳое, ки номашон бо “а” тамом мешавад

Бо дархост дар ин ҷо каме тағирот хоҳад буд. Мо бояд пеш аз гурӯҳбандӣ филтрро аз рӯи номҳо илова кунем. Пеш аз интишори ин мақола ман мисли ҳама донишҷӯён вазифаи хонагии худро иҷро мекунам ва мефаҳмам, ки ин масъаларо бе ҳамроҳшавӣ ҳал кардан мумкин нест. Чаро? Зеро ба ҷуз аз ID-и кишвар, мо бояд номи ӯро низ гирем. Ва ин корро бидуни пайваст кардани ду ҷадвал ба як сабт кардан мумкин нест. Аз ин рӯ, ман ин вазифаро албатта иҷро мекунам, аммо ин ҷомаи ман аст...))) Ман мехостам бо истифода аз LIKE дар дархост як кор биёрам...) $ SELECT ci.country_id, AVG(ci.population) ) АЗ шаҳр ci INTER JOIN country co ON ci.country_id = co.id КУҶО CO.name МИСЛИ "%a" GROUP BY country_id; "Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Кисми 4 — тафтиши вазифаи хонагй — 13Дар ин ҷо чӣ шуд? Аввалан, мо сабтҳоро аз ҷадвалҳои шаҳрҳо ва кишварҳо бо истифода аз калиди хориҷии country_id ҳамроҳ кардем, ки аз рӯи номҳои кишварҳо филтр карда шуд, то ки онҳо бо “a” анҷом шаванд ва танҳо баъд аз рӯи country_id гурӯҳбандӣ карда шуданд.

  1. Шумораи мамлакатхое, ки ахолиашон аз чор миллион зиёд аст

Дар ин ҷо ба мо танҳо лозим аст, ки функсияи COUNT-ро истифода барем ва филтрро аз рӯи аҳолӣ илова кунем: $ SELECT COUNT(*) аз кишваре, ки аҳолӣ > 4000000 аст; Дар натича мо фахмидем, ки 3 чунин давлат мавчуд аст Оё ин дуруст аст? Оре, танхо Молдавия аз ин марра гузашта наметавонад.

  1. Кишварҳоро аз рӯи камшавии шумораи аҳолӣ ҷудо кунед

Барои ин мо бояд оператори ORDER BY-ро, ки аллакай медонем, истифода барем. Аммо дар хотир доред, ки ба таври нобаёнӣ ҷудокунӣ бо тартиби табиӣ аст. Барои рақамҳо ин маънои онро дорад, ки он бо тартиби афзоиш мураттаб карда шудааст, барои сатрҳо ин маънои онро дорад, ки он аз ҳарфҳои аввал ҷудо карда мешавад. Агар ба мо навъи пастшаванда лозим бошад, ба мо баръакси натуравӣ лозим аст: $ SELECT * FROM country ORDER BY People DESC;"Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Кисми 4 — тафтиши вазифаи хонагй — 14

  1. Кишварҳоро аз рӯи ном бо тартиби табиӣ ҷудо кунед

Дар ин ҷо дониш дар бораи чӣ будани тартиботи табиӣ муфид хоҳад буд. Азбаски он пешфарз аст, он барои мо як пораи торт аст: $ SELECT * АЗ кишвар ТАРТИБ БО ном;"Лоиҳаи Java аз A то Я": мо пойгоҳи додаҳо ва забони SQL-ро таҳлил мекунем.  Кисми 4 — тафтиши вазифаи хонагй — 15

Ба чои баромад

Ҳамин тавр мешавад, ки андозаи ҳалли вазифаи хонагӣ хеле калон хоҳад буд, бинобар ин мо истисно мекунем: Ман ин мақоларо бо чек нашр мекунам ва рӯзи ҷумъа ман маводи навро бо пайвандҳо ва пайвастҳо нашр мекунам. Ташаккур ба ҳама барои хондан. То ҷумъа!

Рӯйхати ҳамаи маводҳои силсила дар аввали ин мақола аст.

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION