JavaRush /Java блогы /Random-KK /Біз мәліметтер базасын және SQL тілін талдаймыз. (4 бөлім...
Roman Beekeeper
Деңгей

Біз мәліметтер базасын және SQL тілін талдаймыз. (4 бөлім – үй тапсырмасын тексеру) – «Java жобасы А-дан Я-ға дейін».

Топта жарияланған
Java жобасын жасау туралы сериядан мақала (басқа материалдарға сілтемелер соңында). Оның мақсаты – негізгі технологияларды талдау, нәтижесі – телеграмма ботын жазу. Алдыңғы мақалалар және мәліметтер базасы бойынша үй тапсырмасын талдау: 1 , 2 , 3 . Шыдамдылық пен шыдамдылық танытқандардың барлығына, төртінші мақалаға менімен бірге барғандардың барлығына - жақсы. «Жүрген адам жолды меңгереді» дегендей. Осы аптада Дерекқорлар туралы соңғы мақала шығады, онда біз қарым-қатынастар мен қосылу түрлері туралы айтатын боламыз . Бірақ жаңа ақпаратпен айналыспас бұрын, үй тапсырмасын тексеріп алайық... Мен өзімді мұғалім ретінде сезіндім. Маған ашуланбаңыз: менің педагогикалық білімім жоқ, бұл анық. Өткен аптада қашықтан басқару құралын егжей-тегжейлі тексеру материалдың көп бөлігін алғандықтан, мен үй тапсырмасын талдауды және жаңа материалды шолуды екі бөлікке бөлуді шештім.«Java жобасы А-дан Я-ға дейін»: біз деректер қорын және SQL тілін талдаймыз.  4-бөлім – үй тапсырмасын тексеру – 1

Негізі, үй тапсырмасын талдау

Мен ПД-мен айналысатын және бұл туралы айтатын адамдар бар екеніне қуаныштымын. Бұл керемет! Білімді бекітпестен жай оқу ешқайда бармайтын жол екеніне барынша сенімдімін. Сондықтан, істеген немесе істеуге тырысқан әрбір адам - ​​құрмет. Тапсырмалардың шарттарын еске сала кетейін:
  1. HAVING операторын түсініп , біздің мысалдағы кестелерге мысал сұрауын жазыңыз. Түсінікті болу үшін кейбір өрістерді немесе бірнеше мәндерді қосу қажет болса, оларды қосыңыз. Егер біреу қаласа, мысал шешіміңізді түсініктемелерде жазыңыз - сондықтан менде уақыт болса, оны тексере аламын.
  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 өнімі, сондықтан сізге олардың веб-сайтына өтіп, өзіңізге қажет нұсқа мен операциялық жүйені таңдау жеткілікті. Бұл әрекетті орындау үшін мына сілтемені орындаңыз : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 2Мұнда сіз өзіңізге қажет операциялық жүйені таңдай аласыз. Жүктеп алу түймесін басыңыз , бірақ жүктеп алудың орнына біз мына терезені көреміз: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 3Жоғалмаңыз, «Жоқ рахмет, жүктеп алуды бастау» деп аталатын түймені іздеңіз , сонда жүктеу басталады. Неліктен олар мұны істеп жатыр? Мүмкін, олармен көбірек адамдар тіркелуі үшін, бұл біз үшін маңызды емес. Сәтті жүктеп алғаннан кейін орнату файлын іске қосыңыз. MacOS жүйесінде ол келесідей көрінеді: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 4белгішені сүйреп апарыңыз, орнату аяқталды. MySQL-тің өзін орнату сияқты қиын емес, солай ма? Немесе біз үйреніп қалдық және тәжірибелі болдық;) Бұл тапсырманың екінші бөлігі - біздің деректер базасына қосылу. Бұл үшін не керек? MySQL қосылымдары жанындағы қосу белгісін басыңыз: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 5Пайда болған терезеде қажетті деректерді енгізіңіз:
  • Қосылым атауы – біздің қосылымның аты. Кейін сәйкестендіруде қиындықтар болмауы үшін атауларды мүмкіндігінше анық жазыңыз. Мен бұл қосылымға JRTB_DB атын беремін ;
  • Хост атауы - жергілікті 127.0.0.1 (aka localhost) ретінде орнатылады . Біздің жағдайда ештеңені өзгерту қажет емес, өйткені деректер базасы компьютерде орнатылған, бірақ егер деректер базасы басқа жерде болса, онда хостты (деректер базасы жұмыс істейтін машинаның IP) сәйкесінше өзгерту қажет;
  • Пайдаланушы аты - қажет болса, пайдаланушыны да көрсете аласыз. Бұл кілтке ештеңе қоспасаңыз, оны өзгеріссіз қалдырыңыз;
  • Құпия сөз - Keychain ішінде сақтау түймесін басып , өзіңіз үшін орнатқан құпия сөзді дәл орнатыңыз. Мен бәрін қарапайым қалдырдым - root .
Қосылымның жұмыс істейтінін тексеру үшін «Қосылымды тексеру» түймесін басыңыз : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 6Егер бәрі дұрыс орындалса, нәтиже көп күттірмейді: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 7Енді бізде дерекқорда сақталған қосылым бар және бізге қосылым жасап, толтырудың қажеті жоқ. аты мен құпия сөзін әр уақытта. Және бұл бақыт келесідей болады: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 8Біз жаңадан жасалған қосылымға кіріп, сұрау терезесін көреміз. Барлығы дұрыс екеніне көз жеткізу үшін дерекқорлар тізімін тексеріп, өзімізге өтіп, қалалар туралы барлық деректерді алайық: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 9Міне, бізге қажет нәрсеге карт-бланш беріледі. Бірінші бөлім біз енгізетін сценарийге жауапты. Әрі қарай, Нәтиже торында сценарийдегі соңғы әрекеттің нәтижесін көреміз. Ал Action Output операциялар тізімін және оның нәтижесін көрсетеді. Өте пайдалы нәрсе, мен сізге айтқым келеді: оның көмегімен сіз белгілі бір сценарийлердің орындалу жылдамдығын бақылай аласыз. Неліктен маңызды? Қолданбадағы тапсырманы орындау жылдамдығының ең көп тараған мәселелерінің бірі мәліметтер қорындағы сұранысты орындау жылдамдығы болып табылады. Мұнда сіз оларды қолмен тез және ыңғайлы түрде тексере аласыз.

Қажетті өтініштерді жазамыз

Бізде тек 7 сұрау қалды, кеттік!

  1. Халқы ең көп елді алыңыз. Мұнда сіз айлакерлікке баруға және бірнеше бағытты таңдауға болады:

  • Ел кестесіне сәйкес

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

  • Қалалық кестеге сәйкес

Мұнда бәрі қызықтырақ, өйткені сұрау күрделірек, сонымен бірге қызықтырақ болады. Біріктірулер туралы әлі түсініксіз болғандықтан, біз тек ел идентификаторын ала аламыз: $ SELECT country_id, SUM(population) FROM FROM FROM CROUP BY country_id SUM (халық) DESC LIMIT 1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 11Мұнда біз керемет нәрсе жасадық - біз әр елдегі барлық белгілі қалалардың тұрғындарының сомасын жинадық, осы сома бойынша сұрыпталады және бірінші элементті алдық. Жақсы ма? Мен қуанып қалдым :D Осыдан кейін сіз бірден сұрақ қоюшы сияқты сезінесіз... (әрине көпке емес))

  1. Ең кішкентай елді алыңыз. Мұнда сіз айлакерлікке баруға және бірнеше бағытқа баруға болады

Бұл жағдайда бәрі бірдей болады. Жалғыз айырмашылық - сұрыптау кері болады - бұл бәрі. Сондықтан мен жай ғана сұрауларды жазамын:

  • Қалалық кестеге сәйкес

$ ТАҢДАУ ел_идентификаторы, СУМ(халық) ҚАЛА ТОБЫНАН ЕЛ_ID БОЙЫНША ТАПСЫРЫС СУМ(халық) ШЕКТЕГІ 1;

  • Ел кестесіне сәйкес

$ ТАҢДАУ * ЕЛДЕН ТАПСЫРУ БОЙЫНША ТАПСЫРЫС ШЕГІ 1; Ал нәтижесін өзіңіз көріңіз!

  1. Елдегі тұрғындардың орташа саны

Бұл жерде тағы да техникалық спецификация әйтеуір дәл емес, оны менеджер жазып қойғандай... Неліктен мен мұны шештім? Өйткені қай кестеде жұмыс істеу керек екені белгісіз. Бірақ бұл қалыпты жағдай: бәрі бірден анық және түсінікті болатын тапсырмалар жоқ. Сондықтан сіз тапсырмаларды мұқият оқып шығуыңыз керек, егер сізде сұрақтар туындаса, дереу сұраңыз! Дұрыс, ескертпе. Деректер базасында бар деректерді ескере отырып, біз қалалардың деректерін пайдалана отырып іздейміз. Ол үшін келесі сұрауды жазыңыз: $ SELECT country_id, AVG(population) FROM FROM town GROUP BY country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 12Мұнда бәрі қарапайым: біз AVG функциясын қолданамыз және қала жазбаларын ел бойынша топтастырамыз.

  1. Аты «а» әрпімен аяқталатын елдердегі тұрғындардың орташа саны

Сұраныс бойынша мұнда шамалы өзгеріс болады. Топтауды бастамас бұрын атаулар бойынша сүзуді қосуымыз керек. Мен бұл мақаланы жарияламас бұрын барлық студенттер сияқты үй тапсырмасын орындаймын және бұл мәселені біріктірусіз шешу мүмкін емес екенін түсінемін. Неліктен? Өйткені ел идентификаторынан бөлек оның атын да алуымыз керек. Және бұл екі кестені бір жазбаға біріктірмей жасалмайды. Сондықтан, мен бұл тапсырманы орындаймын, әрине, бірақ бұл менің jambым...))) Сұраныстағы LIKE арқылы тапсырманы ойлап тапқым келді...) $ SELECT ci.country_id, AVG(ci.population) ) FROM city ci INNER JOIN country co ON ci.country_id = co.id ҚАЙДА co.name "%a" GROUP BY BY country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 13Мұнда не болды? Біріншіден, біз қала және ел кестелеріндегі жазбаларды ел идентификаторы сыртқы кілті арқылы біріктірдік, олар «a» әрпімен аяқталатындай ел атаулары бойынша сүзіледі, содан кейін ғана country_id бойынша топталады.

  1. Халқы төрт миллионнан асатын елдер саны

Мұнда тек COUNT функциясын қолданып, популяция бойынша сүзуді қосу керек: $ SELECT COUNT(*) елден WHERE халқы > 4000000; Нәтижесінде осындай 3 ел бар екенін білеміз.Бұл дұрыс па? Иә, бұл белестен тек Молдова ғана өтпейді.

  1. Тұрғындар санының азаюы бойынша елдерді сұрыптаңыз

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

  1. Елдерді атаулары бойынша табиғи тәртіпте сұрыптаңыз

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

Шығарудың орнына

Үй тапсырмасының шешімі өте үлкен болады, сондықтан біз ерекшелік жасаймыз: мен бұл мақаланы чекпен жариялап жатырмын, ал жұмада мен қосылымдар мен қосылыстармен жаңа материалды жариялаймын. Оқығаныңыз үшін барлығына рахмет. Жұмаға дейін!

Сериядағы барлық материалдардың тізімі осы мақаланың басында.

Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION