Java долбоорун түзүү жөнүндө бир катар макала (башка материалдарга шилтемелер аягында). Анын максаты негизги технологияларды талдоо, натыйжасы телеграмма бот жазуу болуп саналат. Мурунку макалалар жана маалымат базалары боюнча үй тапшырмаларын талдоо: 1 , 2 , 3 . Сабырдуулук жана чыдамкайлык көрсөткөндөрдүн баарына, төртүнчү макалада мени менен бирге жүргөндөрдүн баарына - молодец. Айткандай, баскан жолду өздөштүрүп алат. Ушул жумада Маалыматтар базалары боюнча акыркы макала жарыкка чыгат, анда биз мамилелердин жана кошулуунун түрлөрү жөнүндө сүйлөшөбүз . Бирок жаңы маалымат менен алектенерден мурун, үй тапшырмабызды текшерип көрөлү... Мен өзүмдү чындап эле мугалимдей сездим. Мага ачууланбаңыз: менин педагогикалык бorмим жок, бул анык. Өткөн жумада пульттун деталдуу текшерүүсү материалдын негизги үлүшүн алгандыктан, мен үй тапшырмамды талдоону жана жаңы материалды карап чыгууну эки бөлүккө бөлүүнү чечтим.
Андан кийин биз сурамыбызды калк боюнча иреттеп, бир гана жазууну алышыбыз керек. Бул үчүн, скрипттин аягына LIMIT операторун кошуп , керектүү санды көрсөтүшүңүз керек: $ SELECT * FROM country ORDER BY BY калк DESC LIMIT 1;
Бул жерде баары кызыктуураак, анткени суроо-талап татаалыраак, бирок андан да кызыктуу болот. Бизде кошулуу тууралуу азырынча эч кандай түшүнүк жок болгондуктан, биз өлкөнүн ID гана ала алабыз: $ SELECT country_id, SUM(калк) FROM city GROUP BY BY country_id ORDER BY SUM(калк) DESC LIMIT 1; Бул жерде биз сонун нерсе жасадык - биз ар бир өлкөнүн бардык белгилүү шаарларынын калкынын суммасын чогултуп, ушул сумма боюнча иреттеп, биринчи элементти алдык. Мейли, сонунбу? Мен сүйүндүм :D Ушундан кийин өзүңүздү дароо суроо-жоопчудай сезесиз... (албетте көпкө эмес))
Бул учурда, баары так ошондой болот. Бир гана айырмасы, сорттоо тескери болот - ушунча. Ошондуктан, мен жөн гана өтүнүчтөрдү жазам:
$ өлкөнүн_id, СУМ(калк) ШААРДАН ТОПТОП ТАРТИП СУМИНА БОЮНЧА ТАРТИП (калк) 1 ЧЕК;
$ ТАНДОО * ӨЛКӨНҮН ТАРТИБИ КАЛКЫНЫН ЧЕКТЕГИ 1; Ал эми жыйынтыгын өзүңүз көрүңүз!
Бул жерде дагы техникалык спецификация эмнегедир так эмес, менеджер жазып койгонсуп... Эмне үчүн мен муну чечтим? Анткени кайсы столдо иштөө керектиги так эмес. Бирок бул нормалдуу: баары дароо ачык-айкын жана түшүнүктүү боло турган эч кандай милдеттер жок. Ошондуктан, кылдаттык менен тапшырмаларды окуп чыгышыңыз керек, эгер суроолоруңуз болсо, дароо бериңиз! Туура, эскертүү. Базадагы маалыматтарды эске алып, биз шаарлардын маалыматтарын колдонуп издейбиз. Бул үчүн, төмөнкү суроону жазыңыз: $ SELECT country_id, AVG(калк) FROM city GROUP BY country_id; Бул жерде жөнөкөй: биз AVG функциясын колдонобуз жана шаар жазууларыбызды өлкө боюнча топтойбуз.
Сураныч боюнча бул жерде бир аз өзгөрүү болот. Топтоодон мурун аттар боюнча чыпкалоону кошуубуз керек. Мен бул макаланы жарыялоонун алдында бардык студенттер сыяктуу эле үй тапшырмамды аткарам жана бул көйгөйдү кошулмасыз чечүү мүмкүн эмес экенин түшүнөм. Неге? Анткени өлкө IDнен тышкары анын атын да алышыбыз керек. Жана бул эки tableны бир жазууга бириктирбестен жасалbyte. Ошондуктан, мен бул тапшырманы аткарам, албетте, бирок бул менин жамбым...))) Мен суроо-талапта LIKE баскычын колдонуп, бир тапшырма чыгаргым келди...) $ 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; Бул жерде эмне болду? Биринчиден, биз шаар жана өлкө tableларындагы жазууларды өлкө_иди чет ачкычын колдонуп, өлкө аталыштары боюнча чыпкалап, алар “a” менен аякташ үчүн кошулдук жана андан кийин гана country_id боюнча топтоштурдук.
Бул жерде биз жөн гана COUNT функциясын колдонуп, калк боюнча чыпкалоону кошуубуз керек: $ SELECT COUNT(*) КАЙДА калкы > 4000000 өлкөдөн; Жыйынтыгында мындай 3 өлкө бар экенин билдик.Бул туурабы? Ооба, бул этаптан Молдова гана өтпөйт.
Бул үчүн биз билген ORDER BY операторун колдонушубуз керек. Бирок, демейки боюнча сорттоо табигый тартипте экенин унутпаңыз. Сандар үчүн бул өсүү тартибинде иргелет дегенди билдирет, саптар үчүн биринчи символдордон баштап иргелет дегенди билдирет. Эгерде бизге төмөндөө боюнча сорт керек болсо, анда бизге натуралдыктын тескериси керек: $ SELECT * FROM country ORDER BY BY public DESC;
Бул жерде табигый тартипти билүү жардамга келет. Бул демейки болгондуктан, бул биз үчүн торт: $ SELECT * FROM FROM ORDER BY name;
Чынында, үй тапшырмасын талдоо
Мен, албетте, PD менен алектенген жана бул тууралуу айткан адамдар бар экенине кубанычтамын. Бул эң сонун! Бorмди бекемдебестен жөн эле окуу эч жакка барар жол экенине мен мүмкүн болушунча ишенем. Ошондуктан, ар бир кылган же аракет кылган - урматтоо. Тапшырмалардын шарттарын эске сала кетейин:- HAVING операторун түшүнүңүз жана биздин мисалдан tableларга мисал суроо жазыңыз. Эгер сиз аны айкыныраак кылуу үчүн кээ бир талааларды же андан көп маанилерди кошуу керек болсо, аларды кошуңуз. Эгер кимдир бирөө кааласа, комментарийге өзүңүздүн мисал чечимиңизди жазыңыз - мен дагы убакытым болсо текшерип алам.
- UI аркылуу маалымат базасы менен иштөө үчүн MySQL Workbench орнотуңуз. Менимче, биз консолдон иштөө боюнча жетиштүү тажрыйбага ээ болдук. Маалыматтар базасына туташуу. Эгер маалымат базасы менен иштөө үчүн башка нерсени колдонсоңуз, бул тапшырманы өткөрүп жибериңиз. Бул жерде жана мындан ары мен бир гана MySQL Workbench колдоном.
- Биздин маалыматтарды колдонуу менен алуу үчүн суроо-талаптарды жаз:
- эң кичинекей/эң калкы бар өлкө;
- өлкөдөгү калктын орточо саны;
- аттары "а" менен аяктаган өлкөлөрдөгү калктын орточо саны;
- төрт миллиондон ашык калкы бар өлкөлөрдүн саны;
- калкынын санынын азайышы боюнча өлкөлөрдү сорттоо;
- өлкөлөрдү табигый тартипте аттары боюнча сорттоо.
Келгиле, HAVING жөнүндө сүйлөшөлү
Having операторун билүү SQL көйгөйлөрү пайда болгон бир нече интервьюдан өтүүгө жардам берет. Ошондуктан, аны түшүнүү абдан маанилүү. Ошентип, сиз функцияларды бириктирүү үчүн шарттарды колдоно албайсыз (SUM, MIN, MAX, AVG). Мындан тышкары, HAVING топтоштурулган талаалар үчүн колдонулат. Бул эмнени билдирет? Мисалы, биз шаарларда орточо жашоочуларынын саны 50 000ден ашкан өлкөлөрдү алгыбыз келсе, HAVING колдонбой туруп кыла албайбыз. Мен түшүнгөндөй, бул бириктирүү WHERE оператору аткарылгандан кийин ишке ашат жана ага кийинчерээк эсептеле турган топтоо маанилерин кошуу мүмкүн эмес. Азырынча менин пикирлерим түшүнүккө көп нерсе кошпосо дагы, сиз муну жөн гана факт катары кабыл алып, аны менен кете аласыз. Программалоодо көп учурда бир нерсе түшүнүксүз болуп калса, бул мээ аны сиңире элек дегенди билдирет. Ушул ой менен укта, эртеси баары айкын болуп калат.MySQL Workbench орнотуу
Бул жерде жана андан ары мен суроолор үчүн Workbench колдоном. Мен сизге орнотуу жана маалымат базасына байланыш түзүү үчүн эмне керек экенин көрсөтөм. Бул Oracle компаниясынын продуктусу, андыктан алардын веб-сайтына кирип, каалаган versionны жана операциялык системаны тандаңыз. Бул үчүн, бул шилтемени басыңыз : Бул жерден сиз керектүү операциялык системаны тандай аласыз. Жүктөп алуу баскычын чыкылдатыңыз , бирок жүктөөнүн ордуна биз бул терезени көрөбүз: Жоголбоңуз, жөн гана "Жок рахмат, жөн гана жүктөөмдү башта" деген баскычты издеңиз , ошондо жүктөө башталат. Эмне үчүн алар мындай кылып жатышат? Аларга көбүрөөк адамдар катталышы үчүн, балким, бул биз үчүн маанилүү эмес. Ийгorктүү жүктөөдөн кийин орнотуу файлын иштетиңиз. MacOSто бул мындай көрүнөт: жөн гана сөлөкөтүн сүйрөңүз жана бүттү, орнотуу аяктады. MySQLдин өзүн орнотуу сыяктуу кыйын эмес, туурабы? Же биз ага көнүп, тажрыйбалуу болуп калдык;) Бул тапшырманын экинчи бөлүгү - биздин маалымат базасына байланыш түзүү. Бул үчүн эмне керек? MySQL Connections жанындагы плюс белгисин басыңыз: Пайда болгон терезеде керектүү маалыматтарды киргизиңиз:- Connection Name - биздин байланыштын аты. Кийинчерээк идентификациялоодо көйгөйлөр болбошу үчүн ысымдарды мүмкүн болушунча так жазыңыз. Мен бул байланышты JRTB_DB атын берем ;
- Хост аты - мурунтан эле жергorктүү 127.0.0.1 (aka localhost) катары орнотулат . Биздин учурда, эч нерсени өзгөртүүнүн кереги жок, анткени маалымат базасы компьютерде орнотулган, бирок маалымат базасы башка жерде болсо, анда хостту (маалымат базасы иштеп жаткан машинанын IP) ошого жараша өзгөртүү керек;
- Колдонуучунун аты - зарыл болсо, сиз өзүңүздүн колдонуучуңузду да көрсөтө аласыз. Эгер сиз бул ачкычка эч нерсе кошпосоңуз, аны өзгөртүүсүз калтырыңыз;
- Сырсөз - Keychain-де дүкөн чыкылдатыңыз жана так өзүңүз үчүн койгон сырсөздү коюңуз. Мен баарын жөнөкөй калтырдым - root .
GO TO FULL VERSION