{"id":187,"date":"2021-06-29T06:46:20","date_gmt":"2021-06-29T04:46:20","guid":{"rendered":"https:\/\/piotrgabriel.pl\/wiki\/?p=187"},"modified":"2021-06-29T06:51:52","modified_gmt":"2021-06-29T04:51:52","slug":"bazy-danych-instrukcja-sql-klauzule-i-operatory","status":"publish","type":"post","link":"https:\/\/piotrgabriel.pl\/wiki\/bazy-danych-instrukcja-sql-klauzule-i-operatory\/","title":{"rendered":"Bazy Danych &#8211; instrukcja SQL, Klauzule i Operatory"},"content":{"rendered":"<p>W tym wpisie skupimy si\u0119 na podstawowych elementach j\u0119zyka SQL, dzi\u0119ki kt\u00f3rym nasze instrukcje b\u0119d\u0105 wykonywa\u0142y to, czego tak na prawd\u0119 chcemy.<\/p>\n<p><!--more--><\/p>\n<p>Bazuj\u0105c na przyk\u0142adzie og\u00f3lnej formy zapytania SQL, om\u00f3wimy sobie klauzule SELECT, FROM oraz WHERE<\/p>\n<p><code>SELECT imie<\/code><\/p>\n<p><code>FROM uczniowie<\/code><\/p>\n<p><code>WHERE nasze-kryteria-dla-instrukcji-select;<\/code><\/p>\n<p>Instrukcj\u0119 SQL mo\u017cna zapisywa\u0107 tak jak powy\u017cej, mo\u017cna te\u017c j\u0105 napisa\u0107 korzystaj\u0105c z jednej linii. Nasza instrukcja zawsze zako\u0144czona jest \u015brednikiem.<\/p>\n<p><code>SELECT imie FROM uczniowie WHERE nasze-kryteria-dla-instrukcji-select;<\/code><\/p>\n<h2>SELECT, FROM oraz WHERE<\/h2>\n<p>Klauzule podstawowe j\u0119zyka Structured Query Language to <strong>SELECT<\/strong>, <strong>FROM<\/strong> oraz <strong>WHERE<\/strong><\/p>\n<p><strong>SELECT<\/strong> &#8211; klauzula ta zwraca nam list\u0119 p\u00f3l, kt\u00f3re zawieraj\u0105 wskazane dane &#8211; &#8222;wybierz co\u015b&#8230;&#8221;<\/p>\n<p><strong>FROM<\/strong> &#8211; odnosi si\u0119 bezpo\u015brednio do SELECT&#8217;a i zwraca nam list\u0119 tabel, kt\u00f3re zawieraj\u0105 pola wymienione w klauzuli SELECT, &#8222;wybierz co\u015b z&#8230;&#8221;<\/p>\n<p><strong>WHERE<\/strong> &#8211;\u00a0 klauzula WHERE pozwala na definiowanie kryteri\u00f3w, warunk\u00f3w jakie maj\u0105 zosta\u0107 spe\u0142nione. Doprecyzowuje nasze zapytanie, zaw\u0119\u017ca wyniki, poprawia jako\u015b\u0107 wylistowanych danych do tych dok\u0142adniejszych, zamierzonych. W skr\u00f3cie, WHERE okre\u015bla nam kryteria p\u00f3l, jakie musi spe\u0142ni\u0107 dany rekord by go uwzgl\u0119dni\u0107 w wynikach naszego zapytania.<\/p>\n<p><strong>ORDER BY<\/strong> &#8211; klauzula, dzi\u0119ki kt\u00f3rej wynik naszego zapytania b\u0119dzie w odpowiedni spos\u00f3b posortowany, dla przyk\u0142adu ASC &#8211; alfabetycznie od A do Z, DESC, od Z do A, mo\u017cemy te\u017c zastosowa\u0107 zapis:<\/p>\n<p><code><span class=\"hljs-keyword\">SELECT<\/span> nazwisko, imie <span class=\"hljs-keyword\">FROM<\/span> uczniowie <span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span> nazwisko <span class=\"hljs-keyword\">DESC<\/span>;<\/code><\/p>\n<p>co bezpo\u015brednio oznacza &#8211; sortuj wed\u0142ug rekordu imi\u0119 od Z do A<\/p>\n<p>Klauzula pozwala na bardzo du\u017co, mo\u017cemy wykorzystywa\u0107 j\u0105 dla przyk\u0142adu do takich zapyta\u0144 (kilka przyk\u0142ad\u00f3w):<\/p>\n<p>wybierz wszystko z tabeli Costumers i posortuj wg Country<\/p>\n<p><code><span class=\"sqlkeywordcolor\">SELECT<\/span>\u00a0*\u00a0<span class=\"sqlkeywordcolor\">FROM<\/span>\u00a0Customers<\/code><br \/>\n<code><span class=\"sqlkeywordcolor\">ORDER<\/span>\u00a0<span class=\"sqlkeywordcolor\">BY<\/span> Country;<\/code><\/p>\n<p>wybierz wszystko z tabeli Costumers i posortuj wg Country malej\u0105co<\/p>\n<p><code><span class=\"sqlkeywordcolor\">SELECT<\/span>\u00a0*\u00a0<span class=\"sqlkeywordcolor\">FROM<\/span>\u00a0Customers<\/code><br \/>\n<code><span class=\"sqlkeywordcolor\">ORDER<\/span>\u00a0<span class=\"sqlkeywordcolor\">BY<\/span>\u00a0Country\u00a0<span class=\"sqlkeywordcolor\">DESC<\/span>;<\/code><\/p>\n<p>wybierz wszystko z tabeli Costumers i posortuj wg Country i CustomerName<\/p>\n<p><code><span class=\"sqlkeywordcolor\">SELECT<\/span>\u00a0*\u00a0<span class=\"sqlkeywordcolor\">FROM<\/span>\u00a0Customers<\/code><br \/>\n<code><span class=\"sqlkeywordcolor\">ORDER<\/span>\u00a0<span class=\"sqlkeywordcolor\">BY<\/span>\u00a0Country, CustomerName;<\/code><\/p>\n<p>wybierz wszystko z tabeli Costumers i posortuj wg Country rosn\u0105co i CostumerName malej\u0105co<\/p>\n<p><code><span class=\"sqlkeywordcolor\">SELECT<\/span>\u00a0*\u00a0<span class=\"sqlkeywordcolor\">FROM<\/span>\u00a0Customers<\/code><br \/>\n<code><span class=\"sqlkeywordcolor\">ORDER<\/span>\u00a0<span class=\"sqlkeywordcolor\">BY<\/span>\u00a0Country\u00a0<span class=\"sqlkeywordcolor\">ASC<\/span>, CustomerName\u00a0<span class=\"sqlkeywordcolor\">DESC<\/span>;<\/code><\/p>\n<h2>GROUP BY oraz UNION<\/h2>\n<p><strong>GROUP BY<\/strong> &#8211; klauzula ta pozwala na zwr\u00f3cenie listy p\u00f3l, kt\u00f3re nie s\u0105 podsumowane w klauzuli select.<\/p>\n<p><strong>UNION<\/strong> &#8211; \u0142\u0105czy wyniki zapyta\u0144. Nie trzeba tutaj si\u0119 rozpisywa\u0107, najpro\u015bciej unie mo\u017cna zaprezentowa\u0107 na przyk\u0142adzie:<\/p>\n<p><code><span class=\"sqlkeywordcolor\">SELECT<\/span>\u00a0<em>kolumna(y)<\/em>\u00a0<span class=\"sqlkeywordcolor\">FROM<\/span>\u00a0<em>tabela1<\/em><\/code><br \/>\n<code><span class=\"sqlkeywordcolor\">UNION<\/span><\/code><br \/>\n<code><span class=\"sqlkeywordcolor\">SELECT<\/span> <em>kolumna(y)<\/em>\u00a0<span class=\"sqlkeywordcolor\">FROM<\/span>\u00a0<em>tabela2<\/em>;<\/code><\/p>\n<p>Dla przyk\u0142adu mamy dwie tabele, w kt\u00f3rych znajduj\u0105 si\u0119 pola Miasto. Jedna tabela dotyczy naszych klient\u00f3w, kolejna dostawc\u00f3w. Dla przyk\u0142adu potrzebujemy zestawienia miast, w kt\u00f3rych znajduj\u0105 si\u0119 zar\u00f3wno nasi klienci jak i dostawcy. W cym celu wykonujemy nast\u0119puj\u0105c\u0105 kwerend\u0119:<\/p>\n<p><code><span class=\"sqlkeywordcolor\">SELECT<\/span> Miasto <span class=\"sqlkeywordcolor\">FROM<\/span> Klient<\/code><br \/>\n<code><span class=\"sqlkeywordcolor\">UNION<\/span><\/code><br \/>\n<code><span class=\"sqlkeywordcolor\">SELECT<\/span> Miasto <span class=\"sqlkeywordcolor\">FROM<\/span> Dostawca<\/code><br \/>\n<code><span class=\"sqlkeywordcolor\">ORDER<\/span>\u00a0<span class=\"sqlkeywordcolor\">BY<\/span> Miasto;<\/code><\/p>\n<p>&nbsp;<\/p>\n<h2>Operatory SQL&#8217;owe<\/h2>\n","protected":false},"excerpt":{"rendered":"<p>W tym wpisie skupimy si\u0119 na podstawowych elementach j\u0119zyka SQL, dzi\u0119ki kt\u00f3rym nasze instrukcje b\u0119d\u0105 wykonywa\u0142y to, czego tak na prawd\u0119 chcemy.<\/p>\n","protected":false},"author":1,"featured_media":155,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[24],"class_list":["post-187","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bazy-danych","tag-mysql"],"_links":{"self":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/comments?post=187"}],"version-history":[{"count":0,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/187\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media\/155"}],"wp:attachment":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media?parent=187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/categories?post=187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/tags?post=187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}