Tabele temporalne

Już w latach 90 zeszłego stulecia firma Postgres próbowała zrealizować ideę tabel temporalnych, jednak ze względu na bardzo wysokie koszty składowania ogromnych ilości danych pomysł zarzucono. W roku 2013 tabele temporalne trafiły do kolejnej wersji specyfikacji języka SQL. Od niedawna wszyscy więksi dostawcy baz danych przejęli się tematem i zaczęli implementować tę opcję w swoich … Continue reading Tabele temporalne

Pchełki SQL: małe – duże

Praca programisty jest - przynajmniej w teorii - fajna, prosta i przyjemna. Dostajemy projekt, dostajemy dokumentację, z której jednoznacznie wynika co mamy na wejściu i co chcemy dostać na wyjściu, siadamy, piszemy kod, testujemy kod, prosimy kilku użytkowników, żeby przetestowali wyniki i jak wszyscy są zadowoleni, wrzucamy kod do ogólnego użytku, wystawiamy fakturę i voila, … Continue reading Pchełki SQL: małe – duże

Pchełki SQL: Drobiazg, a cieszy

Dziś prościutki trick pomocny wszystkim piszącym duże ilości kodu SQL. Jak wszyscy wiedzą[citation needed] w Visual Studio można tworzyć regiony kodu, czyli takie bloki, które automatycznie "dostają" na marginesie edytora ikonkę minusika w kwadraciku (po naszemu: minusa w kwadracie), umożliwiającą "zwinięcie" całego bloku do jednej linii. Dzięki temu możemy owe bloki kodu niejako "odsunąć na … Continue reading Pchełki SQL: Drobiazg, a cieszy

Gwoździe Wilsona: rozwiązanie zagadki (metoda #3)

Dziś pokażę, jak można rozwiązać zagadkę o gwoździach Wilsona za pomocą SQL-a. Rozwiązanie nadesłał jeden z Czytelników. Pozwoliłem sobie nieco sformatować i uporządkować kod, jednak ogólną logikę rozwiązania pozostawiłem bez zmian. Kod wygląda tak: ; WITH licz10 AS ( SELECT 0 x UNION ALL SELECT licz10.x + 1 FROM licz10 WHERE licz10.x < 9 ) , … Continue reading Gwoździe Wilsona: rozwiązanie zagadki (metoda #3)

Pchełki SQL: LEFT JOIN

Dzisiaj coś absolutnie podstawowego, o czym jednak zdarza się zapomnieć nawet starym wyjadaczom (zwłaszcza po trzech zarwanych nockach tuż przed wypuszczeniem gotowego produktu na rynek, albo w środowisko produkcyjne). Operator LEFT JOIN działa w ten sposób, że zwraca wszystkie rekordy z tabeli głównej... Dla jasności, mamy takie zapytanie: SELECT A.*, B.* FROM A LEFT JOIN … Continue reading Pchełki SQL: LEFT JOIN

Pchełki SQL: LAG

Operatory analityczne są często traktowane po macoszemu przez padawanów sztuki SQL-owej. Czasem jednak potrafią one zaoszczędzić mnóstwo czasu. Dziś pokażę, jak działa operator LAG. Jednym z klasycznych problemów, przed którymi staje większość programistów SQL, jest wykonanie zestawienia, w którym chcemy pokazać wartości z rekordu bieżącego wraz z wartościami z rekordu poprzedniego, w jednym rekordzie. Typowym … Continue reading Pchełki SQL: LAG

Pchełki SQL: duże hasze

Od czasu do czasu każdego z nas nachodzi nagła potrzeba wyliczenia skrótu z jakiejś dużej wartości tekstowej. To znaczy, nie dużej, tylko długiej. Ale nachodzi, prawda? Jeżeli, Czytelniku, nie nachodzi Cię od czasu do czasu nagła potrzeba wyliczenia du... dług.. skrótu z jakiejś długiej wartości tekstowej, ten wpis prawdopodobnie nie jest dla Ciebie - polecam … Continue reading Pchełki SQL: duże hasze

Pchełki SQL: MERGE, optymalizacja haszem

Dziś pchełka dotycząca optymalizacji operatora MERGE. Uwaga: jeżeli nie wiesz, jak działa MERGE, lub po prostu nie interesujesz się bazami danych, ten wpis raczej nie jest dla Ciebie. Istnieje szansa, że uśniesz w okolicach czwartego akapitu... Mamy następujący scenariusz: ładujemy dane do hurtowni. W pierwszej kolejności ładowana jest warstwa STAGE a następnie warstwa EDW. Dla … Continue reading Pchełki SQL: MERGE, optymalizacja haszem

Pchełki SQL: Pchełkozagadka maksywielokolumnowa

Rozwiążemy sobie dziś problem, który w Excelu rozwiązuje się dość prosto, natomiast w SQL-u odrobinę trudniej (ale bez przesady). Spróbujemy też odpowiedzieć sobie na pytanie, która z pokazanych metod jest najbardziej wydajna. Problem: mając w tabeli kilka kolumn liczbowych tego samego typu, wyszukać maksymalną wartość w tych kolumnach. Czyli po naszemu, zrobić SELECT id, MAX({kilka … Continue reading Pchełki SQL: Pchełkozagadka maksywielokolumnowa

MSSQL vs Oracle: mały remis

Nie będę się dziś rozpisywał na temat wyższości Świąt Bożego Narodzenia na Chanuką, ani tego, czy Oracle jest lepszy od MSSQL. Napiszę zamiast tego o dwóch maleńkich różnicach między tymi silnikami baz danych. Różnica numer 1: obowiązkowe FROM. W Oracle zapytanie SELECT musi bezwarunkowo posiadać klauzulę FROM. Bez tego ani rusz. Błąd składni i tyle. … Continue reading MSSQL vs Oracle: mały remis

Pchełki SQL: Długie stringi

W dzisiejszym odcinku Pchełek SQL zobaczymy, jak poradzić sobie z zapisywaniem długich stringów w kodzie T-SQL. Jeżeli ktoś zasugerował się pod wpływem tytułu, że wpis dotyczyć będzie fikuśnej mody bieliźnianej, muszę go srodze rozczarować. Lub ją. Jedyne stringi, o jakich będziemy dziś pisać, to literały. Lite Rały. Czyli ciągi znaków wzięte w ciapki. Po naszemu … Continue reading Pchełki SQL: Długie stringi

Eskuele z eksemeli

Tytuł dzisiejszego wpisu, gdyby go potraktować poważnie, mógłby brzmieć: "Jak wykonać zapytanie SQL na danych w formacie XML i po co?" Ale ponieważ to nie jest poważny blog, zostawię jak jest. No więc, o sssso chozzzzi? Chozzzi o tę nieszczęsną technologię przechowywania danych, która - pomimo swych niedoskonałości - zdołała się utrzymać na powierzchni, a … Continue reading Eskuele z eksemeli

Pchełki SQL: suma bieżąca

Trzeci najstarszy zawód świata (zaraz po złodzieju-kombinatorze, wspomnianym niedawno) to prawdopodobnie księgowy. No bo skoro już złodziej-kombinator nazłodzieił i nakombinował, to chciałby teraz wiedzieć, ile tego ma. A że tępy jest jak wojskowy nóż kuchenny, wynajmie sobie w tym celu księgowego. A taki księgowy to nic, tylko by słupki liczył. A w tych słupkach - … Continue reading Pchełki SQL: suma bieżąca

Pchełki SQL: Krawaty górą

Zaczniemy od wyjaśnienia tytułu dzisiejszego wpisu. "krawat" to po angielsku "tie", słówko z wieloma znaczeniami. Efekt: głupi tytuł wpisu. Ale tylko tytuł, bowiem dalej robi się ciekawie. W pierwszej części autor tłumaczy tytuł wpisu. W drugiej zaś... Do dzieła! Wyobraźmy sobie, że mamy zdenormalizowaną tabelę wyników w jakiejś bliżej nieokreślonej dziedzinie sportowej. Chcemy sprawdzić, kto … Continue reading Pchełki SQL: Krawaty górą

Pchełki SQL: MERGE

Operator MERGE nie jest niczym nowym. W świecie Microsoftu zaistniał sześć lat temu, w wersji 2008. W Oracle wprowadzono go w wersji 9i (a więc okolice 2004 roku). Standard ANSI wprowadził ten operator w roku 2003. Niektórzy z dostawców silników baz danych (na przykład MySQL) nie obsługują operatora MERGE do dziś, zamiast niego dopuszczają inne … Continue reading Pchełki SQL: MERGE