{"id":629,"date":"2024-12-31T14:16:41","date_gmt":"2024-12-31T14:16:41","guid":{"rendered":"https:\/\/iseebugs.pl\/?p=629"},"modified":"2024-12-31T14:16:41","modified_gmt":"2024-12-31T14:16:41","slug":"as-aliasy-w-postgresql","status":"publish","type":"post","link":"https:\/\/iseebugs.pl\/index.php\/2024\/12\/31\/as-aliasy-w-postgresql\/","title":{"rendered":"AS &#8211; aliasy w PostgreSQL"},"content":{"rendered":"\n<p>Cz\u0119sto w zapytaniach SQL widzimy zapis podobny do poni\u017cszego:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n\ta.first_name <strong>AS<\/strong> actor_name\nFROM actor AS a;\n<\/code><\/pre>\n\n\n\n<p>Dla os\u00f3b kt\u00f3re zaczynaj\u0105 prac\u0119 z SQL mo\u017ce by\u0107 to troch\u0119 nie zrozumia\u0142e, po co s\u0105 jest <strong>AS <\/strong>oraz <strong>a <\/strong>i czy nie da si\u0119 pisa\u0107 zapyta\u0144 bez nich?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">AS &#8211; alias<\/h2>\n\n\n\n<p>Alias s\u0142u\u017cy do nadania tymczasowej lub zast\u0119pczej nazwy r\u00f3\u017cnym obiektom znajduj\u0105cym si\u0119 w naszej bazie danych.<\/p>\n\n\n\n<p>W powy\u017cszym przyk\u0142adzie nadali\u015bmy tymczasow\u0105 nazw\u0119 <strong>a<\/strong> tabeli <strong><code>actor<\/code><\/strong>, a kolumnie <code><strong>first_name<\/strong><\/code> zast\u0119pcz\u0105 nazw\u0119 <code><strong>actor_name<\/strong><\/code>. Daje nam to co najmniej dwie korzy\u015bci<\/p>\n\n\n\n<ul>\n<li>mo\u017cemy zwr\u00f3ci\u0107 nasze kolumny ze zmienionymi danymi lub tworzy\u0107 w\u0142asne nazwy kolumn je\u017celi s\u0105 one wymagane przez logik\u0119 biznesow\u0105. <\/li>\n\n\n\n<li>kr\u00f3tsza nazwa tabeli na kt\u00f3rej pracujemy<\/li>\n<\/ul>\n\n\n\n<p>Do cel\u00f3w dalszej analizy za\u0142\u00f3\u017cmy, \u017ce posiadamy tabel\u0119 <code><strong>actor<\/strong><\/code> kt\u00f3ra ma 4 kolumny <code><strong>actor_id<\/strong><\/code>, <code><strong>first_name<\/strong><\/code>, <strong>last_name<\/strong> oraz <code><strong>last_Update<\/strong><\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Aliasy tabel + autouzupe\u0142nianie<\/h2>\n\n\n\n<p>Aliasy tabel s\u0105 to tymczasowe nazwy tabel kt\u00f3re s\u0105 nam potrzebne do \u0142atwiejszego pisania zapyta\u0144. Alias w jego podstawowej wersji tworzymy poprzez dodanie s\u0142owa kluczowego <strong>AS<\/strong> po nazwie tabeli a nast\u0119pnie jej tymczasowej nazwy najcz\u0119\u015bciej w postaci pierwszej litery tabeli. Poniewa\u017c zapytanie ma zasi\u0119g lokalny i \u0142atwo sprawdzi\u0107 jakiej tabeli dotyczy alias np. <strong>a<\/strong>, nie ma potrzeby na si\u0142\u0119 trzyma\u0107 si\u0119 w tym przypadku zasad, \u017ce nazwa zmiennej ma by\u0107 czytelna i od razu informowa\u0107 za co odpowiada.<\/p>\n\n\n\n<p>Kr\u00f3tsza nazwa tabeli zw\u0142aszcza w po\u0142\u0105czeniu z autouzupe\u0142nianiem kolumn przyspiesza pisanie zapyta\u0144 a przede wszystkim tworzy kod czytelniejszym oraz eliminuje b\u0142\u0119dy zwi\u0105zane ze \u017ale wprowadzonymi nazwami kolumn i tabel. <\/p>\n\n\n\n<p>W pgAdmin 4 autouzupe\u0142nianie jest uruchamiane poprzez kombinacj\u0119 klawiszy ctrl+space, ale ka\u017cde narz\u0119dzie ma swoje w\u0142asne skr\u00f3ty. Warto je pozna\u0107 i z nich korzysta\u0107.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"665\" height=\"360\" src=\"https:\/\/iseebugs.pl\/wp-content\/uploads\/2024\/12\/iseebugs_SQL_alias.gif\" alt=\"\" class=\"wp-image-635\" style=\"width:512px;height:auto\"\/><\/figure>\n\n\n\n<p>Jest to szczeg\u00f3lnie pomocne przy pisaniu nieco bardziej skomplikowanych zapyta\u0144 ni\u017c zwyk\u0142y <strong>SELECT<\/strong> np. przy tworzeniu JOIN&#8217;\u00f3w. Przy r\u0119cznym wpisywaniu pe\u0142nych nazw kolumn \u0142atwo o liter\u00f3wk\u0119. Korzystaj\u0105c z autouzupe\u0142nienia mamy pewno\u015b\u0107, \u017ce nazwa kolumny jest z tabeli do kt\u00f3rej si\u0119 odwo\u0142ujemy a ponadto, \u017ce nazwa zostanie poprawnie wprowadzona.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT \n\ta.first_name\n\t, a.last_name\n\t, co.country\n\t, ci.city\nFROM actor AS a\nJOIN country AS co ON co.country_id = a.country_id \nJOIN city AS ci ON ci.city_id = co.city_id;<\/code><\/pre>\n\n\n\n<p>Za\u0142\u00f3\u017cmy, \u017ce tabel <strong>actor <\/strong>posiada jeszcze kolumn\u0119 <strong>country<\/strong>. Je\u017celi by\u015bmy chcieli po\u0142\u0105czy\u0107 tak\u0105 tabel\u0119 z innymi tabelami bez alias\u00f3w i bez autouzupe\u0142niania \u0142atwo by\u0142o by o pomy\u0142k\u0119, a cz\u0119sto zapytania SQL maj\u0105 wi\u0119cej JOIN&#8217;\u00f3w ni\u017c 2.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tworzenie alias\u00f3w<\/h2>\n\n\n\n<p>Wiemy jak zrobi\u0107 najprostszy alias na przyk\u0142adzie tabeli i po co je robimy dla tabel. Teraz zajmiemy si\u0119 aliasami kolumn i r\u00f3\u017cnymi sposobami ich tworzenia.<\/p>\n\n\n\n<p>Poni\u017cej jest kilka sposob\u00f3w ich tworzenia kt\u00f3re pokr\u00f3tce om\u00f3wi\u0119<\/p>\n\n\n\n<ul>\n<li>za pomoc\u0105 s\u0142owa kluczowego <strong>AS <\/strong>np. \n<ul>\n<li><code>actor <strong>AS<\/strong> a<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>pomijaj\u0105c s\u0142owo kluczowe <strong>AS<\/strong> np. \n<ul>\n<li>actor a<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>za pomoc\u0105 cudzys\u0142owa ze s\u0142owem <strong>AS<\/strong> jak i bez niego np. \n<ul>\n<li><code>actor <strong>AS <\/strong>\"a\" <\/code>lub <code>actor \"a\"<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Pierwszy spos\u00f3b jest dobry je\u017celi chcemy w jasny spos\u00f3b przekaza\u0107 jak b\u0119dzie nazywa\u0142a si\u0119 prezentowana kolumna. Jest to pomocne w bardziej skomplikowanych definicjach tabel gdzie wykorzystujemy np. <strong>CASE<\/strong> i chcemy zakomunikowa\u0107 zmian\u0119 nazwy jak w przyk\u0142adzie poni\u017cej. Drugim powodem dla kt\u00f3rego warto z niego korzysta\u0107 jest samo zaznajomienie si\u0119 z aliasami.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n  m.number\n  , CASE\n      WHEN m.number % 2 = 0 \n        THEN m.number * 8\n      ELSE\n        m.number * 9\n  END AS res\nFROM multiplication AS m<\/code><\/pre>\n\n\n\n<p>Drugi spos\u00f3b jest dobry do prostych zapyta\u0144 SQL. <\/p>\n\n\n\n<p>Ka\u017cdy te\u017c ma swoje przyzwyczajenia, dlatego stosuj aliasy w jakiej chcesz formie byle to by\u0142o czytelne dla innych u\u017cytkownik\u00f3w. Oczywi\u015bcie pomijanie <strong>AS<\/strong> jest zgodne ze standardem SQL, ale jego stosowanie zwi\u0119ksza czytelno\u015b\u0107 i jest dobrym zwyczajem.<\/p>\n\n\n\n<p>Ostatnim ze sposob\u00f3w jest zapisanie aliasu jako String&#8217;a. Dzi\u0119ki temu mo\u017cemy w nazwie wykorzysta\u0107 bia\u0142e znaki oraz rozr\u00f3\u017cnia\u0107 wielko\u015b\u0107 liter jak w poni\u017cszym przyk\u0142adzie. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n\tCONCAT(a.first_name, \" \", a.last_name) <strong>AS <\/strong>\"Full name\" \nFROM actor a;<\/code><\/pre>\n\n\n\n<p>W powy\u017cszym kodzie zwracamy kolumn\u0119 <strong>Full name<\/strong> kt\u00f3ra jako wynik przekazuje po\u0142\u0105czone imi\u0119 i nazwisko.<\/p>\n\n\n\n<p>Mo\u017cemy r\u00f3wnie\u017c w taki spos\u00f3b zaaliasowa\u0107 tabel\u0119. Co prawda powstanie pewnego rodzaju potworek ale je\u017celi chcemy to tak mo\u017cemy zrobi\u0107. W poni\u017cszym przyk\u0142adzie odwo\u0142ania do tabel musimy pisa\u0107 tak jak nasz alias to znaczy w cudzys\u0142owach.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n\tCONCAT(\"my actor\".first_name, \"my actor\".last_name) AS \"Full name\" \nFROM actor AS \"my actor\";<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowanie<\/h2>\n\n\n\n<p>Poznali\u015bmy aliasy jak si\u0119 je tworzy i z nimi pracuje na przyk\u0142adzie bazy danych PostgreSQL. Pami\u0119tajmy aliasy maj\u0105 nam pomaga\u0107 pracowa\u0107 aby nasze zapytania by\u0142y prostsze i czytelniejsze zar\u00f3wno dla nas jak i dla innych u\u017cytkownik\u00f3w.<\/p>\n\n\n\n<ul>\n<li>Aliasy tabel s\u0142u\u017c\u0105 g\u0142\u00f3wnie do u\u0142atwienia pracy przy bardziej z\u0142o\u017conych zapytaniach np. JOIN.<\/li>\n\n\n\n<li>Aliasy kolumn s\u0105 pomocne przy zmienianiu tabel wynikowych szczeg\u00f3lnie przy tworzeniu widok\u00f3w.<\/li>\n\n\n\n<li>U\u017cywanie cudzys\u0142owa do aliasowania jest niezalecane ze wzgl\u0119du na konieczno\u015b\u0107 u\u017cywania ich przy ka\u017cdym odwo\u0142aniu do tabeli<\/li>\n\n\n\n<li>Unikaj alias\u00f3w niejasnych kt\u00f3re wprowadzaj\u0105 w b\u0142\u0105d<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Aliasy w SQL jest to przydatne narz\u0119dzie dzi\u0119ki kt\u00f3rym mo\u017cemy pisa\u0107 czytelne i zrozumia\u0142e zapytania. Poznaj je w praktyce!<\/p>\n","protected":false},"author":1,"featured_media":638,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"footnotes":""},"categories":[67],"tags":[63,64,65,62],"_links":{"self":[{"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/posts\/629"}],"collection":[{"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/comments?post=629"}],"version-history":[{"count":8,"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/posts\/629\/revisions"}],"predecessor-version":[{"id":639,"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/posts\/629\/revisions\/639"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/media\/638"}],"wp:attachment":[{"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/media?parent=629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/categories?post=629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iseebugs.pl\/index.php\/wp-json\/wp\/v2\/tags?post=629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}