JavaRush /Java блогу /Random-KY /Биз маалымат базаларын жана SQL тилин талдайбыз. (4-бөлүк...
Roman Beekeeper
Деңгээл

Биз маалымат базаларын жана SQL тилин талдайбыз. (4-бөлүк - үй тапшырмасын текшерүү) - "Java долбоору Адан Яга чейин"

Группада жарыяланган
Java долбоорун түзүү жөнүндө бир катар макала (башка материалдарга шилтемелер аягында). Анын максаты негизги технологияларды талдоо, натыйжасы телеграмма бот жазуу болуп саналат. Мурунку макалалар жана маалымат базалары боюнча үй тапшырмаларын талдоо: 1 , 2 , 3 . Сабырдуулук жана чыдамкайлык көрсөткөндөрдүн баарына, төртүнчү макалада мени менен бирге жүргөндөрдүн баарына - молодец. Айткандай, баскан жолду өздөштүрүп алат. Ушул жумада Маалыматтар базалары боюнча акыркы макала жарыкка чыгат, анда биз мамилелердин жана кошулуунун түрлөрү жөнүндө сүйлөшөбүз . Бирок жаңы маалымат менен алектенерден мурун, үй тапшырмабызды текшерип көрөлү... Мен өзүмдү чындап эле мугалимдей сездим. Мага ачууланбаңыз: менин педагогикалык бorмим жок, бул анык. Өткөн жумада пульттун деталдуу текшерүүсү материалдын негизги үлүшүн алгандыктан, мен үй тапшырмамды талдоону жана жаңы материалды карап чыгууну эки бөлүккө бөлүүнү чечтим."Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  4-бөлүк - үй тапшырмасын текшерүү - 1

Чынында, үй тапшырмасын талдоо

Мен, албетте, PD менен алектенген жана бул тууралуу айткан адамдар бар экенине кубанычтамын. Бул эң сонун! Бorмди бекемдебестен жөн эле окуу эч жакка барар жол экенине мен мүмкүн болушунча ишенем. Ошондуктан, ар бир кылган же аракет кылган - урматтоо. Тапшырмалардын шарттарын эске сала кетейин:
  1. HAVING операторун түшүнүңүз жана биздин мисалдан tableларга мисал суроо жазыңыз. Эгер сиз аны айкыныраак кылуу үчүн кээ бир талааларды же андан көп маанилерди кошуу керек болсо, аларды кошуңуз. Эгер кимдир бирөө кааласа, комментарийге өзүңүздүн мисал чечимиңизди жазыңыз - мен дагы убакытым болсо текшерип алам.
  2. UI аркылуу маалымат базасы менен иштөө үчүн MySQL Workbench орнотуңуз. Менимче, биз консолдон иштөө боюнча жетиштүү тажрыйбага ээ болдук. Маалыматтар базасына туташуу. Эгер маалымат базасы менен иштөө үчүн башка нерсени колдонсоңуз, бул тапшырманы өткөрүп жибериңиз. Бул жерде жана мындан ары мен бир гана MySQL Workbench колдоном.
  3. Биздин маалыматтарды колдонуу менен алуу үчүн суроо-талаптарды жаз:
    1. эң кичинекей/эң калкы бар өлкө;
    2. өлкөдөгү калктын орточо саны;
    3. аттары "а" менен аяктаган өлкөлөрдөгү калктын орточо саны;
    4. төрт миллиондон ашык калкы бар өлкөлөрдүн саны;
    5. калкынын санынын азайышы боюнча өлкөлөрдү сорттоо;
    6. өлкөлөрдү табигый тартипте аттары боюнча сорттоо.

Келгиле, HAVING жөнүндө сүйлөшөлү

Having операторун билүү SQL көйгөйлөрү пайда болгон бир нече интервьюдан өтүүгө жардам берет. Ошондуктан, аны түшүнүү абдан маанилүү. Ошентип, сиз функцияларды бириктирүү үчүн шарттарды колдоно албайсыз (SUM, MIN, MAX, AVG). Мындан тышкары, HAVING топтоштурулган талаалар үчүн колдонулат. Бул эмнени билдирет? Мисалы, биз шаарларда орточо жашоочуларынын саны 50 000ден ашкан өлкөлөрдү алгыбыз келсе, HAVING колдонбой туруп кыла албайбыз. Мен түшүнгөндөй, бул бириктирүү WHERE оператору аткарылгандан кийин ишке ашат жана ага кийинчерээк эсептеле турган топтоо маанилерин кошуу мүмкүн эмес. Азырынча менин пикирлерим түшүнүккө көп нерсе кошпосо дагы, сиз муну жөн гана факт катары кабыл алып, аны менен кете аласыз. Программалоодо көп учурда бир нерсе түшүнүксүз болуп калса, бул мээ аны сиңире элек дегенди билдирет. Ушул ой менен укта, эртеси баары айкын болуп калат.

MySQL Workbench орнотуу

Бул жерде жана андан ары мен суроолор үчүн Workbench колдоном. Мен сизге орнотуу жана маалымат базасына байланыш түзүү үчүн эмне керек экенин көрсөтөм. Бул Oracle компаниясынын продуктусу, андыктан алардын веб-сайтына кирип, каалаган versionны жана операциялык системаны тандаңыз. Бул үчүн, бул шилтемени басыңыз : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 2Бул жерден сиз керектүү операциялык системаны тандай аласыз. Жүктөп алуу баскычын чыкылдатыңыз , бирок жүктөөнүн ордуна биз бул терезени көрөбүз: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 3Жоголбоңуз, жөн гана "Жок рахмат, жөн гана жүктөөмдү башта" деген баскычты издеңиз , ошондо жүктөө башталат. Эмне үчүн алар мындай кылып жатышат? Аларга көбүрөөк адамдар катталышы үчүн, балким, бул биз үчүн маанилүү эмес. Ийгorктүү жүктөөдөн кийин орнотуу файлын иштетиңиз. MacOSто бул мындай көрүнөт: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 4жөн гана сөлөкөтүн сүйрөңүз жана бүттү, орнотуу аяктады. MySQLдин өзүн орнотуу сыяктуу кыйын эмес, туурабы? Же биз ага көнүп, тажрыйбалуу болуп калдык;) Бул тапшырманын экинчи бөлүгү - биздин маалымат базасына байланыш түзүү. Бул үчүн эмне керек? MySQL Connections жанындагы плюс белгисин басыңыз: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 5Пайда болгон терезеде керектүү маалыматтарды киргизиңиз:
  • Connection Name - биздин байланыштын аты. Кийинчерээк идентификациялоодо көйгөйлөр болбошу үчүн ысымдарды мүмкүн болушунча так жазыңыз. Мен бул байланышты JRTB_DB атын берем ;
  • Хост аты - мурунтан эле жергorктүү 127.0.0.1 (aka localhost) катары орнотулат . Биздин учурда, эч нерсени өзгөртүүнүн кереги жок, анткени маалымат базасы компьютерде орнотулган, бирок маалымат базасы башка жерде болсо, анда хостту (маалымат базасы иштеп жаткан машинанын IP) ошого жараша өзгөртүү керек;
  • Колдонуучунун аты - зарыл болсо, сиз өзүңүздүн колдонуучуңузду да көрсөтө аласыз. Эгер сиз бул ачкычка эч нерсе кошпосоңуз, аны өзгөртүүсүз калтырыңыз;
  • Сырсөз - Keychain-де дүкөн чыкылдатыңыз жана так өзүңүз үчүн койгон сырсөздү коюңуз. Мен баарын жөнөкөй калтырдым - root .
Туташуу иштей тургандыгын текшерүү үчүн, чыкылдатыңыз Байланышты текшерүү : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 6Ооба, эгер баары туура аткарылса, натыйжа көпкө созулbyte: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 7Эми бизде маалымат базасында сакталган байланыш бар жана биз туташууну түзүп, толтуруунун кереги жок. аты жана сырсөз ар бир жолу. Жана бул бакыт мындай болот: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 8Биз жаңы түзүлгөн байланышка кирип, суроо-талап терезесин көрөбүз. Баары туура экенине ынануу үчүн, келгиле, маалымат базаларынын тизмесин текшерип, биздикине барып, шаарлар тууралуу бардык маалыматтарды алалы: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 9Жана бул жерде биз керектүү нерселер үчүн карт-бланш алабыз. Биринчи бөлүм биз киргизген сценарий үчүн жооптуу. Андан кийин, Натыйжа торчосунда скрипттеги акыркы операциянын жыйынтыгын көрөбүз. Жана Action Output операциялардын тизмесин жана анын натыйжасын көрсөтөт. Абдан пайдалуу нерсе, мен сизге айткым келет: анын жардамы менен сиз белгилүү скрипттердин аткарылыш ылдамдыгын көзөмөлдөй аласыз. Бул эмне үчүн маанилүү? Тиркемедеги тапшырманы аткаруу ылдамдыгынын эң кеңири таралган көйгөйлөрүнүн бири бул маалымат базасында суроону аткаруу ылдамдыгы. Бул жерде сиз аларды кол менен тез жана ыңгайлуу текшере аласыз.

Керектүү өтүнүчтөрдү жазабыз

Бизде 7 гана өтүнүч бар, кетели!

  1. Эң көп калктуу өлкөнү алыңыз. Бул жерде сиз амалкөйлүк менен барып, бир нече жолдорду ала аласыз:

  • Өлкөнүн tableсына ылайык

Андан кийин биз сурамыбызды калк боюнча иреттеп, бир гана жазууну алышыбыз керек. Бул үчүн, скрипттин аягына LIMIT операторун кошуп , керектүү санды көрсөтүшүңүз керек: $ SELECT * FROM country ORDER BY BY калк DESC LIMIT 1;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 10

  • Шаардык tableга ылайык

Бул жерде баары кызыктуураак, анткени суроо-талап татаалыраак, бирок андан да кызыктуу болот. Бизде кошулуу тууралуу азырынча эч кандай түшүнүк жок болгондуктан, биз өлкөнүн ID гана ала алабыз: $ SELECT country_id, SUM(калк) FROM city GROUP BY BY country_id ORDER BY SUM(калк) DESC LIMIT 1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 11Бул жерде биз сонун нерсе жасадык - биз ар бир өлкөнүн бардык белгилүү шаарларынын калкынын суммасын чогултуп, ушул сумма боюнча иреттеп, биринчи элементти алдык. Мейли, сонунбу? Мен сүйүндүм :D Ушундан кийин өзүңүздү дароо суроо-жоопчудай сезесиз... (албетте көпкө эмес))

  1. Эң кичинекей өлкөнү алыңыз. Бул жерде сиз амалкөйлүк менен барып, бир нече маршруттарды ала аласыз

Бул учурда, баары так ошондой болот. Бир гана айырмасы, сорттоо тескери болот - ушунча. Ошондуктан, мен жөн гана өтүнүчтөрдү жазам:

  • Шаардык tableга ылайык

$ өлкөнүн_id, СУМ(калк) ШААРДАН ТОПТОП ТАРТИП СУМИНА БОЮНЧА ТАРТИП (калк) 1 ЧЕК;

  • Өлкөнүн tableсына ылайык

$ ТАНДОО * ӨЛКӨНҮН ТАРТИБИ КАЛКЫНЫН ЧЕКТЕГИ 1; Ал эми жыйынтыгын өзүңүз көрүңүз!

  1. Өлкөдөгү калктын орточо саны

Бул жерде дагы техникалык спецификация эмнегедир так эмес, менеджер жазып койгонсуп... Эмне үчүн мен муну чечтим? Анткени кайсы столдо иштөө керектиги так эмес. Бирок бул нормалдуу: баары дароо ачык-айкын жана түшүнүктүү боло турган эч кандай милдеттер жок. Ошондуктан, кылдаттык менен тапшырмаларды окуп чыгышыңыз керек, эгер суроолоруңуз болсо, дароо бериңиз! Туура, эскертүү. Базадагы маалыматтарды эске алып, биз шаарлардын маалыматтарын колдонуп издейбиз. Бул үчүн, төмөнкү суроону жазыңыз: $ SELECT country_id, AVG(калк) FROM city GROUP BY country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 12Бул жерде жөнөкөй: биз AVG функциясын колдонобуз жана шаар жазууларыбызды өлкө боюнча топтойбуз.

  1. Аты "а" менен аяктаган өлкөлөрдөгү калктын орточо саны

Сураныч боюнча бул жерде бир аз өзгөрүү болот. Топтоодон мурун аттар боюнча чыпкалоону кошуубуз керек. Мен бул макаланы жарыялоонун алдында бардык студенттер сыяктуу эле үй тапшырмамды аткарам жана бул көйгөйдү кошулмасыз чечүү мүмкүн эмес экенин түшүнөм. Неге? Анткени өлкө 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; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 13Бул жерде эмне болду? Биринчиден, биз шаар жана өлкө tableларындагы жазууларды өлкө_иди чет ачкычын колдонуп, өлкө аталыштары боюнча чыпкалап, алар “a” менен аякташ үчүн кошулдук жана андан кийин гана country_id боюнча топтоштурдук.

  1. Калкы төрт миллиондон ашкан өлкөлөрдүн саны

Бул жерде биз жөн гана COUNT функциясын колдонуп, калк боюнча чыпкалоону кошуубуз керек: $ SELECT COUNT(*) КАЙДА калкы > 4000000 өлкөдөн; Жыйынтыгында мындай 3 өлкө бар экенин билдик.Бул туурабы? Ооба, бул этаптан Молдова гана өтпөйт.

  1. Калкынын санынын азайышы боюнча өлкөлөрдү сорттоо

Бул үчүн биз билген ORDER BY операторун колдонушубуз керек. Бирок, демейки боюнча сорттоо табигый тартипте экенин унутпаңыз. Сандар үчүн бул өсүү тартибинде иргелет дегенди билдирет, саптар үчүн биринчи символдордон баштап иргелет дегенди билдирет. Эгерде бизге төмөндөө боюнча сорт керек болсо, анда бизге натуралдыктын тескериси керек: $ SELECT * FROM country ORDER BY BY public DESC;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 14

  1. Табигый тартипте аттары боюнча өлкөлөрдү иреттеңиз

Бул жерде табигый тартипти билүү жардамга келет. Бул демейки болгондуктан, бул биз үчүн торт: $ SELECT * FROM FROM ORDER BY name;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 15

чыгаруунун ордуна

Ошентип, үй тапшырмасын чечүүнүн көлөмү абдан чоң болуп калат, ошондуктан биз өзгөчө кылабыз: мен бул макаланы чек менен жарыялап жатам, ал эми жума күнү мен байланыштар жана кошулмалар менен жаңы материалды жарыялайм. Окуу үчүн баарына рахмат. Жумага чейин!

Сериядагы бардык материалдардын тизмеси ушул макаланын башында.

Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION