Đôi khi bạn chỉ muốn xem cấu trúc cơ bản của một bảng.
Trong SQLite, có một số cách để truy xuất thông tin về một bảng nhất định. Cụ thể, đây là bốn tùy chọn:
-
PRAGMA table_info()
tuyên bố -
PRAGMA table_xinfo()
câu lệnh (cho bảng ảo) -
.schema
lệnh -
sqlite_master
bảng
Dưới đây là ví dụ về từng phương pháp.
PRAGMA table_info ()
PRAGMA table_info()
câu lệnh trả về một hàng cho mỗi cột trong bảng được đặt tên. Nó giống như một SQLite tương đương với DESCRIBE
trong MySQL.
Cú pháp
Cú pháp như sau:
PRAGMA schema.table_info(table-name);
Ở đâu table-name
là tên của bảng mà bạn cần thông tin.
schema
một phần là tùy chọn. Đây là tên của cơ sở dữ liệu đính kèm hoặc main
hoặc temp
cho cơ sở dữ liệu chính và TEMP. Nếu bạn không cung cấp thông tin này thì cơ sở dữ liệu chính sẽ được sử dụng.
Ví dụ
Dưới đây là ví dụ về việc trả lại thông tin về bảng có tên Thú cưng .
PRAGMA table_info(Pets);
Kết quả:
cid name type notnull dflt_value pk ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 1 PetName 0 0 2 TypeId 0 0
Trong trường hợp này, chỉ cột đầu tiên ( PetId ) có kiểu dữ liệu được xác định rõ ràng. Những người khác đã được tạo mà không có loại của chúng được xác định rõ ràng.
Chúng ta cũng có thể thấy rằng PetId là cột khóa chính (có 1 trong pk cột).
PRAGMA table_xinfo ()
PRAGMA table_xinfo()
câu lệnh hoàn toàn giống với PRAGMA table_info()
, ngoại trừ việc nó cũng trả về các cột ẩn trên bảng ảo.
Nếu bạn muốn xem cấu trúc của một bảng ảo, bao gồm bất kỳ cột nào bị ẩn, thì đây là bảng để sử dụng.
Dưới đây là một ví dụ sử dụng cùng một bảng từ ví dụ trước.
PRAGMA table_xinfo(Pets);
Kết quả:
cid name type notnull dflt_value pk hidden ---------- ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 0 1 PetName 0 0 0 2 TypeId 0 0 0
Bạn có thể phải cuộn sang ngang để xem cột phụ. Trong trường hợp này, không có cột nào bị ẩn (và nó không phải là bảng ảo), vì vậy tất cả các hàng đều là 0 cho cột đó.
Đây là kết quả một lần nữa, nhưng sử dụng đầu ra dọc (.mode line
) để bạn không phải cuộn sang ngang.
.mode line
PRAGMA table_xinfo(Pets);
Kết quả:
cid = 0 name = PetId type = INTEGER notnull = 0 dflt_value = pk = 1 hidden = 0 cid = 1 name = PetName type = notnull = 0 dflt_value = pk = 0 hidden = 0 cid = 2 name = TypeId type = notnull = 0 dflt_value = pk = 0 hidden = 0
Lệnh .schema
Một cách khác để truy xuất cấu trúc của bảng là sử dụng .schema
yêu cầu. Đây là một trong số các phương pháp bạn có thể sử dụng để trả về SQL được sử dụng để tạo bảng.
Dưới đây là một ví dụ sử dụng cùng một bảng từ ví dụ trước.
.schema Pets
Kết quả:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) );
Phương pháp này cho phép chúng ta xem thêm thông tin về bảng. Trong ví dụ này, chúng ta có thể thấy rằng TypeId cột thực sự là một khóa ngoại tham chiếu đến một cột trong một bảng khác.
Bảng sqlite_master
Bạn có thể sử dụng sqlite_master
bảng giống như ví dụ trước.
Đây là một ví dụ sử dụng cùng một bảng.
SELECT sql
FROM sqlite_master
WHERE tbl_name = 'Pets';
Kết quả:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) )