{"id":603,"date":"2023-09-04T10:00:48","date_gmt":"2023-09-04T08:00:48","guid":{"rendered":"https:\/\/piotrgabriel.pl\/wiki\/?p=603"},"modified":"2023-09-05T09:14:03","modified_gmt":"2023-09-05T07:14:03","slug":"operatory-w-sql-like-in-between-not-exists-any-i-all-narzedzia-do-zaawansowanych-zapytan","status":"publish","type":"post","link":"https:\/\/piotrgabriel.pl\/wiki\/operatory-w-sql-like-in-between-not-exists-any-i-all-narzedzia-do-zaawansowanych-zapytan\/","title":{"rendered":"Operatory w SQL &#8211; LIKE, IN, BETWEEN, NOT, EXISTS, ANY i ALL &#8211; Narz\u0119dzia do zaawansowanych zapyta\u0144"},"content":{"rendered":"<p>Kiedy po raz pierwszy zaczynamy pracowa\u0107 z bazami danych, szybko zauwa\u017camy, \u017ce podstawowe zapytania nie zawsze s\u0105 wystarczaj\u0105ce. Aby g\u0142\u0119biej analizowa\u0107, filtrowa\u0107 i manipulowa\u0107 danymi, potrzebujemy bardziej zaawansowanych narz\u0119dzi. Jednym z kluczowych aspekt\u00f3w j\u0119zyka SQL, kt\u00f3ry umo\u017cliwia bardziej skomplikowane operacje na danych, s\u0105 operatory. W tym wpisie przyjrzymy si\u0119 kilku najwa\u017cniejszym operatorom dost\u0119pnym w SQL, kt\u00f3re ka\u017cdy specjalista od baz danych powinien zna\u0107.<!--more--><\/p>\n<h2>Operatory w SQL<\/h2>\n<p>W j\u0119zyku SQL dost\u0119pne s\u0105 r\u00f3\u017cne operatory, kt\u00f3re pozwalaj\u0105 na operacje na danych. Najcz\u0119\u015bciej u\u017cywane operatory to:<\/p>\n<p><strong>LIKE<\/strong> &#8211; s\u0142u\u017cy do wyszukiwania okre\u015blonego wzorca w kolumnie.<br \/>\n<code><br \/>\nSELECT * FROM Customers<br \/>\nWHERE CustomerName LIKE 'a%';<br \/>\n<\/code><br \/>\nW powy\u017cszym przyk\u0142adzie zapytanie zwr\u00f3ci wszystkich klient\u00f3w, kt\u00f3rych nazwa zaczyna si\u0119 na liter\u0119 &#8222;a&#8221;.<\/p>\n<p><strong>IN<\/strong> &#8211; pozwala okre\u015bli\u0107 wiele warto\u015bci w instrukcji WHERE.<br \/>\n<code><br \/>\nSELECT * FROM Customers<br \/>\nWHERE Country IN ('Germany', 'France', 'UK');<br \/>\n<\/code><br \/>\nZapytanie zwr\u00f3ci wszystkich klient\u00f3w z Niemiec, Francji i Wielkiej Brytanii.<\/p>\n<p><strong>BETWEEN<\/strong> &#8211; operator, kt\u00f3ry pozwala na wyb\u00f3r zakresu warto\u015bci.<br \/>\n<code><br \/>\nSELECT * FROM Products<br \/>\nWHERE Price BETWEEN 10 AND 20;<br \/>\n<\/code><br \/>\nZapytanie zwr\u00f3ci wszystkie produkty o cenie mi\u0119dzy 10 a 20.<\/p>\n<p><strong>NOT<\/strong> &#8211; operator, kt\u00f3ry wyklucza rekord.<br \/>\n<code><br \/>\nSELECT * FROM Customers<br \/>\nWHERE NOT Country = 'Germany';<br \/>\n<\/code><br \/>\nZapytanie zwr\u00f3ci wszystkich klient\u00f3w, kt\u00f3rzy nie s\u0105 z Niemiec.<\/p>\n<h2>Operatory EXISTS, ANY i ALL<\/h2>\n<p>Kiedy pracujemy z bazami danych, cz\u0119sto stoimy przed potrzeb\u0105 wykonania bardziej zaawansowanych zapyta\u0144, kt\u00f3re wymagaj\u0105 specyficznych operator\u00f3w. W\u015br\u00f3d nich znajduj\u0105 si\u0119 operatory EXISTS, ANY oraz ALL.<\/p>\n<p><strong>EXISTS<\/strong> &#8211; jest u\u017cywany w celu sprawdzenia istnienia jakiejkolwiek rekordy w podzapytaniu. Operator ten zwraca warto\u015b\u0107 TRUE, je\u015bli podzapytanie zwr\u00f3ci przynajmniej jeden rekord.<br \/>\n<code><br \/>\nSELECT supplier_name<br \/>\nFROM suppliers<br \/>\nWHERE EXISTS (SELECT product_name FROM products WHERE products.supplier_id = suppliers.supplier_id AND price &lt; 20);<br \/>\n<\/code><br \/>\nW powy\u017cszym zapytaniu zostan\u0105 zwr\u00f3cone nazwy dostawc\u00f3w, kt\u00f3rzy maj\u0105 przynajmniej jeden produkt o cenie poni\u017cej 20.<\/p>\n<p><strong>ANY<\/strong> &#8211; por\u00f3wnuje warto\u015b\u0107 z ka\u017cd\u0105 warto\u015bci\u0105 w zestawie wynikowym podzapytania.<br \/>\n<code><br \/>\nSELECT product_name<br \/>\nFROM products<br \/>\nWHERE price &gt; ANY (SELECT price FROM products WHERE price &lt; 20);<br \/>\n<\/code><br \/>\nZapytanie zwr\u00f3ci nazwy produkt\u00f3w, kt\u00f3rych cena jest wy\u017csza ni\u017c cena dowolnego produktu o warto\u015bci poni\u017cej 20.<\/p>\n<p><strong>ALL<\/strong> &#8211; por\u00f3wnuje warto\u015b\u0107 z ka\u017cd\u0105 warto\u015bci\u0105 w zestawie wynikowym podzapytania.<br \/>\n<code><br \/>\nSELECT product_name<br \/>\nFROM products<br \/>\nWHERE price &gt; ALL (SELECT price FROM products WHERE price &lt; 20);<br \/>\n<\/code><br \/>\nZapytanie zwr\u00f3ci nazwy produkt\u00f3w, kt\u00f3rych cena jest wy\u017csza ni\u017c cena wszystkich produkt\u00f3w o warto\u015bci poni\u017cej 20.<\/p>\n<p>Operatory te s\u0105 bardzo przydatne, kiedy chcemy por\u00f3wnywa\u0107 wyniki g\u0142\u00f3wnego zapytania z wynikami podzapytania. Dzi\u0119ki nim mo\u017cemy tworzy\u0107 bardziej skomplikowane zapytania i dostosowywa\u0107 wyniki do naszych potrzeb.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kiedy po raz pierwszy zaczynamy pracowa\u0107 z bazami danych, szybko zauwa\u017camy, \u017ce podstawowe zapytania nie zawsze s\u0105 wystarczaj\u0105ce. Aby g\u0142\u0119biej analizowa\u0107, filtrowa\u0107 i manipulowa\u0107 danymi, potrzebujemy bardziej zaawansowanych narz\u0119dzi. Jednym z kluczowych aspekt\u00f3w j\u0119zyka SQL, kt\u00f3ry umo\u017cliwia bardziej skomplikowane operacje [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":155,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[24,49],"class_list":["post-603","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bazy-danych","tag-mysql","tag-podstawy-sql"],"_links":{"self":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/603","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=603"}],"version-history":[{"count":0,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/603\/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=603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/categories?post=603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/tags?post=603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}