PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Membuat tabel sementara di SQL

Anda mungkin ingin CREATE TABLE AS - juga berfungsi untuk TEMPORARY (TEMP ) tabel:

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;

Ini membuat tabel sementara dan menyalin data ke dalamnya. Snapshot statis dari data, ingatlah. Ini seperti tabel biasa, tetapi berada di RAM jika temp_buffers diatur cukup tinggi. Itu hanya terlihat dalam sesi saat ini dan mati di ujungnya. Saat dibuat dengan ON COMMIT DROP itu mati di akhir transaksi .

Tabel sementara didahulukan di jalur penelusuran skema default , menyembunyikan tabel lain yang terlihat dengan nama yang sama kecuali memenuhi syarat skema:

  • Bagaimana search_path mempengaruhi resolusi pengenal dan "skema saat ini"

Jika Anda ingin dinamis , Anda akan mencari CREATE VIEW - cerita yang sama sekali berbeda.

Standar SQL juga mendefinisikan, dan Postgres juga mendukung:SELECT INTO . Namun penggunaannya tidak disarankan:

Cara terbaik adalah menggunakan CREATE TABLE AS untuk tujuan ini dalam kode baru.

Benar-benar tidak perlu varian sintaks kedua, dan SELECT INTO digunakan untuk penugasan di plpgsql , di mana sintaks SQL tidak memungkinkan.

Terkait:

  • Gabungkan dua tabel menjadi tabel baru sehingga baris terpilih dari tabel lainnya diabaikan
  • ERROR:parameter input setelah satu dengan nilai default juga harus memiliki default di Postgres

CREATE TABLE LIKE (...) hanya menyalin struktur dari tabel lain dan tidak ada data:

LIKE klausa menentukan tabel tempat tabel baru secara otomatis menyalin semua nama kolom, tipe datanya, dan batasan not-nullnya.

Jika Anda memerlukan tabel "sementara" hanya untuk satu kueri (lalu membuangnya), "tabel turunan" dalam CTE atau subquery hadir dengan overhead yang jauh lebih sedikit:

  • Ubah rencana eksekusi kueri di postgresql secara manual?
  • Gabungkan dua kueri SELECT di PostgreSQL
  • Gunakan kembali nilai pilihan yang dihitung
  • Beberapa CTE dalam satu kueri
  • Perbarui dengan hasil sql lain


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan intarray postgresql:simbol tidak terdefinisi:pfree

  2. Hibernate + PostgreSQL + Jenis Alamat Jaringan (inet, cdir)

  3. Pilih baris acak untuk setiap grup

  4. Bagaimana cara memasukkan JSONB ke Postgresql dengan Python?

  5. Alat Peringatan dan Pemberitahuan Terbaik untuk PostgreSQL