{"id":128,"date":"2023-03-03T17:38:26","date_gmt":"2023-03-03T17:38:26","guid":{"rendered":"https:\/\/tarkvara.thkit.ee\/veeb\/?page_id=128"},"modified":"2023-03-03T17:42:46","modified_gmt":"2023-03-03T17:42:46","slug":"sql","status":"publish","type":"page","link":"https:\/\/tarkvara.thkit.ee\/veeb\/sql\/","title":{"rendered":"SQL"},"content":{"rendered":"\n<p>Andmebaasiga suhtlemiseks kasutatakse SQL-keelt. Selles leiduvad k\u00e4sud andmetabelite loomiseks, sinna andmete lisamiseks, andmete k\u00fcsimiseks, muutmiseks ja kustutamiseks.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Tabeli loomiseks k\u00e4sklus CREATE TABLE. K\u00e4su nimele j\u00e4rgneb tabeli nimi (praegusel juhul lehed). Ning siis sulgudes komadega eraldatuna tulpade nimed ning nende parameetrid. Iga tabeli esimeseks tulbaks on \u00fcldjuhul id &#8211; identifikaator, mille abil hiljem ridu eristada ja neile viidata. Parameetrid v\u00f5ivad lihtsamate rakenduste puhul enamasti samaks j\u00e4\u00e4da. Selgitused:&nbsp;<\/p>\n\n\n\n<p>INT &#8211; t\u00e4isarv&nbsp;<\/p>\n\n\n\n<p>NOT NULL &#8211; v\u00e4\u00e4rtus ei tohi puududa&nbsp;<\/p>\n\n\n\n<p>AUTO_INCREMENT &#8211; server arvutab lisamisel ise juurde sobiva seni veel kasutamata v\u00e4\u00e4rtuse PRIMARY KEY &#8211; selle tulba v\u00e4\u00e4rtust kasutatakse edaspidi tabeli vastavale reale viitamisel (n\u00e4iteks muutmise v\u00f5i kustutamise juures).&nbsp;<\/p>\n\n\n\n<p>Tulp pealkiri siin n\u00e4ites t\u00fc\u00fcbiga VARCHAR(50) ehk siis tekst pikkusega kuni 50 t\u00e4hte. Sisu t\u00fc\u00fcbiks TEXT, mis t\u00e4hendab, et pikkust ei piirata.&nbsp;<\/p>\n\n\n\n<p>Kokku siis lause j\u00e4rgmine, mis tasub valmis kirjutada ning MySQLi k\u00e4suviibale v\u00f5i PHPMyAdmini aknasse kopeerida:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nCREATE TABLE lehed( \n id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, \n pealkiri VARCHAR(50), \n sisu TEXT \n); \n\n<\/pre><\/div>\n\n\n<p>Kui vastuseks tuli Query OK, siis j\u00e4relikult ettev\u00f5tmine \u00f5nnestus. Muidu tuleb veateateid uurida ja uuesti proovida.&nbsp;<\/p>\n\n\n\n<p>Andmete lisamiseks on loodud k\u00e4sklus INSERT INTO. J\u00e4rgneb tabeli nimi, siis sulgudes tulpade nimed, kuhu lisatavad andmed tulevad. Edasi s\u00f5na VALUES ning sulgude sisse komadega eraldatult igale tulbale vastav v\u00e4\u00e4rtus. Tekstilised andmed paigutatakse \u00fclakomade vahele.&nbsp;<\/p>\n\n\n\n<p>INSERT INTO lehed (pealkiri, sisu) VALUES (&#8216;Ilmateade&#8217;, &#8216;Kuiv ilm&#8217;);&nbsp;<\/p>\n\n\n\n<p>Tahtes rohkem andmeid lisada, tuleb INSERT lauset lihtsalt mitu korda k\u00e4ivitada, igal korral eraldi andmed sisse pannes.&nbsp;&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nINSERT INTO lehed (pealkiri, sisu) VALUES (&#039;Korvpall&#039;, &#039;Treening reedel kell 18&#039;); \n<\/pre><\/div>\n\n\n<p>Kui m\u00f5ned sees, siis on hea vaadata ja kontrollida, et mis sinna t\u00e4psemalt sai. Andmete k\u00fcsimiseks on SQLis loodud k\u00e4sklus SELECT. T\u00e4rn t\u00e4hendab, et kuvatakse k\u00f5ikide olemasolevate tulpade andmed. S\u00f5nale FROM j\u00e4rgneb tabeli nimi ning k\u00e4su l\u00f5ppu k\u00e4ivitamiseks semikoolon. Lehtede tabeli sisu tuleb siis v\u00e4lja j\u00e4rgnevalt.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nmysql&gt; SELECT * FROM lehed; \n+----+-----------+-------------------------+ \n| id | pealkiri | sisu | \n+----+-----------+-------------------------+ \n| 1 | Ilmateade | Kuiv ilm | \n| 2 | Korvpall | Treening reedel kell 18 | \n+----+-----------+-------------------------+ \n2 rows in set (0.00 sec) \n\n<\/pre><\/div>\n\n\n<p>Nagu n\u00e4ha, id-v\u00e4\u00e4rtused on automaatselt ise pandud, kuna vastaval tulbal on juures omadus AUTO_INCREMENT.&nbsp;Tahtes andmeid veel juurde panna, tuleb taas k\u00e4ivitada INSERT-lause sobivate andmetega. Teksti sisestamisele vastab k\u00f5ige korrasoleku puhul MySQL taas &#8220;Query OK&#8221;, lisades sinna vahel ka m\u00f5jutatud ridade arvu ja kulunud aja &#8211; t\u00e4htis pigem suuremate andmestike korral.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nINSERT INTO lehed (pealkiri, sisu) VALUES (&#039;Matemaatika&#039;, &#039;Homme tunnikontroll&#039;); \n<\/pre><\/div>\n\n\n<p>SQLi selecti abil saab andmeid kergesti sobivas j\u00e4rjekorras ja kujul v\u00e4lja k\u00fcsida. Kui lause l\u00f5ppu lisatakse ORDER BY koos vastava tulba nimega, siis tulevad andmed v\u00e4lja selle tulba j\u00e4rgi t\u00e4hestiku j\u00e4rjekorda panduna (kui vastav tulp oli tekstitulp).<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nmysql&gt; SELECT * FROM lehed ORDER BY sisu; \n+----+-------------+-------------------------+ \n| id | pealkiri | sisu | \n+----+-------------+-------------------------+ \n| 3 | Matemaatika | Homme tunnikontroll | \n| 1 | Ilmateade | Kuiv ilm | \n| 2 | Korvpall | Treening reedel kell 18 | \n+----+-------------+-------------------------+ \n3 rows in set (0.00 sec) \n\n<\/pre><\/div>\n\n\n<p>Saab k\u00fcsida ka ainult \u00fche rea v\u00e4\u00e4rtusi:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nmysql&gt; SELECT pealkiri, sisu FROM lehed WHERE id=3; \n+-------------+---------------------+ \n| pealkiri | sisu | \n+-------------+---------------------+ \n| Matemaatika | Homme tunnikontroll | \n+-------------+---------------------+ \n\n<\/pre><\/div>\n\n\n<p>Kui leitakse, et rida pole enam vajalik, siis selle kustutamiseks sobib k\u00e4sklus DELETE, kussoovitavalt id j\u00e4rgi m\u00e4\u00e4ratakse \u00e4ra, milline rida kustutada.&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nmysql&gt; DELETE FROM lehed WHERE id=3; \nQuery OK, 1 row affected (0.00 sec) \n\n<\/pre><\/div>\n\n\n<p>Uue SELECT-p\u00e4ringuga saab kontrollida, mis siis sinna tegelikult alles j\u00e4i. Kui n\u00fc\u00fcd juhtutaks INSERT-lausega taas andmeid lisama, siis sellele reale enam id v\u00e4\u00e4rtust 3 v\u00e4lja ei antaks &#8211; v\u00e4listamaks n\u00e4iteks olukorda, kus vanale teatele pandud kommentaarid satuksid uue k\u00fclge. Primaarv\u00f5tmetulba id v\u00e4\u00e4rtuseks tuleks uue rea lisamisel v\u00e4hemasti 4.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nmysql&gt; SELECT * FROM lehed; \n+----+-----------+-------------------------+ \n| id | pealkiri | sisu | \n+----+-----------+-------------------------+ \n| 1 | Ilmateade | Kuiv ilm | \n| 2 | Korvpall | Treening reedel kell 18 | \n+----+-----------+-------------------------+ \n\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Andmebaasiga suhtlemiseks kasutatakse SQL-keelt. Selles leiduvad k\u00e4sud andmetabelite loomiseks, sinna andmete lisamiseks, andmete k\u00fcsimiseks, muutmiseks ja kustutamiseks.&nbsp;&nbsp; Tabeli loomiseks k\u00e4sklus CREATE TABLE. K\u00e4su nimele j\u00e4rgneb tabeli nimi (praegusel juhul lehed). Ning siis sulgudes komadega eraldatuna tulpade nimed ning nende parameetrid. Iga tabeli esimeseks tulbaks on \u00fcldjuhul id &#8211; identifikaator, mille abil hiljem ridu eristada ja &hellip; <a href=\"https:\/\/tarkvara.thkit.ee\/veeb\/sql\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">SQL<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-128","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/comments?post=128"}],"version-history":[{"count":6,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/128\/revisions"}],"predecessor-version":[{"id":136,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/128\/revisions\/136"}],"wp:attachment":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/media?parent=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}