PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tạo bảng tạm thời trong SQL

Bạn có thể muốn CREATE TABLE AS - cũng hoạt động cho TEMPORARY (TEMP ) bảng:

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;

Thao tác này tạo một bảng tạm thời và sao chép dữ liệu vào đó. Một ảnh chụp nhanh tĩnh của dữ liệu, phiền bạn. Nó giống như một bảng thông thường, nhưng nằm trong RAM nếu temp_buffers được đặt đủ cao. Nó chỉ hiển thị trong phiên hiện tại và chết khi kết thúc nó. Khi được tạo bằng ON COMMIT DROP nó chết khi kết thúc giao dịch .

Bảng tạm thời xuất hiện đầu tiên trong đường dẫn tìm kiếm giản đồ mặc định , ẩn các bảng hiển thị khác có cùng tên trừ khi đủ điều kiện giản đồ:

  • Cách search_path ảnh hưởng đến độ phân giải của mã định danh và "giản đồ hiện tại"

Nếu bạn muốn động , bạn sẽ tìm kiếm CREATE VIEW - một câu chuyện hoàn toàn khác.

Tiêu chuẩn SQL cũng định nghĩa và Postgres cũng hỗ trợ: SELECT INTO . Nhưng việc sử dụng nó không được khuyến khích:

Tốt nhất là sử dụng CREATE TABLE AS cho mục đích này trong mã mới.

Thực sự không cần biến thể cú pháp thứ hai và SELECT INTO được sử dụng để gán trong plpgsql , trong đó cú pháp SQL do đó không thể thực hiện được.

Có liên quan:

  • Kết hợp hai bảng thành một bảng mới để các hàng chọn từ bảng kia bị bỏ qua
  • LỖI:các tham số đầu vào sau một tham số có giá trị mặc định cũng phải có giá trị mặc định trong Postgres

CREATE TABLE LIKE (...) chỉ sao chép cấu trúc từ một bảng khác và không có dữ liệu:

LIKE mệnh đề chỉ định một bảng mà từ đó bảng mới tự động sao chép tất cả các tên cột, kiểu dữ liệu của chúng và các ràng buộcnot-null của chúng.

Nếu bạn cần một bảng "tạm thời" chỉ cho mục đích của một truy vấn (và sau đó loại bỏ nó) thì một "bảng dẫn xuất" trong một CTE hoặc một truy vấn con đi kèm với chi phí thấp hơn đáng kể:

  • Thay đổi kế hoạch thực thi của truy vấn trong postgresql theo cách thủ công?
  • Kết hợp hai truy vấn SELECT trong PostgreSQL
  • Sử dụng lại giá trị chọn đã tính
  • Nhiều CTE trong một truy vấn
  • Cập nhật kết quả của một sql khác


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dự phòng &Dự phòng cho PostgreSQL trên Microsoft Azure

  2. Làm phẳng các cặp khóa / giá trị tổng hợp từ trường JSONB?

  3. Làm cách nào để di chuyển cơ sở dữ liệu PostgreSQL sang SQLServer?

  4. Có thể thực hiện các truy vấn cơ sở dữ liệu chéo với PostgreSQL không?

  5. Tạo người dùng với mật khẩu được mã hóa trong PostgreSQL