SQL #3: Group by, having, funkcje agregujące oraz join

sql group by having

GROUP BY i HAVING Aby zrozumieć do czego służą funkcje agregujące, wpierw musisz pojąć założenia grupowania w języku SQL. GROUP BY i HAVING służą do grupowanie danych a potem ustawienie warunku na jego wyniku. Przypomina to bardzo filtrowanie poprzez WHERE. Podstawową różnicą między nimi jest to, że WHERE filtruje wiersze przed grupowaniem i obliczeniami (decyduje, … Dowiedz się więcej

SQL #2: tworzenie schematu, zapytań i edycja danych

sql crud

Język SQL (ang. Structured Query Language) jest rodzajem deklaratywnego języka, który powstał w latach 70-siątych, do obsługi danych w bazach. Język ten w swojej istocie miał być intuicyjny i prosty, tak aby maksymalnie ułatwić programiście pracę na bazie danych. Tworzenie schematu CREATE DATABASE – tworzenie bazy danych CREATE TABLE – tworzy pojedynczą tabelę. W najprostszym … Dowiedz się więcej

SQL #1: schemat bazy danych

sql basics

Historia Koncepcja baz danych jest prawie tak stara jak cała informatyka. Ogólna idea baz danych polega na posiadaniu wyspecjalizowanego programu (silnika bazodanowego), który mógłby wyszukiwać dane przede wszystkim po ich zawartości a nie po linkach do nich. Schemat bazy danych, to inaczej sposób opisania relacji i struktur Twoich danych. Kolejnym problemem było powtarzanie się danych … Dowiedz się więcej

Java #59: struktury danych bezpieczne wątkowo

java threadsafe structures

Na koniec cyku wpisów związanych z wielowątkowością, warto przyjrzeć się, jakie struktury danych bezpieczne wątkowo oferuje programistom Java. Okazuje się, że wiele problemów zostało już dawno przez kogoś rozwiązane (co jest dość częste w programowaniu). Klasy niemodyfikowalne Pierwszym rodzajem struktur przydatnych do pracy z wątkami są klasy niemodyfikowalne. Są one szczególnie przydatne we wszelkich obiektach … Dowiedz się więcej

Java #58: volatile – widoczność zmiennych

java volatile threads

Jednym z wielu problemów obok synchronizacji, jest widoczność zmiennych klasowych dla poszczególnych wątków. Nie jest to problem oczywisty, dlatego rozważę wpierw poniższy kod. Na konsoli powinno wyświetlić się: Wynik nie jest poprawny, zmiana flagi done, nigdy nie została odczytana. Dzieje się tak dlatego, ponieważ słowo kluczowe static pozwala komputerowi na trzymanie tej wartości w pamięci … Dowiedz się więcej

Java #57: egzekutory – pule wątków

java executors

Egzekutory W poprzednich lekcjach wątki były odpalane za pomocą odpalania za każdym razem osobnej instancji. Nie jest to jednak bardzo wygodny sposób. Wyobraź sobie, że musisz ten sam wątek odpalić tysiąc razy! Wymagałoby to za każdym razem tworzenia nowego obiektu i wywoływania na nim metody start. Jest jednak dużo wygodniejszy sposób, mianowicie skorzystanie z puli … Dowiedz się więcej

Podstawy programowania – słowniczek

programming basics

Zapraszam Cię do mojego mini słowniczka z pojęć informatycznych. Jeśli interesują Cię podstawy programowania, to z pewnością znajdziesz tu dużo interesującej wiedzy! Pamięć – układ zer i jedynek. Każde miejsce zapisać można wartością 0 lub 1 (bit). Bity poukładane są w bajty. Każdy bajt ma swój adres pamięci. Po adresach procesor odwołuje się do komórek … Dowiedz się więcej

Java #56: obiekty niezmienne (immutable)

java immutable

Obiekty niezmienne Przetwarzanie wielowątkowe niesie ze sobą jeden podstawowy problem. Praca wielu wątków na jednej klasie przechowującej stan (np. zwykła klasa typu POJO), wymaga odpowiedniej synchronizacji. Innym sposobem jest wymuszenie na klasie, która ma przechowywać dane, aby była odporna na zmiany. Taka klasa często nosi miano klasy niemutowalnej (ang. immutable), a jej instancje to obiekty … Dowiedz się więcej