{"id":256,"date":"2021-03-05T17:45:47","date_gmt":"2021-03-05T17:45:47","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/?post_type=chapter&#038;p=256"},"modified":"2021-05-06T15:56:05","modified_gmt":"2021-05-06T15:56:05","slug":"andmete-sisestamine-ja-lihtsamad-paringud","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/andmete-sisestamine-ja-lihtsamad-paringud\/","title":{"raw":"Andmete sisestamine ja lihtsamad p\u00e4ringud","rendered":"Andmete sisestamine ja lihtsamad p\u00e4ringud"},"content":{"raw":"<p style=\"text-align: justify\">N\u00fc\u00fcdseks oleme me tutvunud andmebaasi tabelite lisamisega. Kuidas nendesse tabelitesse aga andmeid lisada?<\/p>\r\n<p style=\"text-align: justify\">Selleks on kaks v\u00f5imalust <span class=\"aCOpRe\">\u2013 \u00fcksikute kirjete lisamine ning massandmete sisestamine failist.<\/span><\/p>\r\n<p style=\"text-align: justify\">K\u00e4esolevas peat\u00fckis tutvumegi k\u00f5igepealt \u00fcksikute kirjete sisestamisega ning seej\u00e4rel proovime lisada massandmeid eelmises peat\u00fckis loodud Netflixi andmebaasi.<\/p>\r\n\r\n<h2>\u00dcksiku kirje lisamine<\/h2>\r\n\u00dcksiku kirje lisamiseks n\u00e4eb SQL lause \u00fcldkuju v\u00e4lja selline:\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>INSERT INTO<\/strong><\/span> &lt;tabeli nimi&gt; (veerg, veerg2, ... )<\/code>\r\n<code><span style=\"color: #970000\"><strong>VALUES<\/strong><\/span> (veeru1_v\u00e4\u00e4rtus, veeru2_v\u00e4\u00e4rtus, ...)<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Siinkohal on oluline m\u00e4rkida, et kui meil on m\u00f5ni veerg, millele me oleme m\u00e4\u00e4ranud vaikev\u00e4\u00e4rtuse v\u00f5i mille andmet\u00fc\u00fcbiks on <em>serial<\/em>, v\u00f5ime me uut kirjet lisades selle veeru v\u00e4\u00e4rtuse lisamata j\u00e4tta.<\/p>\r\nOlgu meil tabel <em>Inimesed <\/em>veergudega:\r\n<ul>\r\n \t<li><em>id<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>serial<\/em><\/li>\r\n \t<li>primaarv\u00f5ti<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li><em>eesnimi <\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>varchar (50)<\/em><\/li>\r\n \t<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li>perekonnanimi\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>varchar (50)<\/em><\/li>\r\n \t<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li><em>s\u00fcnnip\u00e4ev<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>date<\/em><\/li>\r\n \t<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">See tabel on meil varasemas peat\u00fckis juba DBeaverisse lisatud. Kui me n\u00fc\u00fcd soovime lisada tabelisse <em>Inimesed<\/em> isikut, kelle eesnimi on \u2018Oskar\u2019, perekonnanimi \u2018Ohakas\u2019 ning s\u00fcnnip\u00e4ev \u20182002-06-17\u2019, saaksime me seda teha kahte moodi:<\/p>\r\n\r\n<ul>\r\n \t<li><strong><code><span style=\"color: #970000\">INSERT INTO<\/span><\/code><\/strong><code> Inimesed (id, eesnimi, perekonnanimi, s\u00fcnnip\u00e4ev)<\/code>\r\n<code><span style=\"color: #970000\"><strong>VALUES<\/strong><\/span> (1, 'Oskar', 'Ohakas', '2002-06-17')<\/code><\/li>\r\n \t<li><strong><code><span style=\"color: #970000\">INSERT INTO<\/span><\/code><\/strong><code> Inimesed (eesnimi, perekonnanimi, s\u00fcnnip\u00e4ev)<\/code>\r\n<code><span style=\"color: #970000\"><strong>VALUES<\/strong><\/span> ('Oskar', 'Ohakas', '2002-06-17')<\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Esimesel juhul t\u00e4psustame me ise veeru <em>id<\/em> v\u00e4\u00e4rtuse, kuid teisel juhul laseme me andmebaasil ise<em> id<\/em> v\u00e4\u00e4rtuse genereerida, sest veeru <em>id<\/em> andmet\u00fc\u00fcbiks on <em>serial<\/em>.<\/p>\r\n<p style=\"text-align: justify\">Proovige neid SQL lauseid ka ise SQL konsoolil jooksutada. Mis juhtub?<\/p>\r\n<p style=\"text-align: justify\">Illmselt saate te teise SQL lause korral veateate, et id v\u00e4\u00e4rtusega 1 on juba kasutusel. See ilmneb seet\u00f5ttu, et PostgreSQL <em>serial<\/em> andmet\u00fc\u00fcp ei t\u00f6\u00f6ta p\u00e4ris korrektselt juhul, kui me vahepeal ise selle andmet\u00fc\u00fcbiga veeru v\u00e4\u00e4rtust m\u00e4\u00e4rame. Nimelt hoiab <em>serial<\/em> andmet\u00fc\u00fcp m\u00e4lus indeksit, mis aitab tal alati \u00fche v\u00f5rra suuremat arvu genereerida. Kui aga lisada uus kirje t\u00e4psustades ise serial andmet\u00fc\u00fcbiga veeru v\u00e4\u00e4rtust, ei uuendata seda m\u00e4lus hoitavat indeksit. Proovides siis aga hiljem lisada kirjet, mille korral veeru v\u00e4\u00e4rtus automaatselt genereeritaks, ilmnebki veateade, et see id on juba kasutuses, sest m\u00e4lus hoitav indeks on tegelikust suurimast id-st maas. Selle probleemi v\u00e4ltimiseks tuleks v\u00f5imalusel alati j\u00e4tta <em>serial<\/em> andmet\u00fc\u00fcbi v\u00e4\u00e4rtus ise t\u00e4psustamata.<\/p>\r\n<p style=\"text-align: justify\">Et praegu m\u00e4lus hoitav indeks siiski \u00f5igeks muuta, jooksutage SQL konsoolil lauset:<\/p>\r\n\r\n<ul style=\"text-align: justify\">\r\n \t<li><strong><code><span style=\"color: #970000\">SELECT<\/span><\/code><\/strong><code> setval('inimesed_id_seq', (<span style=\"color: #970000\"><strong>SELECT <\/strong><\/span><span style=\"color: #000080\"><strong>MAX<\/strong><\/span> (id) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> Inimesed));<\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Proovige n\u00fc\u00fcd uuesti jooksutada SQL lauset isiku Oskar Ohakas lisamiseks, j\u00e4ttes <em>id<\/em> v\u00e4\u00e4rtus t\u00e4psustamata. N\u00fc\u00fcd peaks see \u00f5nnestuma.<\/p>\r\n<p style=\"text-align: justify\">K\u00f5iki lisatud kirjeid n\u00e4ete te tabeli<em> Inimesed<\/em> vahelehe <em>Data<\/em> all (ilmselt tuleb andmebaasi vaadet enne ka v\u00e4rskendada parem klikates andmebaasil <em>public<\/em> ja valides seej\u00e4rel <em>Refresh<\/em>).<\/p>\r\n<img class=\" wp-image-930 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/oskar_ohakas_tabelis-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" \/>\r\n\r\n[h5p id=\"33\"]\r\n<p style=\"text-align: justify\">Nagu \u00fclesandest v\u00e4lja tuleb, peab alati veenduma, et veeru v\u00e4\u00e4rtused lisatakse samas j\u00e4rjekorras, nagu veerud on SQL lauses kirja pandud. Vastasel juhul satub veeru alla vale v\u00e4\u00e4rtus ning teile antakse sellest veateatega m\u00e4rku. Halvimal juhul ei saa te eksituse korral isegi veateadet, sest vahetusse l\u00e4inud veergude andmet\u00fc\u00fcbid kattusid. N\u00e4iteks kui tabelisse Inimesed kirjet lisades vahetada \u00e4ra eesnime ja perekonnanime v\u00e4\u00e4rtused, ei tuleks veateadet, sest tunnuste <em>eesnimi <\/em>ja <em>perekonnanimi<\/em> andmet\u00fc\u00fcbid kattuvad.<\/p>\r\n\r\n<h2>Massandmete failist lugemine<\/h2>\r\n<p style=\"text-align: justify\">Vahel on vaja andmete \u00fckshaaval sisestamise asemel lisada neid andmebaasi hulgi. Sellistel juhtudel on vaja andmete failist lugemist.<\/p>\r\n<p style=\"text-align: justify\">Proovimegi n\u00fc\u00fcd lugeda eelmises peat\u00fckis loodud Netflixi andmebaasi tabelitesse suure hulga andmeid.<\/p>\r\n<p style=\"text-align: justify\">K\u00f5igepealt veendu, et k\u00f5ik eelmises peat\u00fckis kirjeldatud tabelid oleks loodud (<em>Riigid<\/em>, <em>Teosed<\/em>, <em>Isikud<\/em>, <em>Lavastamine<\/em>, <em>Naitlemine<\/em>). Seej\u00e4rel t\u00f5mba alla vajalikud andmefailid <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/Andmed.zip\">siit<\/a> ning paki allat\u00f5mmatud kaust lahti.<\/p>\r\n<p style=\"text-align: justify\">Kuna failist andmete lugemiseks on DBeaveril vaja ligip\u00e4\u00e4su teie arvutis olevatele andmefailidele, tuleb see luba DBeaverile anda. Ubuntu kasutajatel peaks vajalikud \u00f5igused andmefailidele juba olemas olema ning macOS kasutajatel on andmefailidele ligip\u00e4\u00e4su andmise protsess lihtne <span class=\"aCOpRe\">\u2013<\/span> p\u00e4rast massandmete lisamise SQL lause jooksutamist avaneb aken, kus te saate ligip\u00e4\u00e4su failidele lubada. Windowsi operatsioonis\u00fcsteemi kasutajad peavad aga DBeaverile ligip\u00e4\u00e4su andmefaile sisaldava kausta jaoks k\u00e4sitsi andma. Seega kui sa kasutad Windowsi operatsioonis\u00fcsteemi, ava <a href=\"https:\/\/drive.google.com\/file\/d\/1TiafeFhpgPt4NKdEVQ7eDLI9F4gwAgQs\/view?usp=sharing\">see juhis<\/a> ning t\u00e4ida k\u00f5ik sammud.<\/p>\r\n<p style=\"text-align: justify\">SQL lause \u00fcldkuju, mille abil saab andmeid failist tabelisse lugeda, on j\u00e4rgnev:<\/p>\r\n\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>COPY<\/strong><\/span> &lt;tabeli nimi&gt;\r\n<span style=\"color: #970000\"><strong>FROM<\/strong><\/span> '&lt;t\u00e4ielik tee andmefailini&gt;'\r\n<span style=\"color: #000080\"><strong>DELIMITER<\/strong><\/span> E'\\t'<\/code>\r\n<code><span style=\"color: #000080\"><strong>ENCODING<\/strong> <\/span>'UTF-8'\r\n<span style=\"color: #000080\"><strong>CSV<\/strong><\/span><span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Tabeli nimi tuleb asenda tabeliga, kuhu soovid andmeid lugeda, n\u00e4iteks <em><span style=\"color: #008000\">Riigid<\/span>.<\/em> T\u00e4ielik tee andmefailini peaks olema n\u00e4iteks Windowsis midagi sellist: <span style=\"color: #008000\">'C:\\\\Users\\\\Kasutaja\\\\Desktop\\\\Andmed\\\\riigid.csv'<span style=\"color: #000000\">. <span style=\"color: #333333\"><em>DELIMITER<\/em> ehk eesti keeles eraldaja m\u00e4\u00e4rab \u00e4ra, kuidas on .<em>csv<\/em> failis olevad v\u00e4\u00e4rtused omavahel eraldatud. Meie .<em>csv<\/em> failides on eraldajaks <em>tab<\/em> ehk siis <em>E'\\t'. ENCODING <\/em>m\u00e4\u00e4rab \u00e4ra faili tekstikodeeringu, milleks meil on 'UTF-8'. <em>CSV<\/em> m\u00e4rgib lause l\u00f5pus \u00e4ra, et me soovime andmeid lugeda .<em>csv<\/em> failist.<\/span><\/span><\/span><\/p>\r\n<p style=\"text-align: justify\">Avage n\u00fc\u00fcd DBeaver ning jooksutage \u00e4sja tutvustatud SQL lauset iga tabeli jaoks. Andmefailid on nimetatud samade nimedega, nagu meie Netflixi andmebaasis olevad tabelid, seega tabelile vastavat andmefaili peaks olema \u00fcpriski lihtne leida.<\/p>\r\n<p style=\"text-align: justify\">Igaks juhuks viime siiski vastavusse meie andmebaasis olevad tabelid ning neile vastavad andmefailid:<\/p>\r\n\r\n<ul>\r\n \t<li>Riigid -&gt; <em>riigid.csv<\/em><\/li>\r\n \t<li>Teosed -&gt; <em>teosed.csv<\/em><\/li>\r\n \t<li>Isikud -&gt; <em>isikud.csv<\/em><\/li>\r\n \t<li>Lavastamine -&gt; <em>lavastamine.csv<\/em><\/li>\r\n \t<li>Naitlemine -&gt; <em>naitlemine.csv<\/em><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Kui iga tabeli jaoks on andmed andmebaasi lisatud, v\u00f5ite avada n\u00e4iteks tabeli <em>Isikud<\/em> ning liikuda <em>Data<\/em> vahelehe alla. N\u00fc\u00fcd peaksite te n\u00e4gema igal real \u00fche isiku kohta k\u00e4ivaid andmeid. Kui andmeid pole n\u00e4ha ning SQL lauseid jooksutades vigu ei ilmnend, siis proovige andmebaasi vaadet v\u00e4rskendada. Selleks vajutage parem klikk andmebaasi <em>public<\/em> peal ning avanenud valikutest klikake <em>Refresh<\/em> peal.<\/p>\r\n<img class=\" wp-image-932 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_isikud_andmed-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" \/>\r\n<p style=\"text-align: justify\">Kuna me lisasime n\u00fc\u00fcd igasse tabelisse suure hulga andmeid, millel olid veeru <em>id<\/em> v\u00e4\u00e4rtused k\u00e4sitsi m\u00e4\u00e4ratud, ilmneb j\u00e4llegi viga seoses<em> serial<\/em> andmet\u00fc\u00fcbiga. Selle parandamiseks jooksutage j\u00e4rgnevaid SQL lauseid SQL konsoolis:<\/p>\r\n\r\n<ul>\r\n \t<li><strong><code><span style=\"color: #970000\">SELECT <\/span><\/code><\/strong><code>setval('riigid_id_seq', (<span style=\"color: #970000\"><strong>SELECT <span style=\"color: #000080\">MAX<\/span><\/strong><\/span> (id) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> Riigid))<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> setval('teosed_id_seq', (<span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>MAX<\/strong><\/span> (id) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> Teosed))<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> setval('isikud_id_seq', (<span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>MAX<\/strong><\/span> (id)<span style=\"color: #970000\"><strong> FROM<\/strong><\/span> Isikud))<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> setval('lavastamine_id_seq', (<span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>MAX<\/strong><\/span> (id) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> Lavastamine))<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> setval('naitlemine_id_seq', (<span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>MAX<\/strong><\/span> (id) <span style=\"color: #993300\"><strong>FROM<\/strong><\/span> Naitlemine))<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n<\/ul>\r\n<h2>P\u00e4ringud<\/h2>\r\n<p style=\"text-align: justify\">N\u00fc\u00fcd, kui meil on andmebaasis hulk andmeid olemas, on \u00f5ige aeg m\u00f5elda sellele, kuidas andmeid andmebaasist <strong>p\u00e4rida<\/strong><em>. <\/em>P\u00e4ringud aitavad meil andmebaasile \"k\u00fcsimusi\" esitada, millele andmebaas seej\u00e4rel vastab. P\u00e4ringu s\u00fcntaks n\u00e4eb v\u00e4lja selline:<\/p>\r\n\r\n<ul>\r\n \t<li class=\"result notranslate\"><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> veerg<\/code><sub><code>1<\/code><\/sub><code>, veerg<\/code><sub><code>2<\/code><\/sub><code>, ..., veerg<\/code><sub><code>n<\/code><\/sub><code> <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> &lt;tabeli nimi&gt;<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Seega p\u00e4ringus saab t\u00e4psustada, mis tabelist ning millistest tabeli veergudest soovime me andmeid saada. Kui on soov n\u00e4ha tabeli k\u00f5ikide veergude sisu, siis selle asemel, et loetleda \u00fckshaaval ette k\u00f5ik tabeli veerud, v\u00f5ib kirjutada:<\/p>\r\n\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> * <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> &lt;tabeli nimi&gt;<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Siin * t\u00e4histabki k\u00f5iki tabelis olevaid veerge.<\/p>\r\n<p style=\"text-align: justify\">Selleks, et saada parem aimdus, kuidas p\u00e4ringud t\u00f6\u00f6tavad ning mida siis ikkagi meile v\u00e4ljastatakse, proovime Netflixi andmebaais \u00fchte lihtsat n\u00e4idet <span class=\"aCOpRe\">\u2013<\/span> p\u00e4rime andmebaasist k\u00f5ikide riikide nimed ning rahvastikuarvud.<\/p>\r\n<p style=\"text-align: justify\">Selleks ava DBeaveri SQL konsool ning k\u00e4ivita seal j\u00e4rgnev SQL lause:<\/p>\r\n\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> nimi, rahvastikuarv <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> Riigid<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Teile peaks tulema n\u00e4htavale j\u00e4rgnev sisu:<\/p>\r\n<img class=\" wp-image-933 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/riigid_paring-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" \/>\r\n<p style=\"text-align: justify\">Nagu n\u00e4ha, siis p\u00e4ringu vasteks tulid k\u00f5ik tabelis <em>Riigid<\/em> olevad riigid ning nende rahvastikuarvud. Vaata n\u00fc\u00fcd tabeli <em>Riigid<\/em> vahelehte <em>Data.\u00a0<\/em>Sealt peaks olema n\u00e4htav, et tegelikult oli meil tabelis\u00a0<em>Riigid<\/em> palju rohkem veerge ning andmeid, kuid p\u00e4ringu abil saime me tabelist valida vaid selle info, mis meile oluline on.<\/p>\r\n<img class=\" wp-image-934 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_riigid_data-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" \/>\r\n<p style=\"text-align: justify\">See oli aga \u00e4\u00e4rmiselt lihtne p\u00e4ring. Sellest, kuidas koostada juba keerukamaid p\u00e4ringuid, saab lugeda k\u00e4esoleva \u00f5piku teisest suurest peat\u00fckist <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/sissejuhatus\/\">\"Andmebaaside p\u00e4ringud\"<\/a>.<\/p>\r\nSelles peat\u00fckis Netflixi andmebaasi lisatud andmed on p\u00e4rit <a href=\"https:\/\/www.kaggle.com\/shivamb\/netflix-shows\">siit<\/a> ja <a href=\"https:\/\/www.kaggle.com\/sudalairajkumar\/undata-country-profiles?fbclid=IwAR3AcwCZwu9-1N8N6IxrnyuW7NvSAaRbIjfAkrmx6wKZqa-EkSVGvH1GZic\">siit<\/a> ning need on kohandatud sobivaks Siim Tanel Laisaare poolt.","rendered":"<p style=\"text-align: justify\">N\u00fc\u00fcdseks oleme me tutvunud andmebaasi tabelite lisamisega. Kuidas nendesse tabelitesse aga andmeid lisada?<\/p>\n<p style=\"text-align: justify\">Selleks on kaks v\u00f5imalust <span class=\"aCOpRe\">\u2013 \u00fcksikute kirjete lisamine ning massandmete sisestamine failist.<\/span><\/p>\n<p style=\"text-align: justify\">K\u00e4esolevas peat\u00fckis tutvumegi k\u00f5igepealt \u00fcksikute kirjete sisestamisega ning seej\u00e4rel proovime lisada massandmeid eelmises peat\u00fckis loodud Netflixi andmebaasi.<\/p>\n<h2>\u00dcksiku kirje lisamine<\/h2>\n<p>\u00dcksiku kirje lisamiseks n\u00e4eb SQL lause \u00fcldkuju v\u00e4lja selline:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>INSERT INTO<\/strong><\/span> &lt;tabeli nimi&gt; (veerg, veerg2, ... )<\/code><br \/>\n<code><span style=\"color: #970000\"><strong>VALUES<\/strong><\/span> (veeru1_v\u00e4\u00e4rtus, veeru2_v\u00e4\u00e4rtus, ...)<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Siinkohal on oluline m\u00e4rkida, et kui meil on m\u00f5ni veerg, millele me oleme m\u00e4\u00e4ranud vaikev\u00e4\u00e4rtuse v\u00f5i mille andmet\u00fc\u00fcbiks on <em>serial<\/em>, v\u00f5ime me uut kirjet lisades selle veeru v\u00e4\u00e4rtuse lisamata j\u00e4tta.<\/p>\n<p>Olgu meil tabel <em>Inimesed <\/em>veergudega:<\/p>\n<ul>\n<li><em>id<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>serial<\/em><\/li>\n<li>primaarv\u00f5ti<\/li>\n<\/ul>\n<\/li>\n<li><em>eesnimi <\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>varchar (50)<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<li>perekonnanimi\n<ul>\n<li>andmet\u00fc\u00fcp <em>varchar (50)<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<li><em>s\u00fcnnip\u00e4ev<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>date<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"text-align: justify\">See tabel on meil varasemas peat\u00fckis juba DBeaverisse lisatud. Kui me n\u00fc\u00fcd soovime lisada tabelisse <em>Inimesed<\/em> isikut, kelle eesnimi on \u2018Oskar\u2019, perekonnanimi \u2018Ohakas\u2019 ning s\u00fcnnip\u00e4ev \u20182002-06-17\u2019, saaksime me seda teha kahte moodi:<\/p>\n<ul>\n<li><strong><code><span style=\"color: #970000\">INSERT INTO<\/span><\/code><\/strong><code> Inimesed (id, eesnimi, perekonnanimi, s\u00fcnnip\u00e4ev)<\/code><br \/>\n<code><span style=\"color: #970000\"><strong>VALUES<\/strong><\/span> (1, 'Oskar', 'Ohakas', '2002-06-17')<\/code><\/li>\n<li><strong><code><span style=\"color: #970000\">INSERT INTO<\/span><\/code><\/strong><code> Inimesed (eesnimi, perekonnanimi, s\u00fcnnip\u00e4ev)<\/code><br \/>\n<code><span style=\"color: #970000\"><strong>VALUES<\/strong><\/span> ('Oskar', 'Ohakas', '2002-06-17')<\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Esimesel juhul t\u00e4psustame me ise veeru <em>id<\/em> v\u00e4\u00e4rtuse, kuid teisel juhul laseme me andmebaasil ise<em> id<\/em> v\u00e4\u00e4rtuse genereerida, sest veeru <em>id<\/em> andmet\u00fc\u00fcbiks on <em>serial<\/em>.<\/p>\n<p style=\"text-align: justify\">Proovige neid SQL lauseid ka ise SQL konsoolil jooksutada. Mis juhtub?<\/p>\n<p style=\"text-align: justify\">Illmselt saate te teise SQL lause korral veateate, et id v\u00e4\u00e4rtusega 1 on juba kasutusel. See ilmneb seet\u00f5ttu, et PostgreSQL <em>serial<\/em> andmet\u00fc\u00fcp ei t\u00f6\u00f6ta p\u00e4ris korrektselt juhul, kui me vahepeal ise selle andmet\u00fc\u00fcbiga veeru v\u00e4\u00e4rtust m\u00e4\u00e4rame. Nimelt hoiab <em>serial<\/em> andmet\u00fc\u00fcp m\u00e4lus indeksit, mis aitab tal alati \u00fche v\u00f5rra suuremat arvu genereerida. Kui aga lisada uus kirje t\u00e4psustades ise serial andmet\u00fc\u00fcbiga veeru v\u00e4\u00e4rtust, ei uuendata seda m\u00e4lus hoitavat indeksit. Proovides siis aga hiljem lisada kirjet, mille korral veeru v\u00e4\u00e4rtus automaatselt genereeritaks, ilmnebki veateade, et see id on juba kasutuses, sest m\u00e4lus hoitav indeks on tegelikust suurimast id-st maas. Selle probleemi v\u00e4ltimiseks tuleks v\u00f5imalusel alati j\u00e4tta <em>serial<\/em> andmet\u00fc\u00fcbi v\u00e4\u00e4rtus ise t\u00e4psustamata.<\/p>\n<p style=\"text-align: justify\">Et praegu m\u00e4lus hoitav indeks siiski \u00f5igeks muuta, jooksutage SQL konsoolil lauset:<\/p>\n<ul style=\"text-align: justify\">\n<li><strong><code><span style=\"color: #970000\">SELECT<\/span><\/code><\/strong><code> setval('inimesed_id_seq', (<span style=\"color: #970000\"><strong>SELECT <\/strong><\/span><span style=\"color: #000080\"><strong>MAX<\/strong><\/span> (id) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> Inimesed));<\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Proovige n\u00fc\u00fcd uuesti jooksutada SQL lauset isiku Oskar Ohakas lisamiseks, j\u00e4ttes <em>id<\/em> v\u00e4\u00e4rtus t\u00e4psustamata. N\u00fc\u00fcd peaks see \u00f5nnestuma.<\/p>\n<p style=\"text-align: justify\">K\u00f5iki lisatud kirjeid n\u00e4ete te tabeli<em> Inimesed<\/em> vahelehe <em>Data<\/em> all (ilmselt tuleb andmebaasi vaadet enne ka v\u00e4rskendada parem klikates andmebaasil <em>public<\/em> ja valides seej\u00e4rel <em>Refresh<\/em>).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-930 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/oskar_ohakas_tabelis-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/oskar_ohakas_tabelis-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/oskar_ohakas_tabelis-768x576.png 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/oskar_ohakas_tabelis-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/oskar_ohakas_tabelis-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/oskar_ohakas_tabelis-350x263.png 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/oskar_ohakas_tabelis.png 1024w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<div id=\"h5p-33\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-33\" class=\"h5p-iframe\" data-content-id=\"33\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"AT_7_kontrollk\u00fcsimus_1\"><\/iframe><\/div>\n<\/div>\n<p style=\"text-align: justify\">Nagu \u00fclesandest v\u00e4lja tuleb, peab alati veenduma, et veeru v\u00e4\u00e4rtused lisatakse samas j\u00e4rjekorras, nagu veerud on SQL lauses kirja pandud. Vastasel juhul satub veeru alla vale v\u00e4\u00e4rtus ning teile antakse sellest veateatega m\u00e4rku. Halvimal juhul ei saa te eksituse korral isegi veateadet, sest vahetusse l\u00e4inud veergude andmet\u00fc\u00fcbid kattusid. N\u00e4iteks kui tabelisse Inimesed kirjet lisades vahetada \u00e4ra eesnime ja perekonnanime v\u00e4\u00e4rtused, ei tuleks veateadet, sest tunnuste <em>eesnimi <\/em>ja <em>perekonnanimi<\/em> andmet\u00fc\u00fcbid kattuvad.<\/p>\n<h2>Massandmete failist lugemine<\/h2>\n<p style=\"text-align: justify\">Vahel on vaja andmete \u00fckshaaval sisestamise asemel lisada neid andmebaasi hulgi. Sellistel juhtudel on vaja andmete failist lugemist.<\/p>\n<p style=\"text-align: justify\">Proovimegi n\u00fc\u00fcd lugeda eelmises peat\u00fckis loodud Netflixi andmebaasi tabelitesse suure hulga andmeid.<\/p>\n<p style=\"text-align: justify\">K\u00f5igepealt veendu, et k\u00f5ik eelmises peat\u00fckis kirjeldatud tabelid oleks loodud (<em>Riigid<\/em>, <em>Teosed<\/em>, <em>Isikud<\/em>, <em>Lavastamine<\/em>, <em>Naitlemine<\/em>). Seej\u00e4rel t\u00f5mba alla vajalikud andmefailid <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/Andmed.zip\">siit<\/a> ning paki allat\u00f5mmatud kaust lahti.<\/p>\n<p style=\"text-align: justify\">Kuna failist andmete lugemiseks on DBeaveril vaja ligip\u00e4\u00e4su teie arvutis olevatele andmefailidele, tuleb see luba DBeaverile anda. Ubuntu kasutajatel peaks vajalikud \u00f5igused andmefailidele juba olemas olema ning macOS kasutajatel on andmefailidele ligip\u00e4\u00e4su andmise protsess lihtne <span class=\"aCOpRe\">\u2013<\/span> p\u00e4rast massandmete lisamise SQL lause jooksutamist avaneb aken, kus te saate ligip\u00e4\u00e4su failidele lubada. Windowsi operatsioonis\u00fcsteemi kasutajad peavad aga DBeaverile ligip\u00e4\u00e4su andmefaile sisaldava kausta jaoks k\u00e4sitsi andma. Seega kui sa kasutad Windowsi operatsioonis\u00fcsteemi, ava <a href=\"https:\/\/drive.google.com\/file\/d\/1TiafeFhpgPt4NKdEVQ7eDLI9F4gwAgQs\/view?usp=sharing\">see juhis<\/a> ning t\u00e4ida k\u00f5ik sammud.<\/p>\n<p style=\"text-align: justify\">SQL lause \u00fcldkuju, mille abil saab andmeid failist tabelisse lugeda, on j\u00e4rgnev:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>COPY<\/strong><\/span> &lt;tabeli nimi&gt;<br \/>\n<span style=\"color: #970000\"><strong>FROM<\/strong><\/span> '&lt;t\u00e4ielik tee andmefailini&gt;'<br \/>\n<span style=\"color: #000080\"><strong>DELIMITER<\/strong><\/span> E'\\t'<\/code><br \/>\n<code><span style=\"color: #000080\"><strong>ENCODING<\/strong> <\/span>'UTF-8'<br \/>\n<span style=\"color: #000080\"><strong>CSV<\/strong><\/span><span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Tabeli nimi tuleb asenda tabeliga, kuhu soovid andmeid lugeda, n\u00e4iteks <em><span style=\"color: #008000\">Riigid<\/span>.<\/em> T\u00e4ielik tee andmefailini peaks olema n\u00e4iteks Windowsis midagi sellist: <span style=\"color: #008000\">&#8216;C:\\\\Users\\\\Kasutaja\\\\Desktop\\\\Andmed\\\\riigid.csv&#8217;<span style=\"color: #000000\">. <span style=\"color: #333333\"><em>DELIMITER<\/em> ehk eesti keeles eraldaja m\u00e4\u00e4rab \u00e4ra, kuidas on .<em>csv<\/em> failis olevad v\u00e4\u00e4rtused omavahel eraldatud. Meie .<em>csv<\/em> failides on eraldajaks <em>tab<\/em> ehk siis <em>E&#8217;\\t&#8217;. ENCODING <\/em>m\u00e4\u00e4rab \u00e4ra faili tekstikodeeringu, milleks meil on &#8216;UTF-8&#8217;. <em>CSV<\/em> m\u00e4rgib lause l\u00f5pus \u00e4ra, et me soovime andmeid lugeda .<em>csv<\/em> failist.<\/span><\/span><\/span><\/p>\n<p style=\"text-align: justify\">Avage n\u00fc\u00fcd DBeaver ning jooksutage \u00e4sja tutvustatud SQL lauset iga tabeli jaoks. Andmefailid on nimetatud samade nimedega, nagu meie Netflixi andmebaasis olevad tabelid, seega tabelile vastavat andmefaili peaks olema \u00fcpriski lihtne leida.<\/p>\n<p style=\"text-align: justify\">Igaks juhuks viime siiski vastavusse meie andmebaasis olevad tabelid ning neile vastavad andmefailid:<\/p>\n<ul>\n<li>Riigid -&gt; <em>riigid.csv<\/em><\/li>\n<li>Teosed -&gt; <em>teosed.csv<\/em><\/li>\n<li>Isikud -&gt; <em>isikud.csv<\/em><\/li>\n<li>Lavastamine -&gt; <em>lavastamine.csv<\/em><\/li>\n<li>Naitlemine -&gt; <em>naitlemine.csv<\/em><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Kui iga tabeli jaoks on andmed andmebaasi lisatud, v\u00f5ite avada n\u00e4iteks tabeli <em>Isikud<\/em> ning liikuda <em>Data<\/em> vahelehe alla. N\u00fc\u00fcd peaksite te n\u00e4gema igal real \u00fche isiku kohta k\u00e4ivaid andmeid. Kui andmeid pole n\u00e4ha ning SQL lauseid jooksutades vigu ei ilmnend, siis proovige andmebaasi vaadet v\u00e4rskendada. Selleks vajutage parem klikk andmebaasi <em>public<\/em> peal ning avanenud valikutest klikake <em>Refresh<\/em> peal.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-932 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_isikud_andmed-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_isikud_andmed-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_isikud_andmed-768x576.png 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_isikud_andmed-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_isikud_andmed-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_isikud_andmed-350x263.png 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_isikud_andmed.png 1024w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p style=\"text-align: justify\">Kuna me lisasime n\u00fc\u00fcd igasse tabelisse suure hulga andmeid, millel olid veeru <em>id<\/em> v\u00e4\u00e4rtused k\u00e4sitsi m\u00e4\u00e4ratud, ilmneb j\u00e4llegi viga seoses<em> serial<\/em> andmet\u00fc\u00fcbiga. Selle parandamiseks jooksutage j\u00e4rgnevaid SQL lauseid SQL konsoolis:<\/p>\n<ul>\n<li><strong><code><span style=\"color: #970000\">SELECT <\/span><\/code><\/strong><code>setval('riigid_id_seq', (<span style=\"color: #970000\"><strong>SELECT <span style=\"color: #000080\">MAX<\/span><\/strong><\/span> (id) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> Riigid))<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> setval('teosed_id_seq', (<span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>MAX<\/strong><\/span> (id) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> Teosed))<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> setval('isikud_id_seq', (<span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>MAX<\/strong><\/span> (id)<span style=\"color: #970000\"><strong> FROM<\/strong><\/span> Isikud))<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> setval('lavastamine_id_seq', (<span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>MAX<\/strong><\/span> (id) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> Lavastamine))<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> setval('naitlemine_id_seq', (<span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>MAX<\/strong><\/span> (id) <span style=\"color: #993300\"><strong>FROM<\/strong><\/span> Naitlemine))<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<\/ul>\n<h2>P\u00e4ringud<\/h2>\n<p style=\"text-align: justify\">N\u00fc\u00fcd, kui meil on andmebaasis hulk andmeid olemas, on \u00f5ige aeg m\u00f5elda sellele, kuidas andmeid andmebaasist <strong>p\u00e4rida<\/strong><em>. <\/em>P\u00e4ringud aitavad meil andmebaasile &#8220;k\u00fcsimusi&#8221; esitada, millele andmebaas seej\u00e4rel vastab. P\u00e4ringu s\u00fcntaks n\u00e4eb v\u00e4lja selline:<\/p>\n<ul>\n<li class=\"result notranslate\"><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> veerg<\/code><sub><code>1<\/code><\/sub><code>, veerg<\/code><sub><code>2<\/code><\/sub><code>, ..., veerg<\/code><sub><code>n<\/code><\/sub><code> <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> &lt;tabeli nimi&gt;<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Seega p\u00e4ringus saab t\u00e4psustada, mis tabelist ning millistest tabeli veergudest soovime me andmeid saada. Kui on soov n\u00e4ha tabeli k\u00f5ikide veergude sisu, siis selle asemel, et loetleda \u00fckshaaval ette k\u00f5ik tabeli veerud, v\u00f5ib kirjutada:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> * <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> &lt;tabeli nimi&gt;<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Siin * t\u00e4histabki k\u00f5iki tabelis olevaid veerge.<\/p>\n<p style=\"text-align: justify\">Selleks, et saada parem aimdus, kuidas p\u00e4ringud t\u00f6\u00f6tavad ning mida siis ikkagi meile v\u00e4ljastatakse, proovime Netflixi andmebaais \u00fchte lihtsat n\u00e4idet <span class=\"aCOpRe\">\u2013<\/span> p\u00e4rime andmebaasist k\u00f5ikide riikide nimed ning rahvastikuarvud.<\/p>\n<p style=\"text-align: justify\">Selleks ava DBeaveri SQL konsool ning k\u00e4ivita seal j\u00e4rgnev SQL lause:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> nimi, rahvastikuarv <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> Riigid<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Teile peaks tulema n\u00e4htavale j\u00e4rgnev sisu:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-933 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/riigid_paring-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/riigid_paring-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/riigid_paring-768x576.png 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/riigid_paring-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/riigid_paring-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/riigid_paring-350x263.png 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/riigid_paring.png 1024w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p style=\"text-align: justify\">Nagu n\u00e4ha, siis p\u00e4ringu vasteks tulid k\u00f5ik tabelis <em>Riigid<\/em> olevad riigid ning nende rahvastikuarvud. Vaata n\u00fc\u00fcd tabeli <em>Riigid<\/em> vahelehte <em>Data.\u00a0<\/em>Sealt peaks olema n\u00e4htav, et tegelikult oli meil tabelis\u00a0<em>Riigid<\/em> palju rohkem veerge ning andmeid, kuid p\u00e4ringu abil saime me tabelist valida vaid selle info, mis meile oluline on.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-934 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_riigid_data-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_riigid_data-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_riigid_data-768x576.png 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_riigid_data-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_riigid_data-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_riigid_data-350x263.png 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabel_riigid_data.png 1024w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p style=\"text-align: justify\">See oli aga \u00e4\u00e4rmiselt lihtne p\u00e4ring. Sellest, kuidas koostada juba keerukamaid p\u00e4ringuid, saab lugeda k\u00e4esoleva \u00f5piku teisest suurest peat\u00fckist <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/sissejuhatus\/\">&#8220;Andmebaaside p\u00e4ringud&#8221;<\/a>.<\/p>\n<p>Selles peat\u00fckis Netflixi andmebaasi lisatud andmed on p\u00e4rit <a href=\"https:\/\/www.kaggle.com\/shivamb\/netflix-shows\">siit<\/a> ja <a href=\"https:\/\/www.kaggle.com\/sudalairajkumar\/undata-country-profiles?fbclid=IwAR3AcwCZwu9-1N8N6IxrnyuW7NvSAaRbIjfAkrmx6wKZqa-EkSVGvH1GZic\">siit<\/a> ning need on kohandatud sobivaks Siim Tanel Laisaare poolt.<\/p>\n","protected":false},"author":33,"menu_order":7,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-256","chapter","type-chapter","status-publish","hentry"],"part":3,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/users\/33"}],"version-history":[{"count":44,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/256\/revisions"}],"predecessor-version":[{"id":1378,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/256\/revisions\/1378"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/parts\/3"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/256\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/media?parent=256"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapter-type?post=256"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/contributor?post=256"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/license?post=256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}