JavaRush /Java Blog /Random-TK /Maglumatlar bazalaryny we SQL dilini seljerýäris. (3-nji ...

Maglumatlar bazalaryny we SQL dilini seljerýäris. (3-nji bölüm) - "A-dan Z-a çenli Java taslamasy"

Toparda çap edildi
Java taslamasyny döretmek baradaky seriýadan bir makala (beýleki materiallara baglanyşyk ahyrynda). Maksady esasy tehnologiýalary seljermek, netijesi telegramma bot ýazmak. "Java-dan A-dan Z" taslamasy: maglumat bazalaryny we SQL dilini seljerýäris.  3-nji bölümSalam, hanymlar we jenaplar, geliň maglumatlar bazalary, SQL we beýleki zatlar hakda gürleşmäge dowam edeliň. Bu günki materialda bölek teoriýasy we bölekleýin tejribe bolar. Lastatladýaryn, geçen gezek hemme zady nädip gurmalydygy, maglumatlar binýadyny, tablisany nädip döretmelidigi we ondan maglumat almagy barada gürleşdik. Uzakdan duýmak bilen bir zadyň netije berendigini ýa-da ýokdugyny görmegiň wagty geldi. Meniň pikirimçe, onuň ýarysy diňe öňki makala esasynda edilip bilnerdi. Bir programmany dogry ýygnamak we hemme zady has owadan etmek üçin maglumat bazalary hakda gürleşmeli we olar hakda gürleşmek üçin köp wagt sarp etmeli.

Öý işini barlamak

"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 2Wezipeleri üstünlikli tamamlan her bir adama uly hormat. Diýmek, diňe size mätäç we diňe size kömek edýär. Işimi äsgermezlik edenler üçin ýagdaýy ýatladýaryn:
  1. ID meýdançasyndan ýurt tablisasynyň shemasyna esasy açary (PRIMARY KEY) goşmaly.
  2. Tableurt tablisasyna başga bir ýurt goşuň - Moldowa.
  3. Öňki makalanyň shemasyna laýyklykda, beýan edilen ähli meýdanlary öz içine alýan stol şäherini dörediň. Meýdanyň atlary aşakdaky ýaly bolar: id, ady, ýurt_id, ilat.
  4. Şäher tablisasyna esasy açar goşuň.
  5. Şäher stoluna daşary ýurt açary goşuň.
Başlamak üçin, öňki makalanyň birinji bölümini ulanalyň we maglumat bazasynyň terminalyna geçeliň.

Esasy açar goşmak

Esasy açary (PRIMARY KEY) iki ýol bilen goşup bilersiňiz: tablisany döredeniňizde ýa-da döredilenden soň ALTER TABLE ulanyp bilersiňiz.

Tablisa döredilende esasy açar

Tablisa eýýäm döredenimizden we ony pozmazdan bu çemeleşmäni bu maglumatlar bazasynyň içinde görkezip bilmeris, diňe wagtlaýyn synag bazasyny dörederis, onda hemme zady ederis. Aşakdaky buýruklary girizeliň:
  • täze maglumat bazasyny döretmek:

    $ DATABASE synagyny dörediň;

  • esasy açary goşýan tablisa döretmek:

    $ TABLE ýurt dörediň (id INT, ady VARCHAR (30), PRIMARY KEY (id));

Umuman, çylşyrymly zat ýok. Üýtgeýjileri yglan edenden soň, esasy açar boljak meýdanyň ady gabygyň içinde geçýän PRIMARY KEY (id) aşakdaky bölüm goşulýar. Stol shemasynyň nähili üýtgändigini göreliň: $ DESC ýurt; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 3Görşüňiz ýaly, PRI bahasy ID giriş üçin açar meýdançasynda peýda boldy .

Tablisa döredilenden soň esasy açar

Öň hem aýdyşym ýaly, tablisa döredilenden soň ilkinji açary ALTER TABLE ulanyp belläp bolýar . Bu mysaly şäherlerimiziň maglumatlar bazasynda ulanarys :
  • synag synagyndan maglumatlar bazamyza geçeliň:

    $ Şäherleri ulanyň;

  • Elbetde, maglumatlar bazamyzda barlygymyzy barlalyň (ol ýerde başga bir meýdan bolmaly - ilat). Munuň üçin ýazýarys:

    $ DESC ilaty;

  • hemme zat dogry, tablisa biziňki. Aşakdakylary ýazalyň:

    $ HEMMESI TABALY ýurt ÜÇIN PRIMARY KEY (ID) goşuň;

  • we buýruk bilen derrew barlaň:

    $ DESC ýurt;

"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 4Suratdan görnüşi ýaly, hemme zat dogry, PRI bahasy edil bolmaly ýerinde. .Eri gelende aýtsak, synag bazasy bilen işledik. Indi ony pozmaly: näme üçin serweri bulaşdyrmaly, şeýlemi? Munuň üçin gaty belli bir buýrugy ulanýarys: $ DROP DATABASE synagy;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 5

Moldowany goşmak

Ilki bilen nämäni ýazjakdygymyzy çözmeli. Indiki şahsyýetnamamyz 4. Ady Moldowa bolar we ilaty 3550900. Şonuň üçin INSERT INTO buýrugyny eýýäm bilýäris: $ INSERT INTO IN VALUES (4, 'Moldowa', 3550900); Bu bahanyň maglumatlar bazasynda bardygyny ýa-da ýokdugyny barlaýarys: $ SELECT * WHERE WHERE id = 4; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 6Maglumat haýyşynda haýsy meýdanyň gözlenjekdigini derrew kesgitledim, şonuň üçin diňe bir ýazgy aldyk, bu bize gerek.

Şäherleriň tablisasyny dörediň

Maglumat bazasy baradaky birinji makalanyň diagrammasyny ulanyp , tablisa barada zerur maglumatlary alýarys. Onda aşakdaky meýdanlar bolar:
  • id - üýtgeşik kesgitleýji;
  • ady - şäher ady;
  • ýurt_id - daşary ýurt açary;
  • ilaty - şäheriň ilaty.
Her gezek özboluşly şahsyýet ýazmak birneme kyn, şeýle dälmi? Muny MySQL ýolbaşçylaryna goýmak isleýärin . Şeýle bir ýol bar - AWTO INCREMENT . Muny sanly meýdana goşmalydyrys, we bahalary aç-açan geçirmesek, MySQL-iň özi şahsyýetini öňki bilen deňeşdirilende köpelder. Şonuň üçin tablisa döretmek şeýle bolar: $ TABLE şäherini dörediň (id INT AUTO_INCREMENT, ady VARCHAR (30), ýurt_id INT, ilat INT, PRIMARY KEY (id)); Everythinghli zadyň dogry ýerine ýetirilendigini ýa-da ýokdugyny görmek üçin tablisanyň diagrammasyna seredeliň: $ DESC şäheri; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 7Tablisa diagrammasyndan görnüşi ýaly, id meýdançasy üçin täze düşündiriş bar - auto_increment. Şeýdip, biz hemme zady dogry etdik. Doly düzülen tablisadaky maglumatlary barlap göreliň. Munuň üçin meseläniň soňky bölegini - daşary ýurt açaryny ederis.

Şäherlere daşary ýurt açary goşuň

Daşary ýurt açary üçin bu buýruk bolar: $ ALTER TABLE şäheri Daşary ýurt açaryna goşuň (ýurt_id) REFERENCES ýurt (id); Stol shemasynyň nämedigini derrew barlap göreliň: bir sagadyň dowamynda üýtgedimi? $ DESC şäheri; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 8

Bonus bölegi. Synag

Ony meselä goşmagy ýatdan çykardym - birinji bölümiň skrinshotyndaky maglumatlary dolduryň. Forgetatdan çykardym, indi özüm ederin. Gyzyklanýanlar üçin muny mensiz özüňiz edip bilersiňiz, soň bolsa barlarys;) Harkow, Kiýew, Minsk, Odessa, Woronezh bardy, biz hem Çisinau goşarys. Thisöne bu gezek şahsyýetnamalary ibermeris, olary geçeris: $ INSERT INTO (ady, ýurt_id, ilat) GYMMATLAR ('Harkow', 1, 1443000), ('Kiýew', 1, 3703100), ('Minsk') , 3, 2545500), ('Odessa', 1, 1017699), ('Woronezh', 2, 1058261), ('Kişinew', 4, 695400); Görşüňiz ýaly, bir INSERT INTO buýrugyny ulanyp, bir wagtyň özünde birnäçe ýazgy edip bilersiňiz. Amatly bir zat, ýadyňyzda bolsun) Geliň, derrew stoluň içindäki zatlary göreliň: $ SELECT * Şäherden; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 9AUTO_INCREMENT - isleýşimiz ýaly işledi. Şahsyýet faýllary, biz tabşyrmadyk bolsak-da, doldurylýar. Daşary ýurt açary garaşly zat. Dogry işleýändigini ýa-da ýokdugyny barlamak üçin, daşary ýurt tablisasynda ýok daşary ýurt açaryny ýazyp bilersiňiz. Id = 5-iň Gazagystandygyny karar edeliň. Emma hakykatda bu ýurtlaryň sanawynda ýok. Maglumatlar bazasynyň kasam etjekdigini barlamak üçin şäheri goşuň - Astana: $ INSERT INTO (ady, ýurt_id, ilat) GYMMATLAR ('Astana', 5, 1136156); Elbetde, ýalňyşlygy başdan geçirýäris: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 10Indi daşary ýurt açary, maglumatlar bazamyzda ýok şähere bir ýurt bellemäge synanyşmaýandygymyzy anyklaýar. Öý işiniň bu bölegini tamamlanan hasaplamak bolar - täzesine ugratmak :)

Saýlama beýany

Indi hemme zat beýle gorkunç däl ýaly, şeýlemi? Java döredijiler üçin maglumatlar binýadyny bilmegiň hökmanydygyny ýene bir gezek belläsim gelýär. Maglumat bazasy bolmasa hiç ýere gidip bolmaz. Hawa, eýýäm anketa ýazyp başlamak isleýärin, razy. It'söne zerur. Şonuň üçin bu ýoly dowam etdireris. SELECT jümlesini ulanyp, maglumatlar bazasyndan maglumat alýarys. .Agny, bu adaty DML operasiýasy (nämedigini eýýäm ýatdan çykardyňyzmy? ...))) Makalalary Ondan öň täzeden okaň). Baglanyşyk maglumat bazalarynyň artykmaçlyklary näme? Maglumatlary ýygnamak we almak üçin ajaýyp funksiýalary bar. Bu, SELECT jümlesi üçin ulanylýar. Bu ýerde çylşyrymly zat bolup bilmejege meňzeýär, şeýlemi? Emma entek düşünmeli köp zat bar) Biziň üçin gurup boljak esaslara düşünmegimiz möhümdir. SELECT jümlesi bilen iň ýönekeý talap, ähli tablisalardan ähli maglumatlary saýlamakdyr. Wikidäki operatorlaryň SELECT soragynda haýsy tertipde gitmelidigi baradaky düşündirişini gaty haladym, şonuň üçin bu ýere gödeklik bilen göçürerin:
SELECT
  [DISTINCT | DISTINCTROW | ALL]
  select_expression,...
FROM table_references
[WHERE where_definition]
[GROUP BY {unsigned_integer | col_name | formula}]
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]
Bu ýerde ilki bilen GROUP BY operatoryny, soň bolsa WHERE operatoryny goýup bilmejekdigiňizi görüp bilersiňiz. Soňundan nireden gelendigi belli bolmadyk ýalňyşlyklara gahar bolmazlygy üçin muny ýatda saklamaly. $ Şäherden saýlaň; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 11Allöne ähli maglumatlary ýok etmek biziň üçin gyzykly däl. Dyrnaklary mikroskop bilen çekmek islesek, edil şol bir zat [1] , [2] . Maglumat bazasy süzmek, sortlamak we jemlemek amallaryny Java kodundan has çalt ýerine ýetirýändigi sebäpli, bu meseläni maglumat bazasyna goýmak has gowudyr. Şonuň üçin meseleleri çylşyrymlaşdyrmak bilen täze funksiýany açarys.

Nirede parametr

Saýlawy süzmek üçin WHERE sözi ulanylýar . Muny aşakdaky ýaly düşündirmeli: Tablisa adyndan * saýlaň (tablisanyň adyndan ähli meýdanlary saýlaň) WHERE talbe_row = 1 (ýazgylarda table_row meýdançasy 1-e deňdir). Talapdaky açar sözleriň tertibiniň möhümdigini bellemelidiris. WHERE a = 1 FROM table_name SELECT * ýazyp bilmersiňiz. Rus dili üçin bu gowy, käbirleri üçin beýle bulaşyk ýaly bolup görünmez, ýöne SQL üçin bu kabul ederliksiz. Aşakdaky soragy ýazýarys: $ SELECT * Şäherden WHERE country_id = 1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 12Biz ukrain şäherlerini saýladyk. Erbet däl, şeýlemi? Diňe bir ukrain däl, Belarus hem islesek näme etmeli? Bu maksat bilen, meýdanyň alyp biljek gymmatlyklarynyň ýygyndysyny sanap bileris: $ SELECT * WHERE country_id IN şäherden (1, 3); "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 13Muňa jogap hökmünde eýýäm iki ýurtdan şäherlerimiz bar. Süzmek üçin birnäçe şert bar bolsa näme etmeli? Iki milliondan gowrak ilaty bolan şäherleri isleýäris diýeliňmi? Munuň üçin OR ýa-da AND sözlerini ulanyň : $ SELECT * şäherden WHERE country_id IN (1, 3) we ilat> 2000000; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 14Ajaýyp, ýöne ýene bir şert goşmaly bolsak - adaty aňlatma arkaly atlary gözlemek (bu ýerde yzygiderli aňlatmalary suratlandyryp bilmerin: ine, muny 4 bölekde "gysga" eden adam )? Mysal üçin, şäheri nädip ýazmalydygyny ýadymyzdan çykarmaýarys, ýöne düýbünden däl ... Munuň üçin süzgüç aňlatmasyna LIKE açar söz goşup bilersiňiz : $ SELECT * WHERE country_id IN (1, 3) we ilat> 2000000 OR ady "% hark%"; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 15Şeýdip, biz Harkowy hem aldyk. Netijede, gözlegimiziň gaty gowy bolandygyny aýdyp bileris. IDöne şahsyýetnama boýunça däl-de, ilat boýunça tertiplemek isleýärin, ýöne nädip? Hawa gaty ýönekeý ...

Parametr boýunça sargyt

ORDER BY ulanyp, belli bir meýdan tarapyndan alnan ýazgylary tertipläp bileris. Sanlary we setirleri tertipleşdirýär. Ilatyň sany boýunça sargyt goşup, öňki soragy giňelderis: $ SELECT * Şäherden WHERE country_id IN (1, 3) WE ilat> 2000000 ORA-da ilat tarapyndan “% hark%” EDEBI "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 16Görşümiz ýaly, sortlamak tebigy tertipde, ýagny ýokarlanýan tertipde bolup geçdi. Munuň tersini islesek näme etmeli? Munuň üçin DESC sözüni goşmaly: $ SELECT * Şäherden WHERE country_id IN (1, 3) WE ilat> 2000000 ORA-da Ilatyň DESC tarapyndan "% hark%" EDEBI "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 17Indi sortlamak ilatyň azalmagyna esaslanýar. Maglumat bazasy muny gaty çalt ýerine ýetirýär: hiç hili Kolleksiýa.sort deňeşdirip bolmaz. Indi geliň, yzygiderli tertipde tertip boýunça tertipläliň: $ SELECT * WHERE country_id IN (1, 3) we ilat> 2000000 ORA-DA DESC ady bilen "% hark%" EDEBI"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 18

GROUP BY parametri

Recordsazgylary belli bir meýdan boýunça toparlamak üçin ulanylýar. Bu, adatça, umumy funksiýalary ulanmak üçin zerurdyr ... Jemi funksiýalar näme?)) Dürli ýazgylar üçin birmeňzeş bolsa, käbir meýdanlar boýunça toparlanmagyň manysy bar. Mysalymyzy ulanmagyň munuň manysyna seredeliň. Şäherlerde daşary ýurt açarlary - ýurt şahsyýetnamalary bar diýeliň. Şeýlelik bilen, şahsyýetnama şol bir ýurtdan gelen şäherler üçin deňdir. Şol sebäpden, olar tarapyndan ýazgylary alyp we toparlap bilersiňiz: $ SELECT country_id, COUNT (*) şäher GROUP BY country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 19Agöne jemleme funksiýalary bolmazdan, birneme gowşak görünýär, boýun almaly. Şonuň üçin iň köp ýaýran funksiýalara seredeliň:
  • COUNT - ýazgylaryň sany, toparlanmazdan ulanylyp bilner, COUNT (*) hökmünde ulanylýar . Käbir meýdan boýunça toparlara bölünen ýagdaýynda - COUNT (groupped_field);
  • MAX - belli bir meýdan üçin iň ýokary bahany tapýar;
  • MIN - belli bir meýdan üçin iň pes bahany tapýar;
  • SUM - belli bir meýdan üçin jemi tapýar;
  • AVG - ortaça bahany tapýar.
Umuman aýdanyňda, bu funksiýalary toparlara bölmezden ulanyp bolýar, diňe şonda diňe bir meýdan görkeziler. Olary şäher ilatymyz üçin synap göreliň: $ SELECT COUNT (*) şäherden; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 20Näme soran bolsa, alan zadydy. Diňe ýazgylaryň sany. Käwagt bu peýdalydyr. Mysal üçin, belli bir awtoryň makalalarynyň sanyny bilmek zerur bolsa. Olary maglumat bazasyndan çykarmaga we sanamaga zerurlyk ýok. Diňe COUNT () ulanyp bilersiňiz. $ AVG (ilat) şäherden saýlaň; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 21$ MIN (ilat) şäherden saýlaň; Toparlamak güýje girýär. Mysal üçin, wezipe ýurduň iň kiçi şäherini almakdyr. Muny nädip etmelidigini eýýäm bilýärsiňizmi? Özüňiz synap görüň, soňra synlaň: $ SELECT country_id asurt, MIN (ilat) şäherden WHERE GROUP BY country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 22Şu wagta çenli diňe ýurduň şahsyýet belgisini görýäris, ýöne bu möhüm däl - indiki gezek hemme zady ederis. Şeýlelik bilen eýýäm bir netije bar we islän zadymyzy aldyk - ID = 1 bilen ýurduň iň kiçi şäheri. Galan funksiýalar birmeňzeş bolar. Toparlamak we jemlemek ulanylanda ähli meýdanlary * çykarmagyň peýdasyzdygyny bellemelidiris! Bu barada oýlan ;)

Öý işi

Öňki makalalaryň netijelerine esaslanyp, öý işiniň edilýändigi düşnüklidir, geliň dowam edeliň)) Hawa, öý işini edenleriň hemmesi teswirlere “+” goýmagy dowam etdirer. Öý işiniň mowzugynyň size gyzykly bolmagy, geljekde-de dowam etmegim möhümdir. Hawa, teswirleriňizi yzygiderli okaýaryn. Elbetde, men ýygy-ýygydan jogap berýärin. Has kyn SQL meselelerini bermegi haýyş edendiklerini gördüm. Goşulmagy öwrenýänçäk, gyzykly meseleler bolmaz, şonuň üçin goşmaça materiallar üçin zerur zatlar bolar.

Wezipeler:

    HAVING operatoryna düşüniň we mysalymyzdan tablisalar üçin mysal soragyny ýazyň. Has düşnükli etmek üçin käbir meýdanlary ýa-da has köp bahalary goşmaly bolsaňyz, goşuň. Kimdir biri islese, mysal çözgüdiňizi teswirlere ýazyň: şeýlelik bilen wagtym bar bolsa barlap bilerin.
  1. UI arkaly maglumat bazasy bilen işlemek üçin MySQL Workbench guruň. Konsoldan işlemek bilen eýýäm ýeterlik tejribämiz bar diýip pikir edýärin. Maglumat bazasyna birikdiriň. Maglumat bazasy bilen işlemek üçin başga bir zat ulansaňyz, bu ýumuşdan geçip bilersiňiz. Bu ýerde we mundan beýläk diňe MySQL Workbench ulanaryn.
  2. Maglumatlarymyzy ulanyp almak üçin haýyşlary ýazyň:
    1. iň kiçi / iň köp ilatly ýurt;
    2. ýurtda ýaşaýanlaryň ortaça sany;
    3. atlary “a” bilen gutarýan ýurtlarda ýaşaýanlaryň ortaça sany;
    4. dört milliondan gowrak ilaty bolan ýurtlaryň sany;
    5. ilat sanyny azaltmak bilen ýurtlary tertiplemek;
    6. ýurtlary tebigy tertipde tertipläň.

Netije

Bu gün soňky sapakdan öý işini jikme-jik ara alyp maslahatlaşdyk. Mundan başga-da, muny etmedikler üçinem, edenler üçinem möhüm hasaplaýaryn. Öňküler üçin bu jogaby tapmaga, ikinjisi üçin bolsa netijäňiz bilen deňeşdirmäge mümkinçilikdir. Taslamadaky üýtgeşmeler barada täzelenmek üçin GitHub hasabyma ýazylyň . Kod bazasynyň hemmesini şol ýerde saklaryn. Hemme zat bu guramada bolar . Soň bolsa, SELECT beýanyny ara alyp maslahatlaşdyk. Ol biziň üçin iň möhümdir. Hut şonuň üçin maglumatlar üçin ähli haýyşlar geçer we biz muňa düşünmelidiris. Iň esasy zat, parametrleriň goşulýan tertibini ýatda saklamakdyr (WHERE, ORDER BY, GROUP BY we ş.m.). Hawa, mümkin bolan zatlaryň hemmesini aýtmadym, ýöne beýle maksat goýmadym. Hawa, anketa ýazmak isleýändigiňizi bilýärin. Sabyr et, bu saňa gerek zat. Taslama üçinem, hünär taýdan ösmegiňiz üçinem. Garaşýan wagtyňyz, Gitiň eýýäm size tanyşdygyna göz ýetiriň. Belli bir gural hökmünde, adaty ýagdaýda ulanaryn. Hemmäňize okanyňyz üçin sag boluň. Indiki makalada maglumatlar bazasynyň birikmeleri we birleşmeler hakda gürleşeris. Ine, ajaýyp meseleler bolar))

Tapgyryň ähli materiallarynyň sanawy bu makalanyň başynda.

Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION