PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PostgreSQL DESCRIBE TABLE Setara

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah jenis bidang varchar ke integer:tidak dapat dilemparkan secara otomatis ke tipe integer

  2. Opsi Pencadangan Cloud untuk PostgreSQL

  3. Bagaimana current_time Bekerja di PostgreSQL

  4. PostgreSQL:Perbandingan string yang tidak peka huruf besar-kecil

  5. Dapatkan baris N terakhir dalam database secara berurutan?