Beberapa DBMS seperti Oracle, MySQL, dan MariaDB memiliki DESCRIBE
perintah yang mengembalikan informasi tentang tabel dan tampilan. Isinya DESCRIBE table
dimana table adalah nama dari tabel atau view, dan bisa juga diikuti dengan nama kolom jika anda hanya menginginkan informasi tentang kolom tertentu.
PostgreSQL tidak memiliki DESCRIBE TABLE
perintah seperti itu, tetapi ada alternatif.
\d
Perintah
Jika Anda menggunakan psql
, cara cepat untuk mengembalikan info tabel adalah dengan \d
memerintah. Perintah ini menunjukkan informasi tentang tabel, tampilan, tampilan terwujud, indeks, urutan, atau tabel asing. Oleh karena itu, kita dapat menggunakan perintah ini sebagai DESCRIBE TABLE
alternatif.
Sintaks
Sintaksnya seperti ini:
\d[S+] [ pattern ]
Di sini, pattern
bisa berupa nama tabel (atau objek lain) atau bisa juga ekspresi reguler. Jika \d
digunakan tanpa pattern
argumen, itu setara dengan \dtvmsE
yang akan menampilkan daftar semua tabel yang terlihat, tampilan, tampilan terwujud, urutan, dan tabel asing.
Secara default, hanya objek yang dibuat pengguna yang ditampilkan, tetapi Anda dapat menyediakan pola atau S
pengubah untuk memasukkan objek sistem.
Contoh
Berikut ini contoh penggunaan \d
untuk mengembalikan informasi tentang tabel yang disebut actor
:
\d public.actor
Hasil:
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()
Perintah juga mengembalikan indeks, batasan, aturan, dan pemicu terkait. Juga, untuk tabel asing, server asing terkait akan ditampilkan.
Info Diperpanjang
Kita dapat menambahkan tanda plus (+
) untuk mengungkapkan informasi yang diperluas, yang mencakup komentar apa pun yang terkait dengan kolom tabel, keberadaan OID dalam tabel, definisi tampilan jika relasi adalah tampilan, dan pengaturan identitas replika non-default dan nama metode akses jika relasi memiliki metode akses.
Contoh:
\d+ public.actor
Hasil:
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
Hanya Kembalikan Jenis Objek Tertentu
Seperti yang disebutkan, if \d
digunakan tanpa pattern
argumen, itu setara dengan \dtvmsE
yang akan menampilkan daftar semua tabel yang terlihat, tampilan, tampilan terwujud, urutan, dan tabel asing.
Kami dapat menambahkan salah satu huruf E
, i
, m
, s
, t
, dan v
, yang masing-masing berdiri untuk tabel asing, indeks, tampilan terwujud, urutan, tabel, dan tampilan. Kita dapat menentukan salah satu atau semua huruf ini, dalam urutan apa pun, untuk mendapatkan daftar objek dari jenis ini.
Berikut ini contoh penambahan t
untuk membatasi data yang dikembalikan ke tabel saja:
\dt actor
Hasil:
List of relations +--------+-------+-------+----------+ | Schema | Name | Type | Owner | +--------+-------+-------+----------+ | public | actor | table | postgres | +--------+-------+-------+----------+
Wildcard
Berikut ini contoh penyertaan operator wildcard, sehingga semua tabel yang dimulai dengan film
dikembalikan:
\dt film*
Hasil:
List of relations +--------+---------------+-------+----------+ | Schema | Name | Type | Owner | +--------+---------------+-------+----------+ | public | film | table | postgres | | public | film_actor | table | postgres | | public | film_category | table | postgres | +--------+---------------+-------+----------+
information_schema.columns
Lihat
Jika Anda tidak menggunakan psql
(dan bahkan jika Anda adalah menggunakan psql
), maka Anda selalu dapat menanyakan information_schema.columns
melihat. Tampilan ini dapat digunakan untuk mengembalikan informasi serupa dengan apa yang kita dapatkan dengan DESCRIBE table
dalam DBMS lainnya.
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';
Hasil:
+-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+ | 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() | +-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+
Tampilan ini berisi lebih banyak kolom, dan Anda dapat menambah/menghapus kolom sesuai kebutuhan.
information_schema
tampilan cukup standar di sebagian besar DBMS utama, jadi kami juga dapat menanyakan tampilan ini di DBMS tersebut.