Co to jest CTE w PostgreSQL?

Co to jest CTE w PostgreSQL?

CTE w PostgreSQL oznacza wspólne wyrażenie tabeli. Jest to sposób na tymczasowe utrzymanie wyników zapytania PostgreSQL. Czasami piszemy niezwykle złożone zapytania, które są bardzo trudne do interpretacji. W takich przypadkach użycie CTE sprawia, że ​​nasze zapytania wyglądają prostsze i bardziej czytelne. Za pomocą tego artykułu zamierzamy nauczyć Cię użycia CTE w PostgreSQL w systemie Windows 10.

Przykład: Korzystanie z CTE w PostgreSQL:

Będziemy używać CTE w PostgreSQL w systemie Windows 10 w poniższym przykładzie:

Krok # 1: Tworzenie tabel PostgreSQL:

Po pierwsze, utworzymy dwie tabele PostgreSQL, aby użyć CTE później, aby wyodrębnić pożądane wyniki z tych tabel. Na tej ilustracji chcemy pracować z relacją między lekarzami i pacjentami. Dlatego stworzymy tabelę o nazwie „Doktor”, a druga o nazwie „pacjent”.

Aby utworzyć tabelę „Doktora”, uruchomimy następujące zapytanie PostgreSQL:

# Utwórz tabelę Doctor (DOC_ID SERIAL KLUCZ Primary, Doc_Name Varchar (255) Not Null);

To zapytanie utworzy tabelę „lekarza” z dwoma atrybutami, i.mi. Doc_id i Doc_name. Możesz także zobaczyć proces tworzenia całego tabeli z obrazu pokazanego poniżej:

Teraz, aby utworzyć tabelę „pacjentów”, uruchomimy następujące zapytanie PostgreSQL:

# Utwórz tabelę pacjenta (Pat_ID szeregowy klucz podstawowy, Pat_name Varchar (255) Not Null, Pat_Temp Int Not Null, Doc_ID INT NOLL);

To zapytanie utworzy tabelę „pacjentów” z czterema atrybutami, i.mi. PAT_ID, PAT_NAME, PAT_TEMERATURA (to reprezentuje temperaturę ciała pacjenta) i DOC_ID (to ten sam DOC_ID, który zadeklarowaliśmy w tabeli „Doktora”. Tutaj jest wykorzystywany jako klucz obcy, aby określić, którzy lekarze leczyli każdego pacjenta). Możesz także zobaczyć proces tworzenia całego tabeli z obrazu pokazanego poniżej:

Krok # 2: Rejestruje wstawienie w tabelach PostgreSQL:

Po utworzeniu tych tabel musimy włożyć do nich wystarczającą liczbę rekordów, aby użyć tych zapisów do wykazania użycia CTE w PostgreSQL. Aby wstawić rekordy do tabeli „Doktora”, uruchomimy następujące zapytanie PostgreSQL:

# Wstaw do wartości doktora (1, „Sarah”), (2, „affan”), (3, „irtiza”), (4, „hina”), (5, „gaymi”);

To zapytanie po prostu wprowadzi zapisy pięciu różnych lekarzy do tabeli „lekarza”, jak pokazano na poniższym obrazku:

Teraz, aby wstawić rekordy do tabeli „pacjenta”, uruchomimy następujące zapytanie PostgreSQL:

# Wstaw do wartości pacjentów (1, „Saba”, 99, 1), (2, „sidra”, 100, 1), (3, „Hamza”, 100, 2), (4, „Aslam”, 98, 2), (5, „Fizza”, 101, 3), (6, „iqra”, 102, 3), (7, „sadia”, 100, 4), (8, „sobia”, 99, 4) , (9, „Salman”, 100, 5), (10, „Jawad”, 103, 5);

To zapytanie wprowadzi zapisy 10 różnych pacjentów do tabeli „pacjenta”, jak pokazano na poniższym obrazku:

Notatka: Być może zastanawiasz się, dlaczego zachowaliśmy liczbę zapisów stolika „pacjenta” bardziej niż „doktor”. Cóż, pojedynczy lekarz może jednocześnie zajmować się wieloma pacjentami. Jest to jednak tylko do demonstracji. Możesz zachować równą liczbę rekordów tych dwóch tabel, jeśli chcesz.

Krok 3: Wyświetl nowo wstawiane rekordy w tabelach PostgreSQL:

Przed przejściem szybko obejrzymy rekordy wstawione do naszych dwóch tabel PostgreSQL. W przypadku tabeli „Doktora” uruchomimy następujące zapytanie PostgreSQL:

# Wybierz * od lekarza;

Możesz zobaczyć wszystkie zapisy tabeli „Doktora” z obrazu pokazanego poniżej:

Teraz, w przypadku tabeli „pacjenta”, uruchomimy następujące zapytanie PostgreSQL:

# Wybierz * od pacjenta;

Możesz zobaczyć wszystkie zapisy tabeli „pacjenta” z obrazu pokazanego poniżej:

Krok # 4: Użyj CTE, aby wyświetlić wszystkie rekordy tabeli PostgreSQL:

Ten krok pokaże stosunkowo proste użycie CTE w PostgreSQL. Chcemy przechowywać wszystkie zapisy jednego z naszych tabel w wspólnym wyrażeniu tabeli, a następnie po prostu wyświetlić je na konsoli. Zapytanie, które zamierzamy wykonać w tym celu, jest cytowane poniżej:

# Z CTE_Patient AS (Wybierz pat_id, Pat_name, Pat_TEMP, DOC_ID od pacjenta) Wybierz * z cte_patient;

Teraz wyjaśnimy ci to całe pytanie, omawiając wszystkie jego komponenty. Nazwa wspólnego wyrażenia tabeli jest zawsze poprzedzona słowem kluczowym „za pomocą” i postępowane przez słowo kluczowe „as”. Oznacza to, że nazwa naszego CTE w tym konkretnym przypadku jest „cte_patient”. Po słowie kluczowym „AS” określamy całe zapytanie, którego wyniki chcemy być przechowywane we wspólnym wyrażeniu tabeli. W tym przykładzie chcemy po prostu wybrać wszystkie rekordy obejmujące wszystkie atrybuty tabeli „cierpliwej”, a następnie przechowywać je w naszym CTE. Następnie użyliśmy instrukcji „Wybierz”, aby wyświetlić zawartość tego CTE na naszej konsoli. To zapytanie przyjmie wszystkie dziesięć rekordów z naszej tabeli „pacjenta”, przechowuje je tymczasowo w CTE_Patient, a następnie wyświetli zawartość CTE_Patient na konsoli, jak pokazano na poniższym obrazku:

Krok # 5: Użyj CTE z klauzulą ​​„gdzie” w PostgreSQL:

Teraz przejdziemy do stosunkowo złożonego użycia CTE w PostgreSQL, i.mi. Użyjemy CTE z klauzulą ​​„gdzie” w PostgreSQL. W tym zmodyfikowanym przykładzie staramy się sprawdzić temperaturę wszystkich pacjentów, a następnie wyświetlić nazwy i identyfikatory tylko tych pacjentów, którzy mają gorączkę. Zapytanie, które będzie służyć temu celowi, jest następujące:

# Z CTE_Patient AS (Wybierz Pat_ID, Pat_name, (przypadek, gdy Pat_TEMP 100 Następnie „Fever” End) Temperatura od pacjenta) Wybierz Pat_ID, Pat_name, temperatura z CTE_Patient Where Tempert

W tym zapytaniu użyliśmy instrukcji „Case” na zmiennej temperatury. Głównym warunkiem tego stwierdzenia jest to, że jeśli temperatura pacjenta jest mniejsza lub równa 100, zostanie uznana za normalną, podczas gdy jeśli będzie to więcej niż 100, pacjent będzie miał gorączkę. Następnie po prostu użyliśmy instrukcji „Wybierz” do wyświetlenia PAT_ID, PAT_NAME i temperatury wszystkich pacjentów z naszego wspólnego wyrażenia tabeli, którzy mają gorączkę. Dodatkowo zamówiliśmy również nasze wyniki alfabetycznie według nazwy pacjenta, jak pokazano na poniższym obrazku:

W ten sam sposób, jeśli chcesz wyświetlić nazwy i identyfikatory wszystkich tych pacjentów na konsoli, których temperatura ciała jest normalna, musisz nieznacznie zmodyfikować wyżej wymienione zapytanie w następujący sposób:

# Z CTE_Patient AS (Wybierz Pat_ID, Pat_name, (przypadek, gdy Pat_TEMP 100 Następnie „Gorączka” END) TEMPERATURA) Wybierz Pat_ID, Pat_name, temperatura z CTE_Patient Where Tempert

Wszyscy pacjenci z naszego „pacjenta” tabeli, której temperatura ciała jest normalna, pokazano na poniższym obrazku:

Wniosek:

Ten przewodnik mówił o wykorzystaniu CTE w PostgreSQL w systemie Windows 10. Aby rozwinąć to użycie, najpierw stworzyliśmy prosty przykład, a następnie wprowadziliśmy w nim pewną złożoność, aby czytelnicy mogli lepiej zrozumieć, jak CTE działa z tabelami PostgreSQL. Po przejrzeniu tego kompleksowego przykładu będziesz mógł nauczyć się podstawowej składni CTE w PostgreSQL wraz z innymi szczegółami technicznymi, a następnie będziesz mógł skutecznie używać komputerów CTE, aby Twoje zapytania wyglądały prostsze i czytelne.