Komputery Okna Internet

Podstawowe polecenia PostgreSQL. Podstawowe polecenia PostgreSQL Znajdowanie i zmienianie lokalizacji instancji klastra

Witam, dzisiaj chcę zrobić małą notatkę na temat podstawowych poleceń PostgreSQL. Możesz pracować z PosgreSQL zarówno interaktywnie, jak iz wiersza poleceń. Program to psql. Jestem pewien, że ta lista będzie dla Ciebie bardzo przydatna i pozwoli zaoszczędzić czas na przeszukiwaniu różnych zasobów. Przypomnę, że jest to projekt open-source, oparty na Postgres DBMS, został wydany w 1986 roku, jest rozwijany przez ogólnoświatową grupę programistów PGDG, w zasadzie jest to 5-8 osób, ale mimo to jest rozwija się bardzo intensywnie, wprowadzając wszystkie nowe funkcje i naprawiając stare błędy i błędy.

Podstawowe polecenia PostgreSQL w trybie interaktywnym:

  • \ connect nazwa_bazy_danych - łączy się z bazą danych o nazwie nazwa_bazy_bazy
  • \ du - lista użytkowników
  • \dp (lub \z) - lista tabel, widoków, sekwencji, prawa dostępu do nich
  • \ di - indeksy
  • \ ds - sekwencje
  • \ dt - lista tabel
  • \ dt + - lista wszystkich tabel wraz z opisem
  • \ dt * s * - lista wszystkich tabel zawierających sw nazwie
  • \ dv - widoki
  • \ dS - tabele systemowe
  • \ d + - opis tabeli
  • \ o - wyślij wyniki zapytania do pliku
  • \ l - lista baz danych
  • \ i - odczytaj przychodzące dane z pliku
  • \ e - otwiera bieżącą zawartość bufora żądań w edytorze (o ile nie określono inaczej w środowisku zmiennej EDITOR, domyślnie zostanie użyte vi)
  • \ d „nazwa_tabeli” - opis tabeli
  • \ uruchamiam polecenie z zewnętrznego pliku, takiego jak \ i /mój/katalog/mój.sql
  • \ pset - komenda do ustawiania parametrów formatowania
  • \ echo - wyświetla komunikat
  • \ set - ustawia wartość zmiennej środowiskowej. Bez parametrów wyświetla listę aktualnych zmiennych (\ unset - usuwa).
  • \? - odniesienie do psql
  • \ pomoc - odniesienie do SQL
  • \ q (lub Ctrl + D) - wyjdź z programu

Praca z PostgreSQL z wiersza poleceń:

  • -c (lub -command) - Uruchom polecenie SQL bez przechodzenia w tryb interaktywny
  • -f plik.sql - wykonuje polecenia z pliku plik.sql
  • -l (lub -list) - wyświetla listę dostępnych baz danych
  • -U (lub -username) - określ nazwę użytkownika (na przykład postgres)
  • -W (lub -password) - pytanie o hasło
  • -d nazwa_bazy - połącz się z bazą danych nazwa_bazy
  • -h - nazwa hosta (serwer)
  • -s - tryb krok po kroku, czyli będziesz musiał potwierdzać wszystkie polecenia
  • –S - tryb jednowierszowy, czyli nowa linia wykona zapytanie (pozbądź się; na końcu instrukcji SQL)
  • -V - Wersja PostgreSQL bez wchodzenia w tryb interaktywny

Przykłady:

psql -U postgres -d nazwa_bazy_danych -c „UTWÓRZ TABELĘ mój (some_id serial PRIMARY KEY, some_text text);” - wykonanie polecenia w bazie danych dbname.

psql -d nazwa_bazy_danych -H -c "WYBIERZ * Z mojego" -o mój.html - wypisz wynik zapytania do pliku html.

Narzędzia (programy) PosgreSQL:

  • createdb i dropdb - tworzenie i usuwanie bazy danych (odpowiednio)
  • createuser i dropuser - tworzenie i użytkownik (odpowiednio)
  • pg_ctl - program przeznaczony do rozwiązywania ogólnych zadań zarządzania (uruchamianie, zatrzymywanie, konfiguracja parametrów itp.)
  • postmaster - moduł serwera dla wielu użytkowników PostgreSQL (ustawianie poziomów debugowania, portów, katalogów danych)
  • initdb - twórz nowe klastry PostgreSQL
  • initlocation - program do tworzenia katalogów do wtórnego przechowywania baz danych
  • Vacuumdb - fizyczne i analityczne utrzymanie baz danych
  • pg_dump - tworzenie kopii zapasowych i przywracanie danych
  • pg_dumpall - wykonaj kopię zapasową całego klastra PostgreSQL
  • pg_restore - przywracanie bazy danych z archiwów (.tar, .tar.gz)

Przykłady tworzenia kopii zapasowych:

Tworzenie kopii zapasowej bazy danych mydb w postaci skompresowanej

Pg_dump -h localhost -p 5440 -U someuser -F c -b -v -f mojabaza.kopia zapasowa mojabaza

Tworzenie kopii zapasowej bazy danych mydb w postaci zwykłego pliku tekstowego wraz z poleceniem utworzenia bazy danych

Pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f mojabaza.backup mojabaza

Tworzenie kopii zapasowej bazy mydb, w postaci skompresowanej, z tabelami zawierającymi w nazwie płatności

Pg_dump -h localhost -p 5432 -U someuser -F c -b -v -t * payments * -f payment_tables.backup mydb

Zrzuć dane tylko z jednej określonej tabeli. Jeśli musisz utworzyć kopię zapasową kilku tabel, nazwy tych tabel są wyświetlane przy użyciu przełącznika -t dla każdej tabeli.

Pg_dump -a -t nazwa_tabeli -f nazwa_pliku nazwa_bazy danych

Tworzenie kopii zapasowej z kompresją gz

Pg_dump -h localhost -O -F p -c -U postgres mydb | gzip -c> mojabab.gz

Lista najczęściej używanych opcji:

  • -h host - host, jeśli nie jest określony, używany jest host lokalny lub wartość ze zmiennej środowiskowej PGHOST.
  • -p port - port, jeśli nie został określony, zostanie użyty 5432 lub wartość ze zmiennej środowiskowej PGPORT.
  • -u - użytkownik, jeśli nie jest określony, używany jest bieżący użytkownik, wartość można również podać w zmiennej środowiskowej PGUSER.
  • -a, -data-only - domyślnie zapisywane są tylko dane, dane i schemat.
  • -b — dołącz duże obiekty (blogi) do zrzutu.
  • -s, -schema-only — zrzut tylko schematu.
  • -C, -create - dodaje polecenie utworzenia bazy danych.
  • -c - dodaje polecenia do upuszczania (upuszczania) obiektów (tabele, widoki itp.).
  • -O - ​​nie dodawaj poleceń, aby ustawić właściciela obiektu (tabele, widoki itp.).
  • -F, -format (c | t | p) - wyjściowy format zrzutu, niestandardowy, tar lub zwykły tekst.
  • -t, -table = TABELA — określ konkretną tabelę zrzutu.
  • -v, -verbose - wyświetla szczegółowe informacje.
  • -D, -attribute-inserts - zrzut za pomocą polecenia INSERT z listą nazw właściwości.

Utwórz kopię zapasową wszystkich baz danych za pomocą polecenia pg_dumpall.

Pg_dumpall> wszystkie.sql

Przywracanie tabel z kopii zapasowych (kopii zapasowych):

psql - przywracanie kopii zapasowych zapisanych w zwykłym pliku tekstowym;
pg_restore - przywraca skompresowane kopie zapasowe (tar);

Przywracanie całej kopii zapasowej, ignorowanie błędów

Psql -h localhost -U jakiś użytkownik -d nazwa_bazy_danych -f moja_baza.sql

Przywracanie całej kopii zapasowej, zatrzymanie przy pierwszym błędzie

Psql -h localhost -U someuser -set ON_ERROR_STOP = on -f mydb.sql

Aby przywrócić z archiwum tar, musimy najpierw utworzyć bazę danych za pomocą CREATE DATABASE mydb; (jeśli opcja -C nie została podana podczas tworzenia kopii zapasowej) i przywróć

Pg_restore -dbname = moja baza danych -jobs = 4 -verbose mojabaza.kopia zapasowa

Przywracanie kopii zapasowej bazy danych skompresowanej w gz

psql -U postgres -d moja baza danych -f moja baza

Myślę, że baza danych postgresql będzie teraz bardziej przejrzysta. Mam nadzieję, że ta lista poleceń PostgreSQL była dla Ciebie pomocna.

Ostatnia aktualizacja: 17.03.2018

Aby utworzyć tabele, użyj polecenia CREATE TABLE, po którym następuje nazwa tabeli. Istnieje również wiele operatorów, których można użyć z tym poleceniem, które definiują kolumny tabeli i ich atrybuty. Ogólna składnia tworzenia tabeli jest następująca:

CREATE TABLE nazwa_tabeli (nazwa_kolumny1 typ danych atrybuty_kolumny1, nazwa_kolumny2 typ danych atrybuty_kolumny2, .................................. .. .......... nazwa_kolumnyN typ danych atrybuty_kolumnyN, atrybuty_tabeli);

Specyfikacja wszystkich kolumn jest wymieniona w nawiasach po nazwie tabeli. Ponadto dla każdej kolumny należy wskazać nazwę i rodzaj danych, które będą reprezentować. Typ danych określa, jakie dane (liczby, ciągi itp.) może zawierać kolumna.

Na przykład utwórzmy tabelę w bazie danych przez pgAdmin. Aby to zrobić, najpierw wybierz docelową bazę danych w pgAdmin, kliknij ją prawym przyciskiem myszy i wybierz opcję Narzędzie zapytań ... w menu kontekstowym:

Następnie otworzy się pole do wpisania kodu SQL. Ponadto zostanie utworzona tabela specjalnie dla bazy danych, dla której otworzymy to pole do wpisania SQL.

Klienci CREATE TABLE (identyfikator SERIAL PRIMARY KEY, imię RÓŻNE ZNAKÓW (30), Nazwisko RÓŻNE ZNAKÓW (30), e-mail CHARACTER RÓŻNE (30), liczba całkowita wiekowa);

W tym przypadku tabela Klienci definiuje pięć kolumn: Id, Imię, Nazwisko, Wiek, Email. Pierwsza kolumna, Id, reprezentuje identyfikator klienta, służy jako klucz podstawowy i dlatego jest typu SERIAL. W rzeczywistości ta kolumna będzie przechowywać wartość liczbową 1, 2, 3 itd., która zostanie automatycznie zwiększona o jeden dla każdego nowego wiersza.

Kolejne trzy kolumny reprezentują imię, nazwisko i adres e-mail klienta i są typu ZNAK RÓŻNY (30), czyli reprezentują ciąg nie dłuższy niż 30 znaków.

Ostatnia kolumna, Wiek, reprezentuje wiek użytkownika i jest typu INTEGER, czyli przechowuje liczby.

A po wykonaniu tego polecenia tabela klientów zostanie dodana do wybranej bazy danych.

Upuszczanie stołów

Aby usunąć tabele, użyj polecenia DROP TABLE, które ma następującą składnię:

DROP TABLE tabela1 [, tabela2, ...];

Na przykład upuszczenie tabeli klientów.

Alternatywą dla pracy z bazą danych poprzez konsolę jest bardziej intuicyjne środowisko dla każdego klienta z graficznym interfejsem. Na przykład, pgAdmin... Instalacja jest bardzo prosta, uruchamiamy ją z uprawnieniami superużytkownika:

sudo apt-get zainstaluj pgadmin3
Teraz możesz biegać pgAdmin poprzez interfejs graficzny. Wybierz z listy lokalny serwer bazy danych (ma domyślny port 5432) i dodaj bazę danych, którą już stworzyliśmy z określonymi przez nas parametrami.
pgAdmin

Na tym lokalnym serwerze oprócz węzła Bazy danych możesz również znaleźć węzeł o nazwie Role logowania- wszystkie dostępne role.

Wybierzmy ze wszystkich dostępnych baz danych tę, którą stworzyliśmy. Baza danych zawiera wiele różnych typów obiektów. Wśród na szczególną uwagę zasługują tabele i sekwencje ( sekwencje).

Najczęściej zwykła tabela zawiera klucz podstawowy w postaci dodatniej wartości liczbowej. Ta wartość musi być unikalna dla każdego wiersza, więc aby nie ustawiać jej bezpośrednio w żądaniu za każdym razem, możesz ustawić sekwencję jako wartość domyślną.

Najpierw utwórzmy sekwencję. Wybieramy Sekwencje - Nowa sekwencja... Na pierwszej karcie wprowadź nazwę i określ ją jako Właściciel rolę, którą stworzyliśmy. Ta sekwencja nie będzie dostępna dla innych ról. Na drugiej zakładce w pola Przyrost oraz Początek wchodzimy pojedynczo (chyba, że ​​życzysz sobie inaczej). Na ostatniej karcie okna dialogowego można zobaczyć wynikowe zapytanie SQL, które zostanie wykonane względem bazy danych.

Po utworzeniu sekwencji zacznijmy tworzyć tabelę. Wskazujemy również jej imię i nazwisko oraz właściciela (właściciela). Na czwartej karcie Kolumny dodajemy przede wszystkim klucz podstawowy. Przycisk Dodać, w wyświetlonym oknie podaj nazwę kolumny, na przykład NS... Wybieramy jako typ danych bigint... Na drugiej karcie Definicja w terenie Domyślna wartość wskazujemy naszą sekwencję. Pole musi zawierać wartość formularza nextval ("message_id_seq" :: regclass)... Oznacza to, że za każdym razem, gdy dodawany jest nowy wiersz, następna wartość zostanie pobrana z sekwencji. W razie potrzeby dodano inne kolumny. Wreszcie w zakładce Ograniczenia dodaj ograniczenie na kluczu podstawowym ( Główny klucz). W ostatniej zakładce możemy podziwiać wynikowy kod SQL, który wygenerował pgAdmin. Po kliknięciu OK tabela zostanie utworzona.

Zamiast bigint jako klucza podstawowego, możesz określić go jako typ kolumny dużyserial... Ten typ jest automatycznie zwiększany przy każdym dodawaniu nowego wiersza, więc nie ma potrzeby tworzenia dla niego sekwencji. Oznacza to, że w najprostszym przypadku, jeśli nie masz specjalnych reguł generowania identyfikatora rekordu, możesz polecić użycie bigserial.

Zobaczmy zawartość naszej tabeli. Aby to zrobić, kliknij go prawym przyciskiem myszy i wybierz z menu kontekstowego Zobacz dane - Zobacz 100 wierszy.

W tym samym oknie możesz szybko edytować wartość dowolnej komórki w tabeli. Jeśli tabela zawiera więcej niż 100 rekordów, zmień liczbę rekordów wyświetlanych na liście rozwijanej u góry okna. Możesz wyświetlić 100, 500, 1000 lub wszystkie rekordy. Ale to nic innego jak sposób na szybkie przyjrzenie się zawartości tabeli i nie należy się do tego przyzwyczajać. Jeśli masz w swojej tabeli dziesiątki tysięcy rekordów, nie polecałbym wyświetlania wszystkich rekordów na raz - w takim przypadku lepiej napisać zapytanie z parametrami limit oraz zrównoważyć.

15 przydatnych poleceń PostgreSQL

Istnieje wiele samouczków PostgreSQL w sieci, które opisują podstawowe polecenia. Ale gdy zagłębisz się w pracę, pojawiają się praktyczne problemy, które wymagają zaawansowanych zespołów.

Takie polecenia lub fragmenty są rzadko dokumentowane. Przyjrzyjmy się kilku przykładom, przydatnym zarówno dla programistów, jak i administratorów baz danych.

Uzyskiwanie informacji o bazie danych

Rozmiar bazy danych

Aby uzyskać fizyczny rozmiar plików (magazynu) bazy danych, posługujemy się następującym zapytaniem:

SELECT pg_database_size (bieżąca_baza danych ());

Wynik zostanie przedstawiony jako liczba, taka jak 41809016.

current_database() to funkcja zwracająca nazwę bieżącej bazy danych. Zamiast tego możesz wpisać nazwę w tekście:

SELECT pg_database_size („moja_baza”);

Aby uzyskać informacje w formie czytelnej dla człowieka, używamy funkcji pg_size_pretty:

SELECT pg_size_pretty (pg_database_size (bieżąca_baza danych ()));

W efekcie otrzymujemy informacje o postaci 40 Mb.

Wykaz tabel

Czasami chcesz uzyskać listę tabel bazy danych. Aby to zrobić, użyj następującego zapytania:

SELECT table_name FROM information_schema.tables GDZIE table_schema NOT IN („information_schema”, „pg_catalog”);

information_schema to standardowy schemat bazy danych, który zawiera kolekcje widoków, takich jak tabele, pola itp. Widoki tabel zawierają informacje o wszystkich tabelach w bazie danych.

Opisane poniżej zapytanie wybierze wszystkie tabele z określonego schematu aktualnej bazy danych:

SELECT nazwa_tabeli FROM schemat_informacyjny.tables WHERE schemat_tabeli NOT IN („schemat_informacyjny”, „pg_catalog”) AND schemat_tabeli IN („publiczny”, „myschemat”);

W ostatniej klauzuli IN możesz podać nazwę konkretnego schematu.

Rozmiar tabeli

Analogicznie do uzyskania rozmiaru bazy danych, rozmiar danych tabeli można obliczyć za pomocą odpowiedniej funkcji:

SELECT pg_relation_size ("konta");

Funkcja pg_relation_size zwraca ilość miejsca, jaką na dysku zajmuje określona warstwa określonej tabeli lub indeksu.

Nazwa największego stołu

W celu wyświetlenia listy tabel w bieżącej bazie danych posortowanych według rozmiaru tabeli należy wykonać następujące zapytanie:

SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;

W celu wyświetlenia informacji o największej tabeli ograniczamy zapytanie za pomocą LIMIT:

SELECT relname, relpages FROM pg_class ORDER BY relpages DESC LIMIT 1;

relname to nazwa tabeli, indeksu, widoku itp.
relpages - rozmiar widoku na dysku tej tabeli w liczbie stron (domyślnie jedna strona to 8 KB).
pg_class to tabela systemowa, która zawiera informacje o relacjach między tabelami bazy danych.

Lista podłączonych użytkowników

Aby poznać nazwę, adres IP i używany port podłączonych użytkowników, uruchom następujące zapytanie:

SELECT nazwa danych, nazwa użytkownika, adres_klienta, port_klienta FROM pg_stat_activity;

Aktywność użytkownika

Aby sprawdzić aktywność połączenia konkretnego użytkownika, używamy następującego zapytania:

SELECT dataname FROM pg_stat_activity WHERE nazwa użytkownika = "devuser";

Praca z polami danych i tabel

Usuwanie zduplikowanych linii

Jeśli tak się stanie, że tabela nie ma klucza podstawowego, prawdopodobnie między rekordami występują duplikaty. Jeśli dla takiej tabeli, szczególnie dużej, konieczne jest ustawienie ograniczeń w celu sprawdzenia integralności, to usuniemy następujące elementy:

  • zduplikowane wiersze,
  • sytuacje, gdy jedna lub więcej kolumn jest zduplikowanych (jeśli te kolumny mają być używane jako klucz podstawowy).

Rozważ tabelę z danymi klientów, w której zduplikowany jest cały wiersz (drugi z rzędu).

Poniższe zapytanie pomoże usunąć wszystkie duplikaty:

DELETE FROM customers WHERE ctid NOT IN (SELECT max (ctid) FROM customers GROUP BY klienta. *);

Pole ctid, które jest unikalne dla każdego rekordu, jest domyślnie ukryte, ale występuje w każdej tabeli.

Ostatnie żądanie wymaga dużej ilości zasobów, dlatego należy zachować ostrożność podczas wykonywania go w projekcie produkcyjnym.

Rozważmy teraz przypadek, w którym wartości pól się powtarzają.

Jeżeli istnieje możliwość usunięcia duplikatów bez zapisywania wszystkich danych, zrealizujemy następujące zapytanie:

DELETE FROM customers WHERE ctid NOT IN (SELECT max (ctid) FROM customers GROUP BY customer_id);

Jeśli dane są ważne, najpierw musisz znaleźć rekordy z duplikatami:

SELECT * FROM klienci WHERE ctid NOT IN (SELECT max (ctid) FROM klienci GROUP BY customer_id);

Przed usunięciem takich rekordów możesz przejść do tabeli tymczasowej lub zastąpić w nich wartość customer_id inną.

Ogólna forma żądania usunięcia zapisów opisanych powyżej jest następująca:

DELETE FROM nazwa_tabeli WHERE ctid NOT IN (SELECT max (ctid) FROM nazwa_tabeli GROUP BY kolumna1,);

Bezpiecznie zmieniaj typ pola

Może pojawić się pytanie o umieszczenie takiego zadania na tej liście. Rzeczywiście, w PostgreSQL bardzo łatwo jest zmienić typ pola za pomocą polecenia ALTER. Spójrzmy ponownie na tabelę klientów jako przykład.

Pole customer_id używa typu danych ciągu varchar. To jest błąd, ponieważ to pole ma przechowywać identyfikatory klientów, które są w formacie całkowitym. Używanie varchar nie jest uzasadnione. Spróbujmy poprawić to nieporozumienie za pomocą polecenia ALTER:

ALTER TABLE klienci ALTER COLUMN customer_id TYPE liczba całkowita;

Ale w wyniku wykonania otrzymujemy błąd:

BŁĄD: kolumna „customer_id” nie może być automatycznie rzutowana na liczbę całkowitą
Stan SQL: 42804
Wskazówka: określ wyrażenie USING, aby wykonać konwersję.

Oznacza to, że nie możesz po prostu wziąć i zmienić typu pola, jeśli w tabeli znajdują się dane. Ponieważ użyto typu varchar, SZBD nie może określić, czy wartość jest liczbą całkowitą. Chociaż dane odpowiadają dokładnie temu typowi. Aby wyjaśnić ten punkt, komunikat o błędzie sugeruje użycie wyrażenia USING do poprawnej konwersji naszych danych na liczbę całkowitą:

ALTER TABLE klienci ALTER COLUMN customer_id TYPE integer USING (customer_id :: integer);

W efekcie wszystko poszło bez błędów:

Należy pamiętać, że przy użyciu USING, oprócz konkretnego wyrażenia, możliwe jest użycie funkcji, innych pól i operatorów.

Na przykład przekonwertujmy pole customer_id z powrotem na varchar, ale z konwersją formatu danych:

ALTER TABLE klienci ALTER COLUMN customer_id TYPE varchar USING (customer_id || "-" || first_name);

W rezultacie tabela będzie wyglądać tak:

Znajdowanie „zagubionych” wartości

Zachowaj ostrożność podczas używania sekwencji jako klucza podstawowego: podczas przypisywania niektóre elementy sekwencji są przypadkowo pomijane, a w wyniku pracy z tabelą niektóre rekordy są usuwane. Te wartości można wykorzystać ponownie, ale trudno je znaleźć w dużych tabelach.

Rozważmy dwie opcje wyszukiwania.

Pierwszy sposób
Wykonajmy następujące zapytanie, aby znaleźć początek przedziału z wartością „lost”:

SELECT customer_id + 1 FROM klienci mo WHERE NOT EXISTS (SELECT NULL FROM klienci mi WHERE mi.customer_id = mo.customer_id + 1) ORDER BY customer_id;

W efekcie otrzymujemy wartości: 5, 9 i 11.

Jeśli potrzebujesz znaleźć nie tylko pierwsze wystąpienie, ale wszystkie brakujące wartości, używamy następującego (zasobożernego!) zapytania:

WITH seq_max AS (SELECT max (customer_id) FROM klienci), seq_min AS (SELECT min (customer_id) FROM klienci) SELECT * FROM generate_series ((SELECT min FROM seq_min), (SELECT max FROM seq_max)) Z WYJĄTKIEM SELECT customer_id FROM klientów;

W rezultacie widzimy następujący wynik: 5, 9 i 6.

Drugi sposób
Otrzymujemy nazwę sekwencji powiązanej z identyfikatorem_klienta:

SELECT pg_get_serial_sequence („klienci”, „identyfikator_klienta”);

I znajdujemy wszystkie brakujące identyfikatory:

WITH sequence_info AS (SELECT start_value, last_value FROM „SchemaName”. „SequenceName”) SELECT generate_series ((sequence_info.start_value), (sequence_info.last_value)) FROM sequence_info Z WYJĄTKIEM SELECT customer_id FROM klientów;

Zliczanie liczby wierszy w tabeli

Liczba wierszy jest obliczana przez standardową funkcję liczenia, ale można jej użyć z dodatkowymi warunkami.

Całkowita liczba wierszy w tabeli:

SELECT licznik (*) Z tabeli;

Liczba wierszy pod warunkiem, że określone pole nie zawiera wartości NULL:

SELECT licznik (nazwa_kolumny) FROM tabela;

Liczba unikalnych wierszy dla określonego pola:

SELECT licznik (odrębna nazwa_kolumny) FROM tabela;

Korzystanie z transakcji

Transakcja łączy sekwencję działań w jedną operację. Jego osobliwością jest to, że w przypadku błędu w realizacji transakcji, żaden z wyników działań nie zostanie zapisany w bazie danych.

Zacznijmy transakcję za pomocą polecenia BEGIN.

Aby cofnąć wszystkie operacje po BEGIN, użyj polecenia ROLLBACK.

I do zastosowania - polecenie COMMIT.

Przeglądanie i wypełnianie wykonywalnych żądań

Aby uzyskać informacje o żądaniach, uruchom następującą komendę:

SELECT pid, wiek (query_start, clock_timestamp ()), nazwa użytkownika, zapytanie FROM pg_stat_activity WHERE zapytanie! = " "I zapytanie NIE PODOBNE"% pg_stat_activity% "ORDER BY query_start desc;

Aby zatrzymać konkretne żądanie, wykonaj następujące polecenie, podając identyfikator procesu (pid):

SELECT pg_cancel_backend (procpid);

W celu anulowania żądania wykonaj:

SELECT pg_terminate_backend (procpid);

Praca z konfiguracją

Znajdowanie i zmiana lokalizacji instancji klastra

Możliwa jest sytuacja, gdy na jednym systemie operacyjnym skonfigurowanych jest kilka instancji PostgreSQL, które „siedzą” na różnych portach. W tym przypadku znalezienie ścieżki do fizycznej lokalizacji każdej instancji jest dość nerwowym zadaniem. Aby uzyskać te informacje, wykonamy następujące zapytanie dla dowolnej bazy danych interesującego klastra:

POKAŻ katalog_danych;

Zmieńmy lokalizację na coś innego za pomocą polecenia:

SET data_directory do new_directory_path;

Ale aby zmiany zaczęły obowiązywać, wymagane jest ponowne uruchomienie.

Uzyskiwanie listy dostępnych typów danych

Uzyskajmy listę dostępnych typów danych za pomocą polecenia:

SELECT typname, typlen z pg_type gdzie typtype = "b";

typname to nazwa typu danych.
typlen to rozmiar typu danych.

Zmiana ustawień DBMS bez ponownego uruchamiania

Ustawienia PostgreSQL znajdują się w specjalnych plikach, takich jak postgresql.conf i pg_hba.conf. Po zmianie tych plików konieczne jest ponowne odebranie ustawień przez DBMS. W tym celu następuje ponowne uruchomienie serwera bazy danych. Oczywiste jest, że musisz to zrobić, ale w wersji produkcyjnej projektu, z której korzystają tysiące użytkowników, jest to bardzo niepożądane. Dlatego PostgreSQL posiada funkcję, dzięki której możesz wprowadzić zmiany bez restartu serwera:

WYBIERZ pg_reload_conf ();

Ale niestety nie dotyczy to wszystkich parametrów. W niektórych przypadkach zastosowanie ustawień wymaga ponownego uruchomienia komputera.

Omówiliśmy polecenia ułatwiające pracę programistom i administratorom baz danych korzystających z PostgreSQL. Ale to nie wszystkie możliwe techniki. Jeśli natrafiłeś na ciekawe problemy, napisz o nich w komentarzach. Podzielmy się przydatnym doświadczeniem!