JavaRush /Java Blogu /Random-AZ /Biz verilənlər bazası və SQL dilini təhlil edirik. (4-cü ...
Roman Beekeeper
Səviyyə

Biz verilənlər bazası və SQL dilini təhlil edirik. (4-cü hissə - ev tapşırığını yoxlamaq) - "A-dan Z-yə Java layihəsi"

Qrupda dərc edilmişdir
Java layihəsinin yaradılması haqqında silsilədən məqalə (digər materiallara keçidlər sonundadır). Onun məqsədi əsas texnologiyaları təhlil etməkdir, nəticə teleqram botunu yazmaqdır. Əvvəlki məqalələr və verilənlər bazası üzrə ev tapşırıqlarının təhlili: 1 , 2 , 3 . Səbr və dözümlü olan hər kəsə, bu dördüncü məqaləni mənimlə keçirən hər kəsə, yaxşı. Necə deyərlər, yeriyən yola yiyələnər. Bu həftə Verilənlər Bazaları haqqında yekun məqalə çıxacaq, burada əlaqələr və qoşulma növləri haqqında danışacağıq . Ancaq yeni məlumatlarla məşğul olmamışdan əvvəl ev tapşırığımıza nəzər salaq... Mən özümü həqiqətən müəllim kimi hiss etdim. Mənə hirslənməyin: mənim pedaqoji təhsilim yoxdur, bu dəqiqdir. Keçən həftə pultun təfərrüatlı yoxlanılması materialın əsas hissəsini tutduğundan, mən ev tapşırıqlarının təhlilini və yeni materialın nəzərdən keçirilməsini iki hissəyə bölmək qərarına gəldim."A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  4-cü hissə - ev tapşırığını yoxlamaq - 1

Əslində, ev tapşırıqlarının təhlili

Mən mütləq şadam ki, PD ilə məşğul olan və bu haqda danışan insanlar var. Bu əladır! Mümkün qədər əminəm ki, bilikləri möhkəmləndirmədən sadəcə oxumaq heç bir yerə aparan bir yol deyil. Buna görə də, edən və ya etməyə çalışan hər kəs - hörmət. Tapşırıqların şərtlərini xatırlatmaq istəyirəm:
  1. HAVING operatorunu anlayın və nümunəmizdən cədvəllər üçün nümunə sorğu yazın. Daha aydın etmək üçün bəzi sahələr və ya daha çox dəyər əlavə etmək lazımdırsa, onları əlavə edin. Kim istəsə, öz nümunə həllinizi şərhlərdə yazın - buna görə də vaxtım olsa yoxlaya bilərəm.
  2. UI vasitəsilə verilənlər bazası ilə işləmək üçün MySQL Workbench quraşdırın. Düşünürəm ki, biz artıq konsoldan işləmək üçün kifayət qədər təcrübə əldə etmişik. Verilənlər bazasına qoşulun. Əgər verilənlər bazası ilə işləmək üçün başqa bir şey istifadə edirsinizsə, bu tapşırığı atlayın. Burada və bundan sonra yalnız MySQL Workbench istifadə edəcəyəm.
  3. Məlumatlarımızdan istifadə edərək qəbz sorğularını yazın:
    1. ən kiçik/ən çox əhalisi olan ölkə;
    2. ölkədə əhalinin orta sayı;
    3. adları “a” ilə bitən ölkələrdə əhalinin orta sayı;
    4. əhalisi dörd milyondan çox olan ölkələrin sayı;
    5. ölkələri əhalinin sayının azalmasına görə çeşidləyin;
    6. ölkələri təbii qaydada adlarına görə sıralayın.

Gəlin HAVING haqqında danışaq

Having operatorunu bilmək SQL problemlərinin olacağı birdən çox müsahibəni keçməyə kömək edə bilər. Buna görə də onu başa düşmək son dərəcə vacibdir. Elə olur ki, siz funksiyaları toplamaq üçün şərtlərdən istifadə edə bilməzsiniz (SUM, MIN, MAX, AVG). Bundan əlavə, HAVING qruplaşdırılmış sahələr üçün istifadə olunur. Bunun mənası nədi? Məsələn, şəhərlərdə əhalinin orta sayının 50.000 nəfərdən çox olduğu ölkələri əldə etmək istəyiriksə, HAVING-dən istifadə etmədən edə bilmərik. Mən başa düşdüyüm kimi, bu, toplama WHERE ifadəsi yerinə yetirildikdən sonra baş verdiyi üçün edilir və sonra hesablanacaq toplama dəyərlərini əlavə etmək mümkün deyil. İndiyə qədər fikirlərim anlayışa çox şey qatmasa belə, sadəcə olaraq bunu bir fakt kimi qəbul edib onunla gedə bilərsiniz. Proqramlaşdırmada tez-tez olur ki, bir anda bir şey aydın deyilsə, bu, beynin sadəcə onu hələ həzm etmədiyini ifadə edə bilər. Bu düşüncə ilə yatın və ertəsi gün hər şey aydınlaşacaq.

MySQL Workbench quraşdırılması

Burada və daha sonra sorğular üçün Workbench-dən istifadə edəcəyəm. Mən sizə quraşdırmaq və verilənlər bazası ilə əlaqə yaratmaq üçün nə lazım olduğunu göstərəcəyəm. Bu Oracle-ın məhsuludur, ona görə də sadəcə onların veb saytına daxil olub istədiyiniz versiyanı və əməliyyat sistemini seçməlisiniz. Bunu etmək üçün bu linki izləyin : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 2Burada tam olaraq sizə lazım olan əməliyyat sistemini seçə bilərsiniz. Yüklə düyməsinə klikləyin , lakin yükləmək əvəzinə biz bu pəncərəni görəcəyik: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 3İtirməyin, sadəcə olaraq “ Xeyr təşəkkürlər, sadəcə yükləməmi başla” adlı düyməni axtarın və yükləmə başlayacaq. Niyə belə edirlər? Yəqin ki, daha çox insan onlarla qeydiyyatdan keçsin, bu bizim üçün vacib deyil. Uğurlu endirdikdən sonra quraşdırma faylını işə salın. MacOS-da bu belə görünür: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 4Sadəcə işarəni sürükləyin və bu, quraşdırma tamamlandı. MySQL-in özünü quraşdırmaq qədər çətin deyil, elə deyilmi? Yoxsa yenicə öyrəşmişik və daha təcrübəli olduq ;) Bu tapşırığın ikinci hissəsi verilənlər bazamızla əlaqə yaratmaqdır. Bunun üçün nə lazımdır? MySQL Connections-ın yanındakı üstəlik işarəsini vurun: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 5Görünən pəncərədə lazımi məlumatları daxil edin:
  • Bağlantı Adı - əlaqəmizin adı. Adları mümkün qədər aydın şəkildə yazın ki, sonradan tanınmasında problem olmasın. Mən bu əlaqəyə JRTB_DB adını verirəm ;
  • Host adı - artıq yerli 127.0.0.1 (aka localhost) olaraq təyin olunacaq . Bizim vəziyyətimizdə verilənlər bazası kompüterdə quraşdırıldığından heç nəyi dəyişdirmək lazım deyil, lakin verilənlər bazası başqa yerdədirsə, onda host (verilənlər bazasının işlədiyi maşının ip) müvafiq olaraq dəyişdirilməlidir;
  • İstifadəçi adı - lazım olduqda istifadəçinizi də təyin edə bilərsiniz. Əgər bu açara heç nə əlavə etməmisinizsə, onu dəyişməz qoyun;
  • Parol - Açar zəncirində saxla klikləyin və özünüz üçün təyin etdiyiniz parolu dəqiq təyin edin. Mən hər şeyi sadə buraxdım - kök .
Bağlantının işləyəcəyini yoxlamaq üçün vurun Bağlantını yoxlayın : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 6Yaxşı, hər şey düzgün aparılıbsa, nəticə çox çəkməyəcək: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 7İndi verilənlər bazasında saxlanmış bir əlaqəmiz var və əlaqə yaratmağa və doldurmağa ehtiyac qalmayacaq. hər dəfə ad və parolda. Və bu xoşbəxtlik belə görünəcək: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 8Yeni yaradılmış əlaqəyə daxil oluruq və sorğu pəncərəsini görürük. Hər şeyin düzgün olduğuna əmin olmaq üçün verilənlər bazalarının siyahısını yoxlayaq, özümüzə gedək və şəhərlər haqqında bütün məlumatları əldə edək: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 9Və burada ehtiyacımız olan şeylər üçün kart-blanş alırıq. Birinci bölmə daxil etdiyimiz skriptdən məsuldur. Sonra, Nəticə Şəbəkəsində skriptdəki son əməliyyatın nəticəsini görürük. Və Fəaliyyət Çıxışı əməliyyatların siyahısını və onun nəticəsini göstərir. Çox faydalı bir şey, sizə demək istəyirəm: onun köməyi ilə müəyyən skriptlərin icra sürətinə nəzarət edə bilərsiniz. Niyə vacibdir? Tətbiqdə tapşırığın icra sürətində ən çox rast gəlinən problemlərdən biri verilənlər bazasında sorğuların icra sürətidir. Burada onları tez və rahat şəkildə əl ilə yoxlaya bilərsiniz.

Lazım olan sorğuları yazırıq

Tamamlamaq üçün cəmi 7 sorğumuz var, gedək!

  1. Ən çox əhalisi olan ölkəni əldə edin. Burada hiyləgərliklə gedə və bir neçə marşruta gedə bilərsiniz:

  • Ölkə cədvəlinə görə

Onda sadəcə sorğumuzu əhaliyə görə çeşidləmək və yalnız bir qeyd götürmək lazımdır. Bunun üçün skriptin sonuna LIMIT operatoru əlavə etməli və tələb olunan kəmiyyəti göstərməlisiniz: $ SEÇİN * FROM country ORDER BY BY əhali DESC LIMIT 1;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 10

  • Şəhər cədvəlinə görə

Burada hər şey daha maraqlıdır, çünki sorğu daha mürəkkəb, həm də daha maraqlı olacaq. Qoşulmalar haqqında hələ də heç bir təsəvvürümüz olmadığı üçün biz yalnız ölkə ID-sini əldə edə bilərik: $ SELECT country_id, SUM(əhali) FROM city QROUP BY BY country_ID ORDER BY BY SUM(əhali) DESC LIMIT 1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 11Burada gözəl bir şey etdik - hər bir ölkənin bütün məlum şəhərlərinin əhalisinin cəmini topladıq, bu məbləğə görə sıraladıq və birinci elementi götürdük. Yaxşı, əladır? Çox sevindim :D Bundan sonra özünüzü dərhal sorğu guru kimi hiss edirsiniz... (uzun müddət deyil, əlbəttə))

  1. Ən kiçik ölkəni götürün. Burada hiyləgərcəsinə gedib bir neçə marşrutla gedə bilərsiniz

Bu vəziyyətdə hər şey tam olaraq eyni olacaq. Yeganə fərq, çeşidləmənin tərsinə çevrilməsidir - hamısı budur. Buna görə də, sadəcə olaraq sorğular yazıram:

  • Şəhər cədvəlinə görə

$ SEÇİN ölkə_id, CƏM(əhali) ŞƏHƏR QRUPUDAN ölkə_idinə görə SİFARİŞ CƏMİYƏ (əhali) LIMIT 1;

  • Ölkə cədvəlinə görə

$ SEÇİN * ÖLKƏDƏN ƏHALİYƏ GÖRƏ SİFARİŞ LİMİT 1; Və nəticəyə özünüz baxın!

  1. Ölkədə əhalinin orta sayı

Burada yenə də texniki göstəricilər nədənsə dəqiq deyil, elə bil menecer yazıb... Mən niyə belə qərara gəldim? Çünki hansı masada işləmək bəlli deyil. Ancaq bu normaldır: hər şeyin dərhal aydın və başa düşüləcəyi heç bir vəzifə yoxdur. Buna görə də, tapşırıqları diqqətlə oxumalısınız və suallarınız varsa, dərhal soruşun! Düzdü, bir qeyd. Verilənlər bazasında olan məlumatları nəzərə alaraq, biz şəhərlərin məlumatlarından istifadə edərək axtarış aparacağıq. Bunun üçün aşağıdakı sorğunu yazın: $ SELECT country_id, AVG(əhali) FROM city GROUP BY BY country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 12Burada çox sadədir: biz AVG funksiyasından istifadə edirik və şəhər qeydlərimizi ölkələr üzrə qruplaşdırırıq.

  1. Adları “a” ilə bitən ölkələrdə əhalinin orta sayı

İstəyə görə burada cüzi dəyişiklik olacaq. Qruplaşdırmadan əvvəl adlara görə filtrləmə əlavə etməliyik. Mən də bu yazını dərc etməzdən əvvəl bütün tələbələr kimi ev tapşırığımı edirəm və başa düşürəm ki, birləşmələr olmadan bu problemi həll etmək olmaz. Niyə? Çünki ölkə şəxsiyyət vəsiqəsindən əlavə onun adını da almalıyıq. Və bu, iki cədvəli bir qeydə birləşdirmədən edilə bilməz. Ona görə də bu tapşırığı yerinə yetirəcəyəm, əlbəttə, amma bu mənim jambımdır...))) Mən sorğuda LIKE istifadə edərək bir tapşırıq hazırlamaq istədim...) $ SELECT ci.country_id, AVG(ci.population ) FROM city ci INNER JOIN country co ON ci.country_id = co.id HERE co.name BY "%a" QROUP BY BY country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 13Burada nə olub? Birincisi, biz xarici açar ölkə_id-dən istifadə edərək şəhər və ölkə cədvəllərindən qeydlərə qoşulduq, ölkə adları ilə süzgəcdən keçirdik ki, onlar “a” ilə bitsin və yalnız bundan sonra ölkə_id-i ilə qruplaşdırılsın.

  1. Əhalisi dörd milyondan çox olan ölkələrin sayı

Burada sadəcə COUNT funksiyasından istifadə etməli və əhali üzrə filtrləmə əlavə etməliyik: $ SELECT COUNT(*) HARADA əhalisi > 4000000 olan ölkədən; Nəticədə məlum olur ki, 3 belə ölkə var, bu düzgündürmü? Bəli, yalnız Moldova bu mərhələni keçmir.

  1. Ölkələri əhalinin sayına görə sıralayın

Bunun üçün artıq bildiyimiz SİPARİŞ BY operatorundan istifadə etməliyik. Ancaq unutmayın ki, standart olaraq çeşidləmə təbii qaydadadır. Rəqəmlər üçün bu, onun artan qaydada, sətirlər üçün isə ilk simvollardan başlayaraq sıralandığını bildirir. Əgər azalan növə ehtiyacımız varsa, təbii olanın tərsinə ehtiyacımız var: $ SELECT * FROM country ORDER BY BY əhali DESC;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 14

  1. Ölkələri təbii qaydada adlarına görə sıralayın

Burada təbii nizamın nə olduğu haqqında bilik lazımlı olacaq. Defolt olduğundan, bu, bizim üçün bir parça tortdur: $ SEÇİN * Ölkədən SİFARİŞ ADI BY;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 15

Çıxış əvəzinə

Elə olur ki, ev tapşırığı həllinin ölçüsü çox böyük olacaq, buna görə də istisna edəcəyik: bu məqaləni çeklə dərc edirəm və cümə günü bağlantılar və birləşmələrlə yeni material dərc edəcəyəm. Oxuduğunuz üçün hər kəsə təşəkkür edirəm. Cümə gününə qədər!

Serialdakı bütün materialların siyahısı bu məqalənin əvvəlindədir.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION