Java taslamasyny döretmek baradaky seriýadan bir makala (beýleki materiallara baglanyşyk ahyrynda). Maksady esasy tehnologiýalary seljermek, netijesi telegramma bot ýazmak.
Salam, 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.
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; Tablisa 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.
Öý işini barlamak
Wezipeleri ü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:- ID meýdançasyndan ýurt tablisasynyň shemasyna esasy açary (PRIMARY KEY) goşmaly.
- Tableurt tablisasyna başga bir ýurt goşuň - Moldowa.
- Öň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.
- Şäher tablisasyna esasy açar goşuň.
- Şäher stoluna daşary ýurt açary goşuň.
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));
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;
-
we buýruk bilen derrew barlaň:
$ DESC ýurt;
hemme zat dogry, tablisa biziňki. Aşakdakylary ýazalyň:
$ HEMMESI TABALY ýurt ÜÇIN PRIMARY KEY (ID) goşuň;
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; Maglumat 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.
Şä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;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; AUTO_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: Indi 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ň; Allö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; Biz 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); Muň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; Ajaý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%"; Ş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 Gö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 Indi 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%" EDEBIGROUP 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; Agö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.
Öý 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.
- 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.
- Maglumatlarymyzy ulanyp almak üçin haýyşlary ýazyň:
- iň kiçi / iň köp ilatly ýurt;
- ýurtda ýaşaýanlaryň ortaça sany;
- atlary “a” bilen gutarýan ýurtlarda ýaşaýanlaryň ortaça sany;
- dört milliondan gowrak ilaty bolan ýurtlaryň sany;
- ilat sanyny azaltmak bilen ýurtlary tertiplemek;
- ýurtlary tebigy tertipde tertipläň.
GO TO FULL VERSION