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

Liệt kê tất cả các Bảng tạm thời trong SQLite

Như với hầu hết mọi thứ trong SQLite, có nhiều cách để lấy danh sách các bảng tạm thời trong cơ sở dữ liệu.

Ở đây tôi trình bày hai cách để trả về các bảng tạm thời trong SQLite.

Lệnh .tables

Nếu bạn đã quen thuộc với trình bao dòng lệnh SQLite, thì có thể bạn sẽ biết về .tables lệnh chấm. Lệnh này liệt kê tất cả các bảng phù hợp với một mẫu nhất định (hoặc đơn giản là tất cả các bảng, nếu không có mẫu nào được đưa ra). Điều này bao gồm các bảng tạm thời.

Ví dụ:

CREATE TEMP TABLE TempProducts (id, name, price);
.tables

Kết quả:

Products           temp.TempProducts  vProducts 

Trong trường hợp này, tôi có một bảng cố định (Products ), một lần xem (vProducts ) và một bảng tạm thời (temp.TempProducts ).

Vì vậy, bạn có thể thấy rằng cả bảng tạm thời và bảng vĩnh viễn đều được trả về. Nếu các bảng tạm thời của bạn sử dụng quy ước đặt tên cố định, chẳng hạn như tiền tố chỉ dành riêng cho các bảng tạm thời, bạn có thể sử dụng đối sánh mẫu để chỉ truy xuất các bảng tạm thời.

Ví dụ:

.tables temp%

Kết quả:

temp.TempProducts

Tuy nhiên, các quy ước đặt tên chỉ tốt miễn là mọi người tuân theo chúng.

Nếu bạn không muốn trả về các bảng vĩnh viễn trong kết quả của mình, có lẽ bạn nên truy vấn sqlite_temp_master bảng (bên dưới).

Bảng sqlite_temp_master

SQLite có sqlite_temp_master bảng chứa các bảng tạm thời và các chỉ số và trình kích hoạt của chúng. Bảng này chỉ hiển thị với ứng dụng đã tạo bảng tạm thời.

Bạn có thể truy vấn bảng này như sau:

SELECT name FROM sqlite_temp_master;

Kết quả:

TempProducts

Trong ví dụ này, tôi chỉ trả lại tên bảng, nhưng hãy sử dụng dấu hoa thị (* ) để trả về tất cả các cột.

Như đã đề cập, bảng này không bao gồm các bảng cố định. Nếu bạn cần trả lại cả bảng tạm thời và bảng vĩnh viễn và bạn không thể sử dụng .temp , bạn có thể bao gồm sqlite_master bảng trong truy vấn của bạn.

Ví dụ:

SELECT name FROM 
   (SELECT * FROM sqlite_master UNION ALL
    SELECT * FROM sqlite_temp_master)
WHERE type='table'
ORDER BY name;

Kết quả:

Products
TempProducts

Nếu bạn muốn bao gồm các chế độ xem, hãy làm như sau:

SELECT name FROM 
   (SELECT * FROM sqlite_master UNION ALL
    SELECT * FROM sqlite_temp_master)
WHERE type in ('table', 'view')
ORDER BY name;

Kết quả:

Products
TempProducts
vProducts

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tính số giây kể từ một ngày / giờ cụ thể trong SQLite

  2. Cách tạo một số ngẫu nhiên trong một phạm vi được chỉ định trong SQLite

  3. Làm cách nào để cập nhật và xóa danh sách Xem dữ liệu trong cơ sở dữ liệu SQLite với trình nghe nhấp chuột?

  4. Logcat cho biết dữ liệu cột không hợp lệ1

  5. SQLite JSON_TREE ()