PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Tworzenie tabel tymczasowych w SQL

Prawdopodobnie chcesz CREATE TABLE AS - działa również dla TEMPORARY (TEMP ) tabele:

CREATE TEMP TABLE temp1 AS
SELECT dataid
     , register_type
     , timestamp_localtime
     , read_value_avg
FROM   rawdata.egauge
WHERE  register_type LIKE '%gen%'
ORDER  BY dataid, timestamp_localtime;

Tworzy to tymczasową tabelę i kopiuje do niej dane. statyczna migawka danych, pamiętaj. Jest jak zwykła tabela, ale znajduje się w pamięci RAM, jeśli temp_buffers jest ustawiony wystarczająco wysoko. Jest widoczny tylko w ramach bieżącej sesji i umiera na końcu. Po utworzeniu za pomocą ON COMMIT DROP umiera pod koniec transakcji .

Tabele tymczasowe są na pierwszym miejscu w domyślnej ścieżce wyszukiwania schematu , ukrywając inne widoczne tabele o tej samej nazwie, chyba że zakwalifikowano je do schematu:

  • W jaki sposób search_path wpływa na rozpoznawanie identyfikatora i „bieżący schemat”

Jeśli chcesz dynamicznego , szukasz CREATE VIEW - zupełnie inna historia.

Standard SQL również definiuje, a Postgres obsługuje również:SELECT INTO . Ale odradza się jego stosowanie:

Najlepiej użyć CREATE TABLE AS w tym celu w nowym kodzie.

Naprawdę nie ma potrzeby stosowania drugiego wariantu składni i SELECT INTO jest używany do przypisywania w plpgsql , gdzie składnia SQL jest w konsekwencji niemożliwa.

Powiązane:

  • Połącz dwie tabele w nową, aby zignorować wybrane wiersze z drugiej
  • BŁĄD:parametry wejściowe po jednym z wartością domyślną muszą również mieć wartości domyślne w Postgresie

CREATE TABLE LIKE (...) kopiuje tylko strukturę z innej tabeli i brak danych:

LIKE klauzula określa tabelę, z której nowa tabela automatycznie kopiuje wszystkie nazwy kolumn, ich typy danych i ograniczenia niepuste.

Jeśli potrzebujesz tabeli „tymczasowej” tylko na potrzeby pojedynczego zapytania (a następnie ją odrzuć), „tabela pochodna” w CTE lub podzapytaniu wiąże się ze znacznie mniejszym obciążeniem:

  • Ręcznie zmienić plan wykonania zapytania w postgresql?
  • Połącz dwa zapytania SELECT w PostgreSQL
  • Ponownie użyj obliczonej wartości wyboru
  • Wiele CTE w jednym zapytaniu
  • Aktualizuj z wynikami innego sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd:nie można utworzyć TypedQuery dla zapytania z więcej niż jednym zwrotem

  2. Konfiguracje wielu centrów danych z PostgreSQL

  3. Jak ograniczyć dostęp do bazy danych w PostgreSQL

  4. Niezdefiniowana metoda Railsów dla ActiveRecord_Associations_CollectionProxy

  5. Typowe błędy podczas migracji baz danych PostgreSQL ze środowiska lokalnego do AWS RDS