{"id":254,"date":"2021-03-05T17:45:16","date_gmt":"2021-03-05T17:45:16","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/?post_type=chapter&#038;p=254"},"modified":"2021-05-06T15:55:45","modified_gmt":"2021-05-06T15:55:45","slug":"vaikevaartused-ja-kitsendused","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/vaikevaartused-ja-kitsendused\/","title":{"raw":"Vaikev\u00e4\u00e4rtused ja kitsendused","rendered":"Vaikev\u00e4\u00e4rtused ja kitsendused"},"content":{"raw":"<p style=\"text-align: justify\">Selles peat\u00fckis vaatame t\u00e4psemalt erinevaid vaikev\u00e4\u00e4rtusi ning veergude ja tabelite kitsendusi. Alustame ka suurema andmebaasi loomisega, millesse saame juba j\u00e4rgmises peat\u00fckis andmeid lisama hakata.<\/p>\r\n<p style=\"text-align: justify\">Meeldetuletuseks, et SQL lause, mille abil on v\u00f5imalus andmebaasist tabeleid kustutada, on selline:<\/p>\r\n\r\n<ul>\r\n \t<li style=\"text-align: justify\"><code><span style=\"color: #970000\"><strong>DROP TABLE<\/strong><\/span> &lt;tabeli nimi&gt;<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n<\/ul>\r\n<h2>Vaikev\u00e4\u00e4rtused<\/h2>\r\n<p style=\"text-align: justify\">Vahel v\u00f5ib meie andmebaasis olla veerge, mille v\u00e4\u00e4rtusi me iga kord k\u00e4sitsi sisestada ei taha, vaid pigem ainult erandjuhtudel. Selliste veergude korral on v\u00f5imalik kasutada vaikev\u00e4\u00e4rtusi. Veeru vaikev\u00e4\u00e4rtuseid defineeritakse tabeli loomisel veeru definitsioonis j\u00e4rgmiselt:<\/p>\r\n\r\n<ul style=\"text-align: justify\">\r\n \t<li><code>&lt;veeru nimi&gt; &lt;andmet\u00fc\u00fcp&gt;<span style=\"color: #970000\"> <strong>DEFAULT<\/strong><\/span> &lt;vaikev\u00e4\u00e4rtus&gt;<\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">N\u00e4iteks eelmises peat\u00fckis l\u00f5ime me tabeli <em>Toode, <\/em>milles oli veerg <em>lisamiskuup\u00e4ev<\/em>. Oleks ju mugav, kui me iga lisatud toote korral ei peaks k\u00e4sitsi praegust kuup\u00e4eva t\u00e4psustama, vaid see tehtaks automaatselt meie eest \u00e4ra. Selleks, et lisada veerule <em>lisamiskuup\u00e4ev <\/em>vaikev\u00e4\u00e4rtuseks praegune ajahetk, oleksime me v\u00f5inud tabeli <em>Toode<\/em> luua hoopis nii:<\/p>\r\n\r\n<ul style=\"text-align: justify\">\r\n \t<li style=\"text-align: justify\"><strong><code><span style=\"color: #970000\">CREATE TABLE<\/span><\/code><\/strong><code> Toode (<\/code>\r\n<code>id <\/code><strong><code><span style=\"color: #000080\">SERIAL<\/span> <span style=\"color: #970000\">PRIMARY KEY NOT NULL<\/span><\/code><\/strong><code>,<\/code>\r\n<code>nimi <\/code><strong><code><span style=\"color: #000080\">VARCHAR (100)<\/span> <span style=\"color: #970000\">NOT NULL<\/span><\/code><\/strong><code>,<\/code>\r\n<code>hind <span style=\"color: #000080\"><strong>NUMERIC<\/strong><\/span> <span style=\"color: #970000\"><strong>NOT NULL<\/strong><\/span>,<\/code>\r\n<code>lisamiskuup\u00e4ev <\/code><strong><code><span style=\"color: #000080\">DATE<\/span> <span style=\"color: #970000\">DEFAULT <\/span><\/code><\/strong><span style=\"color: #333333\"><code>CURRENT_DATE<\/code><\/span><strong><code><span style=\"color: #970000\"> NOT NULL<\/span><\/code><\/strong><code>,<\/code>\r\n<code>aegumiskuup\u00e4ev <span style=\"color: #000080\"><strong>DATE<\/strong><\/span> <span style=\"color: #970000\"><strong>NOT NULL<\/strong><\/span><\/code>\r\n<code>)<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\"><em>CURRENT_DATE,\u00a0<\/em>mille me lisasime veeru\u00a0<em>lisamiskuup\u00e4ev<\/em> vaikev\u00e4\u00e4rtuseks, on ise funktsioon, mis viitab praegusele ajahetkele. Vaikev\u00e4\u00e4rtuseks ei pea aga olema funktsioon, vaid kuup\u00e4eva v\u00f5ib ka k\u00e4sitsi v\u00e4lja kirjutada (kujul 'yyyy-mm-dd'), kui selleks vajadus ilmneb. Samuti saab vaikev\u00e4\u00e4rtusi kasutada ka muude andmet\u00fc\u00fcpide korral (nt m\u00e4\u00e4rata\u00a0hinna vaikev\u00e4\u00e4rtuseks 1).<\/p>\r\n<p style=\"text-align: justify\"><span style=\"color: #ff0000\">NB!<\/span> Kui te soovite seda SQL lauset ka ise DBeaveris jooksutada, peate te esmalt eelmises peat\u00fckis loodud tabeli <em>Toode <\/em>\u00e4ra kustutama jooksutades SQL lauset:<\/p>\r\n\r\n<ul style=\"text-align: justify\">\r\n \t<li><code><\/code><span style=\"color: #970000\"><strong>DROP TABLE<\/strong><\/span><code> Toode;<\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Seda seet\u00f5ttu, et andmebaasis ei saa olla kahte \u00fche ja sama nimega tabelit.<\/p>\r\n\r\n<pre class=\"lang-sql s-code-block hljs\"><code><\/code><\/pre>\r\n<h2>Veeru kitsendused<\/h2>\r\n<p style=\"text-align: justify\">Veeru kitsendusi kasutatakse selleks, et piirata konkreetse veeru v\u00e4\u00e4rtusi. Kahe veeru kitsendusega oleme me juba tuttavad <span class=\"aCOpRe\">\u2013<\/span> <em>NOT NULL <\/em>ja <em>PRIMARY KEY.<\/em><\/p>\r\n<p style=\"text-align: justify\">Lisaks neile kahele kitsendusele on kasutusel veel ka <em>CHECK<\/em> kitsendus, mis lubab meil t\u00e4psustada mingisuguse tingimuse, mida veerg t\u00e4itma peaks. Kirjapandud tingimus peab alati tulemuseks andma t\u00f5ev\u00e4\u00e4rtuse <em>true<\/em> v\u00f5i <em>false<\/em>.<\/p>\r\n<p style=\"text-align: justify\">N\u00e4iteks tabeli\u00a0<em>Toode <\/em>korral v\u00f5iks me lisada veerule <em>hind <\/em>kitsenduse, mis kontrollib, et hind ei ole negatiivne arv. Selleks peaks tabeli loomisel olema veeru <em>hind<\/em> definitsioon j\u00e4rgnev:<\/p>\r\n\r\n<ul style=\"text-align: justify\">\r\n \t<li><code>hind <\/code><strong><code><span style=\"color: #000080\">NUMERIC<\/span> <span style=\"color: #970000\">NOT NULL CHECK<\/span><\/code><\/strong><code> (hind &gt; 0)<\/code><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Kitsenduse <em>CHECK (...) <\/em>korral v\u00f5ib sulgudesse panna ka mitu tingimust, pannes erinevate tingimuste vahele s\u00f5na <strong>AND<\/strong> v\u00f5i <strong>OR<\/strong><em>. <\/em>Neist esimest tuleb kasutada juhul, kui k\u00f5ik kirja pandud tingimused peavad kehtima ning teist juhul, kui piisab vaid \u00fche tingimuse kehtimisest.<\/p>\r\n<p style=\"text-align: justify\">Veel \u00fcheks kitsenduseks on <em>UNIQUE<\/em>, mis n\u00f5uab, et k\u00f5ik veeru v\u00e4\u00e4rtused oleksid unikaalsed. Seda oleks m\u00f5istlik kasutada n\u00e4iteks inimese isikukoodi korral, sest me ei soovi, et kahele inimesele saaks sama isikukoodi sisestada.<\/p>\r\n\r\n<h2>Tabeli kitsendused<\/h2>\r\n<p style=\"text-align: justify\">Tabeli kitsendused h\u00f5lmavad tihtipeale rohkem kui \u00fchte veergu ning need lisatakse tabeli loomisel SQL lausesse komadega eraldatult peale veeru definitsioone.<\/p>\r\n<p style=\"text-align: justify\">Tabeli kitsenduse \u00fcldkuju:<\/p>\r\n\r\n<ul style=\"text-align: justify\">\r\n \t<li><code><span style=\"color: #970000\"><strong>CONSTRAINT<\/strong><\/span> &lt;kitsenduse nimi&gt; <\/code><strong><code><span style=\"color: #970000\">&lt;kitsendus&gt;<\/span><\/code><\/strong><\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">N\u00e4iteks tabeli <em>Toode <\/em>korral v\u00f5iks me kontrollida, et toote lisamiskuup\u00e4ev ei oleks peale aegumiskuup\u00e4eva. Selle kitsenduse t\u00e4itmiseks oleks me pidanud looma tabeli <em>Toode<\/em> j\u00e4rgnevalt:<\/p>\r\n\r\n<ul>\r\n \t<li style=\"text-align: justify\"><code><span style=\"color: #970000\"><strong>CREATE TABLE<\/strong><\/span> Toode (<\/code>\r\n<code>id <\/code><strong><code><span style=\"color: #000080\">SERIAL<\/span> <span style=\"color: #970000\">PRIMARY KEY NOT NULL<\/span><\/code><\/strong><code>,<\/code>\r\n<code>nimi <\/code><strong><code><span style=\"color: #000080\">VARCHAR (100)<\/span> <span style=\"color: #970000\">NOT NULL<\/span><\/code><\/strong><code>,<\/code><em>\r\n<\/em><code>hind <\/code><strong><code><span style=\"color: #000080\">NUMERIC<\/span> <span style=\"color: #970000\">NOT NULL CHECK<\/span><\/code><\/strong><code> (hind &gt; 0),<\/code>\r\n<code>lisamiskuup\u00e4ev <\/code><strong><code><span style=\"color: #000080\">DATE<\/span> <span style=\"color: #970000\">DEFAULT <\/span><\/code><\/strong><code><span style=\"color: #333333\">CURRENT_DATE<\/span><\/code><strong><code><span style=\"color: #970000\"> NOT NULL<\/span><\/code><\/strong><code>,<\/code>\r\n<code>aegumiskuup\u00e4ev <span style=\"color: #000080\"><strong>DATE<\/strong><\/span> <\/code><strong><code><span style=\"color: #970000\">NOT NULL<\/span>,<\/code><\/strong>\r\n<code><span style=\"color: #970000\"><strong>CONSTRAINT<\/strong><\/span> kuup\u00e4evad_\u00f5iged <span style=\"color: #970000\"><strong>CHECK<\/strong><\/span> (lisamiskuup\u00e4ev &lt;= aegumiskuup\u00e4ev)<\/code>\r\n<code>)<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n<\/ul>\r\n<h2>Suure andmebaasi loomine<\/h2>\r\n<p style=\"text-align: justify\">N\u00fc\u00fcd, kui meil on olemas vajalikud teadmised andmet\u00fc\u00fcpidest, vaikev\u00e4\u00e4rtustest ning kitsendustest, on \u00f5ige aeg proovida \u00fchte lihtsat tabelit sisaldava andmebaasi asemel luua andmebaas, mis sisaldab endas mitut kompleksset tabelit.<\/p>\r\n<p style=\"text-align: justify\">Meie loodava andmebaasi teemaks on Netflix, mis on teadup\u00e4rast suur voogedastusplatvorm. Alloleval pildil on toodud v\u00e4lja loodava andmebaasi mudel. Uuri sellel olevaid tabeleid, veerge, veergude andmet\u00fc\u00fcpe ning tabelite vahelisi seoseid.<\/p>\r\n&nbsp;\r\n\r\n<img class=\" wp-image-276 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/netflixi_mudel-1-300x84.png\" alt=\"\" width=\"753\" height=\"211\" \/>\r\n<p style=\"text-align: justify\">Nagu mudelilt n\u00e4ha, siis meil on j\u00e4rgnevad tabelid:<\/p>\r\n\r\n<ul style=\"text-align: justify\">\r\n \t<li>Riigid<\/li>\r\n \t<li>Teosed<\/li>\r\n \t<li>Isikud<\/li>\r\n \t<li>Lavastamine<\/li>\r\n \t<li>Naitlemine<\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">V\u00f5ib-olla paistab silma ka see, et kui me varasemalt r\u00e4\u00e4kisime, et eesnimi ja perekonnanimi peaks alati eraldatud olema, siis antud mudelil on tabelis <em>Isik<\/em> need aga \u00fchiseks veeruks <em>nimi<\/em> kokku liidetud. Selle p\u00f5hjuseks on see, et Netflixi korral ei vaata me enam isiku nimesid, vaid vahepeal on tegu nn lavanimedega. N\u00e4iteks on j\u00e4rgmises peat\u00fckis Netflixi andmebaasi lisatavate andmete hulgas muusik <em>50 Cent, <\/em>kelle korral me ei saa nime eesnimeks ning perekonnanimeks jaotada.<\/p>\r\n<p style=\"text-align: justify\">Proovime n\u00fc\u00fcd Netflixi andmebaasi mudelil olevad tabelid DBeaverisse lisada. Selleks koosta esmalt ise tabelite loomiseks vajalikud SQL laused, j\u00e4rgides etteantud n\u00f5udeid. Seej\u00e4rel kontrolli enda koostatud SQL lauseid etteantud vastuste abil ja alles siis jooksuta tabelite loomiseks vajalikke SQL lauseid DBeaveri SQL konsoolis.<\/p>\r\n<p style=\"text-align: justify\"><strong>Tabeli <em>Riigid<\/em> veerud ning nende n\u00f5uded on j\u00e4rgnevad:<\/strong><\/p>\r\n\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>nimi<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>varchar (100)<\/em><\/li>\r\n \t<li>ei luba t\u00fchjasi v\u00e4\u00e4rtusi<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li><em>rahvastikuarv<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>bigint<\/em><\/li>\r\n \t<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\r\n \t<li><em>rahvastikuarv<\/em> peab olema suurem kui 0 ja v\u00e4iksem kui 10000000000<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li><em>pindala<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\r\n \t<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\r\n \t<li><em>pindala<\/em> peab olema suurem kui 0<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li><em>skp_elaniku_kohta<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>numeri<\/em>c<\/li>\r\n \t<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\r\n \t<li><em>skp_elaniku_kohta<\/em> peab olema suurem kui 0<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li><em>interneti_kasutajad<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\r\n \t<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\r\n \t<li><em>interneti_kasutajad<\/em> v\u00e4\u00e4rtus peab olema v\u00e4hemalt 0<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<p style=\"text-align: justify\">Tabelil <em>Riigid<\/em> peab olema ka tabeli kitsendus <em>kasutajaid_vahem_kui_elanikke<\/em>, mis kontrollib, et <em>interneti_kasutajad &lt;= rahvastikuarv.<\/em><\/p>\r\n<strong>Tabeli <em>Teosed <\/em>veerud ning nende n\u00f5uded on j\u00e4rgnevad:<\/strong>\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>on_film<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>bit<\/em><\/li>\r\n \t<li>ei luba t\u00fchjasi v\u00e4\u00e4rtusi<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li><em>pealkiri<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>varchar (150)\r\n<\/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>riigi_id<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li><em>lisamise_kuupaev<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>date<\/em><\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li><em>valjalaske_aasta<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>smallint<\/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>vanusepiirang<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>varchar (20)<\/em><\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li><em>kestus<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>varchar (20)<\/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>zanr<\/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><em>kirjeldus<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>varchar (500)<\/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<strong>Tabeli<em> Isikud <\/em>veerud ning nende n\u00f5uded on j\u00e4rgnevad:<\/strong>\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>nimi<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>varchar (100)<\/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<strong>Tabeli <em>Lavastamine <\/em>veerud ning nende n\u00f5uded on j\u00e4rgnevad:<\/strong>\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>teose_id<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>integer<\/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>lavastaja_id<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>integer<\/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<strong>Tabeli <em>Naitlemine<\/em> veerud ning nende n\u00f5uded on j\u00e4rgnevad:<\/strong>\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>teose_id<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>integer<\/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>naitleja_id<\/em>\r\n<ul>\r\n \t<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\r\n \t<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<code><\/code><\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n[h5p id=\"32\"]\r\n<p style=\"text-align: justify\">N\u00fc\u00fcd, kui vastused on kontrollitud, v\u00f5ib jooksutada neid SQL lauseid DBeaveri SQL konsoolis. Kui sul on soov jooksudada k\u00f5iki SQL lauseid korraga, tuleb varasemalt kasutatud k\u00e4ivitamise nupu asemel vajutada alloleval pildil olevat nuppu. See nupp jooksutab konsooli kirjutatut kui skripti, mis t\u00e4hendab seda, et \u00fche lause asemel jooksutatakse j\u00e4rjest k\u00f5ik kirjapandud SQL laused.<\/p>\r\n<img class=\" wp-image-926 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/mitu_lauset_korraga-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" \/>\r\n<p style=\"text-align: justify\">Veateadete ilmnemisel kontrolli oma SQL lauset <span class=\"aCOpRe\">\u2013<\/span> suure t\u00f5en\u00e4osusega esineb selles viga. Kui te saate aga veateate: '<em>SQL Error [42601]: ERROR: syntax error at or near \")\" <\/em><em>Position: 1<\/em>', siis see on tingitud sellest, et SQL lauses on t\u00fchjad read n\u00e4iteks veeru definitsioonide vahel. Kustuta SQL lausest k\u00f5ik t\u00fchjad read ning proovi seej\u00e4rel uuesti.<\/p>\r\n<p style=\"text-align: justify\">Kindlasti kontrolli, et p\u00e4rast k\u00f5ikide tabelite loomist oleksid need ka DBeaveris n\u00e4htaval. Kui tabelid ei ole n\u00e4htaval ning SQL lausete jooksutamisel vigu ei esinenud, proovi andmebaasi vaadet v\u00e4rskendada. Selleks parem klikka andmebaasi <em>public<\/em> peal ning avanenud valikutest klikka <em>Refresh.\u00a0 <\/em><\/p>\r\n<img class=\" wp-image-927 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabelid_nahtaval-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" \/>","rendered":"<p style=\"text-align: justify\">Selles peat\u00fckis vaatame t\u00e4psemalt erinevaid vaikev\u00e4\u00e4rtusi ning veergude ja tabelite kitsendusi. Alustame ka suurema andmebaasi loomisega, millesse saame juba j\u00e4rgmises peat\u00fckis andmeid lisama hakata.<\/p>\n<p style=\"text-align: justify\">Meeldetuletuseks, et SQL lause, mille abil on v\u00f5imalus andmebaasist tabeleid kustutada, on selline:<\/p>\n<ul>\n<li style=\"text-align: justify\"><code><span style=\"color: #970000\"><strong>DROP TABLE<\/strong><\/span> &lt;tabeli nimi&gt;<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<\/ul>\n<h2>Vaikev\u00e4\u00e4rtused<\/h2>\n<p style=\"text-align: justify\">Vahel v\u00f5ib meie andmebaasis olla veerge, mille v\u00e4\u00e4rtusi me iga kord k\u00e4sitsi sisestada ei taha, vaid pigem ainult erandjuhtudel. Selliste veergude korral on v\u00f5imalik kasutada vaikev\u00e4\u00e4rtusi. Veeru vaikev\u00e4\u00e4rtuseid defineeritakse tabeli loomisel veeru definitsioonis j\u00e4rgmiselt:<\/p>\n<ul style=\"text-align: justify\">\n<li><code>&lt;veeru nimi&gt; &lt;andmet\u00fc\u00fcp&gt;<span style=\"color: #970000\"> <strong>DEFAULT<\/strong><\/span> &lt;vaikev\u00e4\u00e4rtus&gt;<\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\">N\u00e4iteks eelmises peat\u00fckis l\u00f5ime me tabeli <em>Toode, <\/em>milles oli veerg <em>lisamiskuup\u00e4ev<\/em>. Oleks ju mugav, kui me iga lisatud toote korral ei peaks k\u00e4sitsi praegust kuup\u00e4eva t\u00e4psustama, vaid see tehtaks automaatselt meie eest \u00e4ra. Selleks, et lisada veerule <em>lisamiskuup\u00e4ev <\/em>vaikev\u00e4\u00e4rtuseks praegune ajahetk, oleksime me v\u00f5inud tabeli <em>Toode<\/em> luua hoopis nii:<\/p>\n<ul style=\"text-align: justify\">\n<li style=\"text-align: justify\"><strong><code><span style=\"color: #970000\">CREATE TABLE<\/span><\/code><\/strong><code> Toode (<\/code><br \/>\n<code>id <\/code><strong><code><span style=\"color: #000080\">SERIAL<\/span> <span style=\"color: #970000\">PRIMARY KEY NOT NULL<\/span><\/code><\/strong><code>,<\/code><br \/>\n<code>nimi <\/code><strong><code><span style=\"color: #000080\">VARCHAR (100)<\/span> <span style=\"color: #970000\">NOT NULL<\/span><\/code><\/strong><code>,<\/code><br \/>\n<code>hind <span style=\"color: #000080\"><strong>NUMERIC<\/strong><\/span> <span style=\"color: #970000\"><strong>NOT NULL<\/strong><\/span>,<\/code><br \/>\n<code>lisamiskuup\u00e4ev <\/code><strong><code><span style=\"color: #000080\">DATE<\/span> <span style=\"color: #970000\">DEFAULT <\/span><\/code><\/strong><span style=\"color: #333333\"><code>CURRENT_DATE<\/code><\/span><strong><code><span style=\"color: #970000\"> NOT NULL<\/span><\/code><\/strong><code>,<\/code><br \/>\n<code>aegumiskuup\u00e4ev <span style=\"color: #000080\"><strong>DATE<\/strong><\/span> <span style=\"color: #970000\"><strong>NOT NULL<\/strong><\/span><\/code><br \/>\n<code>)<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\"><em>CURRENT_DATE,\u00a0<\/em>mille me lisasime veeru\u00a0<em>lisamiskuup\u00e4ev<\/em> vaikev\u00e4\u00e4rtuseks, on ise funktsioon, mis viitab praegusele ajahetkele. Vaikev\u00e4\u00e4rtuseks ei pea aga olema funktsioon, vaid kuup\u00e4eva v\u00f5ib ka k\u00e4sitsi v\u00e4lja kirjutada (kujul &#8216;yyyy-mm-dd&#8217;), kui selleks vajadus ilmneb. Samuti saab vaikev\u00e4\u00e4rtusi kasutada ka muude andmet\u00fc\u00fcpide korral (nt m\u00e4\u00e4rata\u00a0hinna vaikev\u00e4\u00e4rtuseks 1).<\/p>\n<p style=\"text-align: justify\"><span style=\"color: #ff0000\">NB!<\/span> Kui te soovite seda SQL lauset ka ise DBeaveris jooksutada, peate te esmalt eelmises peat\u00fckis loodud tabeli <em>Toode <\/em>\u00e4ra kustutama jooksutades SQL lauset:<\/p>\n<ul style=\"text-align: justify\">\n<li><code><\/code><span style=\"color: #970000\"><strong>DROP TABLE<\/strong><\/span><code> Toode;<\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Seda seet\u00f5ttu, et andmebaasis ei saa olla kahte \u00fche ja sama nimega tabelit.<\/p>\n<pre class=\"lang-sql s-code-block hljs\"><code><\/code><\/pre>\n<h2>Veeru kitsendused<\/h2>\n<p style=\"text-align: justify\">Veeru kitsendusi kasutatakse selleks, et piirata konkreetse veeru v\u00e4\u00e4rtusi. Kahe veeru kitsendusega oleme me juba tuttavad <span class=\"aCOpRe\">\u2013<\/span> <em>NOT NULL <\/em>ja <em>PRIMARY KEY.<\/em><\/p>\n<p style=\"text-align: justify\">Lisaks neile kahele kitsendusele on kasutusel veel ka <em>CHECK<\/em> kitsendus, mis lubab meil t\u00e4psustada mingisuguse tingimuse, mida veerg t\u00e4itma peaks. Kirjapandud tingimus peab alati tulemuseks andma t\u00f5ev\u00e4\u00e4rtuse <em>true<\/em> v\u00f5i <em>false<\/em>.<\/p>\n<p style=\"text-align: justify\">N\u00e4iteks tabeli\u00a0<em>Toode <\/em>korral v\u00f5iks me lisada veerule <em>hind <\/em>kitsenduse, mis kontrollib, et hind ei ole negatiivne arv. Selleks peaks tabeli loomisel olema veeru <em>hind<\/em> definitsioon j\u00e4rgnev:<\/p>\n<ul style=\"text-align: justify\">\n<li><code>hind <\/code><strong><code><span style=\"color: #000080\">NUMERIC<\/span> <span style=\"color: #970000\">NOT NULL CHECK<\/span><\/code><\/strong><code> (hind &gt; 0)<\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Kitsenduse <em>CHECK (&#8230;) <\/em>korral v\u00f5ib sulgudesse panna ka mitu tingimust, pannes erinevate tingimuste vahele s\u00f5na <strong>AND<\/strong> v\u00f5i <strong>OR<\/strong><em>. <\/em>Neist esimest tuleb kasutada juhul, kui k\u00f5ik kirja pandud tingimused peavad kehtima ning teist juhul, kui piisab vaid \u00fche tingimuse kehtimisest.<\/p>\n<p style=\"text-align: justify\">Veel \u00fcheks kitsenduseks on <em>UNIQUE<\/em>, mis n\u00f5uab, et k\u00f5ik veeru v\u00e4\u00e4rtused oleksid unikaalsed. Seda oleks m\u00f5istlik kasutada n\u00e4iteks inimese isikukoodi korral, sest me ei soovi, et kahele inimesele saaks sama isikukoodi sisestada.<\/p>\n<h2>Tabeli kitsendused<\/h2>\n<p style=\"text-align: justify\">Tabeli kitsendused h\u00f5lmavad tihtipeale rohkem kui \u00fchte veergu ning need lisatakse tabeli loomisel SQL lausesse komadega eraldatult peale veeru definitsioone.<\/p>\n<p style=\"text-align: justify\">Tabeli kitsenduse \u00fcldkuju:<\/p>\n<ul style=\"text-align: justify\">\n<li><code><span style=\"color: #970000\"><strong>CONSTRAINT<\/strong><\/span> &lt;kitsenduse nimi&gt; <\/code><strong><code><span style=\"color: #970000\">&lt;kitsendus&gt;<\/span><\/code><\/strong><\/li>\n<\/ul>\n<p style=\"text-align: justify\">N\u00e4iteks tabeli <em>Toode <\/em>korral v\u00f5iks me kontrollida, et toote lisamiskuup\u00e4ev ei oleks peale aegumiskuup\u00e4eva. Selle kitsenduse t\u00e4itmiseks oleks me pidanud looma tabeli <em>Toode<\/em> j\u00e4rgnevalt:<\/p>\n<ul>\n<li style=\"text-align: justify\"><code><span style=\"color: #970000\"><strong>CREATE TABLE<\/strong><\/span> Toode (<\/code><br \/>\n<code>id <\/code><strong><code><span style=\"color: #000080\">SERIAL<\/span> <span style=\"color: #970000\">PRIMARY KEY NOT NULL<\/span><\/code><\/strong><code>,<\/code><br \/>\n<code>nimi <\/code><strong><code><span style=\"color: #000080\">VARCHAR (100)<\/span> <span style=\"color: #970000\">NOT NULL<\/span><\/code><\/strong><code>,<\/code><em><br \/>\n<\/em><code>hind <\/code><strong><code><span style=\"color: #000080\">NUMERIC<\/span> <span style=\"color: #970000\">NOT NULL CHECK<\/span><\/code><\/strong><code> (hind &gt; 0),<\/code><br \/>\n<code>lisamiskuup\u00e4ev <\/code><strong><code><span style=\"color: #000080\">DATE<\/span> <span style=\"color: #970000\">DEFAULT <\/span><\/code><\/strong><code><span style=\"color: #333333\">CURRENT_DATE<\/span><\/code><strong><code><span style=\"color: #970000\"> NOT NULL<\/span><\/code><\/strong><code>,<\/code><br \/>\n<code>aegumiskuup\u00e4ev <span style=\"color: #000080\"><strong>DATE<\/strong><\/span> <\/code><strong><code><span style=\"color: #970000\">NOT NULL<\/span>,<\/code><\/strong><br \/>\n<code><span style=\"color: #970000\"><strong>CONSTRAINT<\/strong><\/span> kuup\u00e4evad_\u00f5iged <span style=\"color: #970000\"><strong>CHECK<\/strong><\/span> (lisamiskuup\u00e4ev &lt;= aegumiskuup\u00e4ev)<\/code><br \/>\n<code>)<span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<\/ul>\n<h2>Suure andmebaasi loomine<\/h2>\n<p style=\"text-align: justify\">N\u00fc\u00fcd, kui meil on olemas vajalikud teadmised andmet\u00fc\u00fcpidest, vaikev\u00e4\u00e4rtustest ning kitsendustest, on \u00f5ige aeg proovida \u00fchte lihtsat tabelit sisaldava andmebaasi asemel luua andmebaas, mis sisaldab endas mitut kompleksset tabelit.<\/p>\n<p style=\"text-align: justify\">Meie loodava andmebaasi teemaks on Netflix, mis on teadup\u00e4rast suur voogedastusplatvorm. Alloleval pildil on toodud v\u00e4lja loodava andmebaasi mudel. Uuri sellel olevaid tabeleid, veerge, veergude andmet\u00fc\u00fcpe ning tabelite vahelisi seoseid.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-276 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/netflixi_mudel-1-300x84.png\" alt=\"\" width=\"753\" height=\"211\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/netflixi_mudel-1-300x84.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/netflixi_mudel-1-1024x286.png 1024w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/netflixi_mudel-1-768x214.png 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/netflixi_mudel-1-65x18.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/netflixi_mudel-1-225x63.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/netflixi_mudel-1-350x98.png 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/netflixi_mudel-1.png 1169w\" sizes=\"auto, (max-width: 753px) 100vw, 753px\" \/><\/p>\n<p style=\"text-align: justify\">Nagu mudelilt n\u00e4ha, siis meil on j\u00e4rgnevad tabelid:<\/p>\n<ul style=\"text-align: justify\">\n<li>Riigid<\/li>\n<li>Teosed<\/li>\n<li>Isikud<\/li>\n<li>Lavastamine<\/li>\n<li>Naitlemine<\/li>\n<\/ul>\n<p style=\"text-align: justify\">V\u00f5ib-olla paistab silma ka see, et kui me varasemalt r\u00e4\u00e4kisime, et eesnimi ja perekonnanimi peaks alati eraldatud olema, siis antud mudelil on tabelis <em>Isik<\/em> need aga \u00fchiseks veeruks <em>nimi<\/em> kokku liidetud. Selle p\u00f5hjuseks on see, et Netflixi korral ei vaata me enam isiku nimesid, vaid vahepeal on tegu nn lavanimedega. N\u00e4iteks on j\u00e4rgmises peat\u00fckis Netflixi andmebaasi lisatavate andmete hulgas muusik <em>50 Cent, <\/em>kelle korral me ei saa nime eesnimeks ning perekonnanimeks jaotada.<\/p>\n<p style=\"text-align: justify\">Proovime n\u00fc\u00fcd Netflixi andmebaasi mudelil olevad tabelid DBeaverisse lisada. Selleks koosta esmalt ise tabelite loomiseks vajalikud SQL laused, j\u00e4rgides etteantud n\u00f5udeid. Seej\u00e4rel kontrolli enda koostatud SQL lauseid etteantud vastuste abil ja alles siis jooksuta tabelite loomiseks vajalikke SQL lauseid DBeaveri SQL konsoolis.<\/p>\n<p style=\"text-align: justify\"><strong>Tabeli <em>Riigid<\/em> veerud ning nende n\u00f5uded on j\u00e4rgnevad:<\/strong><\/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>nimi<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>varchar (100)<\/em><\/li>\n<li>ei luba t\u00fchjasi v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<li><em>rahvastikuarv<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>bigint<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<li><em>rahvastikuarv<\/em> peab olema suurem kui 0 ja v\u00e4iksem kui 10000000000<\/li>\n<\/ul>\n<\/li>\n<li><em>pindala<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<li><em>pindala<\/em> peab olema suurem kui 0<\/li>\n<\/ul>\n<\/li>\n<li><em>skp_elaniku_kohta<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>numeri<\/em>c<\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<li><em>skp_elaniku_kohta<\/em> peab olema suurem kui 0<\/li>\n<\/ul>\n<\/li>\n<li><em>interneti_kasutajad<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<li><em>interneti_kasutajad<\/em> v\u00e4\u00e4rtus peab olema v\u00e4hemalt 0<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"text-align: justify\">Tabelil <em>Riigid<\/em> peab olema ka tabeli kitsendus <em>kasutajaid_vahem_kui_elanikke<\/em>, mis kontrollib, et <em>interneti_kasutajad &lt;= rahvastikuarv.<\/em><\/p>\n<p><strong>Tabeli <em>Teosed <\/em>veerud ning nende n\u00f5uded on j\u00e4rgnevad:<\/strong><\/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>on_film<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>bit<\/em><\/li>\n<li>ei luba t\u00fchjasi v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<li><em>pealkiri<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>varchar (150)<br \/>\n<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<li><em>riigi_id<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\n<\/ul>\n<\/li>\n<li><em>lisamise_kuupaev<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>date<\/em><\/li>\n<\/ul>\n<\/li>\n<li><em>valjalaske_aasta<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>smallint<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<li><em>vanusepiirang<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>varchar (20)<\/em><\/li>\n<\/ul>\n<\/li>\n<li><em>kestus<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>varchar (20)<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<li><em>zanr<\/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><em>kirjeldus<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>varchar (500)<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Tabeli<em> Isikud <\/em>veerud ning nende n\u00f5uded on j\u00e4rgnevad:<\/strong><\/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>nimi<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>varchar (100)<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Tabeli <em>Lavastamine <\/em>veerud ning nende n\u00f5uded on j\u00e4rgnevad:<\/strong><\/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>teose_id<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<li><em>lavastaja_id<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Tabeli <em>Naitlemine<\/em> veerud ning nende n\u00f5uded on j\u00e4rgnevad:<\/strong><\/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>teose_id<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<\/li>\n<\/ul>\n<\/li>\n<li><em>naitleja_id<\/em>\n<ul>\n<li>andmet\u00fc\u00fcp <em>integer<\/em><\/li>\n<li>ei luba t\u00fchjasid v\u00e4\u00e4rtusi<code><\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div id=\"h5p-32\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-32\" class=\"h5p-iframe\" data-content-id=\"32\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"AT_6_vastus\"><\/iframe><\/div>\n<\/div>\n<p style=\"text-align: justify\">N\u00fc\u00fcd, kui vastused on kontrollitud, v\u00f5ib jooksutada neid SQL lauseid DBeaveri SQL konsoolis. Kui sul on soov jooksudada k\u00f5iki SQL lauseid korraga, tuleb varasemalt kasutatud k\u00e4ivitamise nupu asemel vajutada alloleval pildil olevat nuppu. See nupp jooksutab konsooli kirjutatut kui skripti, mis t\u00e4hendab seda, et \u00fche lause asemel jooksutatakse j\u00e4rjest k\u00f5ik kirjapandud SQL laused.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-926 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/mitu_lauset_korraga-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/mitu_lauset_korraga-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/mitu_lauset_korraga-768x576.png 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/mitu_lauset_korraga-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/mitu_lauset_korraga-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/mitu_lauset_korraga-350x263.png 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/mitu_lauset_korraga.png 1024w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p style=\"text-align: justify\">Veateadete ilmnemisel kontrolli oma SQL lauset <span class=\"aCOpRe\">\u2013<\/span> suure t\u00f5en\u00e4osusega esineb selles viga. Kui te saate aga veateate: &#8216;<em>SQL Error [42601]: ERROR: syntax error at or near &#8220;)&#8221; <\/em><em>Position: 1<\/em>&#8216;, siis see on tingitud sellest, et SQL lauses on t\u00fchjad read n\u00e4iteks veeru definitsioonide vahel. Kustuta SQL lausest k\u00f5ik t\u00fchjad read ning proovi seej\u00e4rel uuesti.<\/p>\n<p style=\"text-align: justify\">Kindlasti kontrolli, et p\u00e4rast k\u00f5ikide tabelite loomist oleksid need ka DBeaveris n\u00e4htaval. Kui tabelid ei ole n\u00e4htaval ning SQL lausete jooksutamisel vigu ei esinenud, proovi andmebaasi vaadet v\u00e4rskendada. Selleks parem klikka andmebaasi <em>public<\/em> peal ning avanenud valikutest klikka <em>Refresh.\u00a0 <\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-927 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabelid_nahtaval-300x225.png\" alt=\"\" width=\"1024\" height=\"768\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabelid_nahtaval-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabelid_nahtaval-768x576.png 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabelid_nahtaval-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabelid_nahtaval-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabelid_nahtaval-350x263.png 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2021\/03\/tabelid_nahtaval.png 1024w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n","protected":false},"author":33,"menu_order":6,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-254","chapter","type-chapter","status-publish","hentry"],"part":3,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/254","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":43,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/254\/revisions"}],"predecessor-version":[{"id":1364,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/254\/revisions\/1364"}],"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\/254\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/media?parent=254"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapter-type?post=254"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/contributor?post=254"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/license?post=254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}