Một số DBMS như Oracle, MySQL và MariaDB có DESCRIBE
lệnh trả về thông tin về bảng và dạng xem. Nó chuyển sang DESCRIBE table
trong đó table là tên của bảng hoặc dạng xem và nó cũng có thể được theo sau bởi tên cột nếu bạn chỉ muốn thông tin về một cột cụ thể.
PostgreSQL không có DESCRIBE TABLE
lệnh như vậy, nhưng có các lựa chọn thay thế.
\d
Lệnh
Nếu bạn đang sử dụng psql
, một cách nhanh chóng để trả lại thông tin bảng là sử dụng \d
yêu cầu. Lệnh này hiển thị thông tin về bảng, dạng xem, dạng xem cụ thể hóa, chỉ mục, chuỗi hoặc bảng ngoại. Do đó, chúng tôi có thể sử dụng lệnh này làm DESCRIBE TABLE
thay thế.
Cú pháp
Cú pháp như sau:
\d[S+] [ pattern ]
Đây, pattern
có thể là tên của bảng (hoặc đối tượng khác) hoặc nó có thể là một biểu thức chính quy. Nếu \d
được sử dụng mà không có pattern
đối số, nó tương đương với \dtvmsE
sẽ hiển thị danh sách tất cả các bảng, chế độ xem, chế độ xem cụ thể hóa, chuỗi và bảng ngoại có thể nhìn thấy.
Theo mặc định, chỉ các đối tượng do người dùng tạo mới được hiển thị, nhưng bạn có thể cung cấp một mẫu hoặc S
sửa đổi để bao gồm các đối tượng hệ thống.
Ví dụ
Đây là một ví dụ về việc sử dụng \d
để trả về thông tin về một bảng có tên actor
:
\d public.actor
Kết quả:
Table "public.actor" +-------------+-----------------------------+-----------+----------+-----------------------------------------+ | Column | Type | Collation | Nullable | Default | +-------------+-----------------------------+-----------+----------+-----------------------------------------+ | actor_id | integer | | not null | nextval('actor_actor_id_seq'::regclass) | | first_name | character varying(45) | | not null | | | last_name | character varying(45) | | not null | | | last_update | timestamp without time zone | | not null | now() | +-------------+-----------------------------+-----------+----------+-----------------------------------------+ Indexes: "actor_pkey" PRIMARY KEY, btree (actor_id) "idx_actor_last_name" btree (last_name) Referenced by: TABLE "film_actor" CONSTRAINT "film_actor_actor_id_fkey" FOREIGN KEY (actor_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT Triggers: last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE FUNCTION last_updated()
Lệnh này cũng trả về các chỉ mục, ràng buộc, quy tắc và trình kích hoạt được liên kết. Ngoài ra, đối với các bảng nước ngoài, máy chủ nước ngoài được liên kết được hiển thị.
Thông tin mở rộng
Chúng ta có thể thêm một dấu cộng (+
) để tiết lộ thông tin mở rộng, bao gồm bất kỳ nhận xét nào được liên kết với các cột của bảng, sự hiện diện của OID trong bảng, định nghĩa chế độ xem nếu mối quan hệ là một chế độ xem và cài đặt nhận dạng bản sao không mặc định và tên phương thức truy cập nếu mối quan hệ có một phương thức truy cập.
Ví dụ:
\d+ public.actor
Kết quả:
Table "public.actor" +-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+ | Column | Type | Collation | Nullable | Default | Storage | Stats target | Description | +-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+ | actor_id | integer | | not null | nextval('actor_actor_id_seq'::regclass) | plain | | | | first_name | character varying(45) | | not null | | extended | | | | last_name | character varying(45) | | not null | | extended | | | | last_update | timestamp without time zone | | not null | now() | plain | | | +-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+ Indexes: "actor_pkey" PRIMARY KEY, btree (actor_id) "idx_actor_last_name" btree (last_name) Referenced by: TABLE "film_actor" CONSTRAINT "film_actor_actor_id_fkey" FOREIGN KEY (actor_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT Triggers: last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE FUNCTION last_updated() Access method: heap
Chỉ trả lại các loại đối tượng cụ thể
Như đã đề cập, tôi f \d
được sử dụng mà không có pattern
đối số, nó tương đương với \dtvmsE
sẽ hiển thị danh sách tất cả các bảng, chế độ xem, chế độ xem cụ thể hóa, chuỗi và bảng ngoại có thể nhìn thấy.
Chúng ta có thể nối thêm bất kỳ chữ cái nào trong số các chữ cái E
, i
, m
, s
, t
và v
, tương ứng là viết tắt của bảng ngoại, chỉ mục, chế độ xem cụ thể hóa, trình tự, bảng và chế độ xem. Chúng tôi có thể chỉ định bất kỳ hoặc tất cả các chữ cái này, theo bất kỳ thứ tự nào, để có được danh sách các đối tượng thuộc loại này.
Đây là một ví dụ về việc nối thêm t
để giới hạn dữ liệu chỉ trả về các bảng:
\dt actor
Kết quả:
List of relations +--------+-------+-------+----------+ | Schema | Name | Type | Owner | +--------+-------+-------+----------+ | public | actor | table | postgres | +--------+-------+-------+----------+
Các ký tự đại diện
Dưới đây là ví dụ về việc bao gồm toán tử ký tự đại diện để tất cả các bảng bắt đầu bằng film
được trả lại:
\dt film*
Kết quả:
List of relations +--------+---------------+-------+----------+ | Schema | Name | Type | Owner | +--------+---------------+-------+----------+ | public | film | table | postgres | | public | film_actor | table | postgres | | public | film_category | table | postgres | +--------+---------------+-------+----------+
information_schema.columns
Xem
Nếu bạn không sử dụng psql
(và ngay cả khi bạn là sử dụng psql
), thì bạn luôn có thể truy vấn information_schema.columns
lượt xem. Chế độ xem này có thể được sử dụng để trả về thông tin tương tự như những gì chúng tôi nhận được với DESCRIBE table
trong các DBMS khác.
SELECT
column_name,
data_type,
character_maximum_length AS max_length,
character_octet_length AS octet_length,
is_nullable,
column_default
FROM
information_schema.columns
WHERE
table_schema = 'public' AND
table_name = 'actor';
Kết quả:
+-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+ | column_name | data_type | max_length | octet_length | is_nullable | column_default | +-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+ | actor_id | integer | NULL | NULL | NO | nextval('actor_actor_id_seq'::regclass) | | first_name | character varying | 45 | 180 | NO | NULL | | last_name | character varying | 45 | 180 | NO | NULL | | last_update | timestamp without time zone | NULL | NULL | NO | now() | +-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+
Dạng xem này chứa nhiều cột khác và bạn có thể thêm / bớt cột theo yêu cầu.
information_schema
các chế độ xem là khá nhiều tiêu chuẩn trên hầu hết các DBMS chính và vì vậy chúng tôi cũng có thể truy vấn chế độ xem này trong các DBMS đó.