当前位置:网站首页>Basic structure of PostgreSQL - table
Basic structure of PostgreSQL - table
2022-07-04 21:52:00 【Hua Weiyun】
How to be in PostgreSQL Is equivalent to Oracle DESCRIBE TABLE
The order of ( Use psql command )?
#1 floor
DESCRIBE TABLE
Of psql The equivalent term is \\d table
.
For more details , Please see the PostgreSQL Manual psql part .
#2 floor
You can use psql The slash command performs this operation :
\d myTable describe table
It also applies to other objects :
\d myView describe view \d myIndex describe index \d mySequence describe sequence
source : faqs.org
#3 floor
Give it a try ( stay psql
In command line tools ):
\d+ tablename
For more information , Please see the manual .
#4 floor
except PostgreSQL The way (\\ d'something' or \\ dt'table' or \\ ds'sequence' etc. )
SQL Standard way , As shown in the figure ad locum :
select column_name, data_type, character_maximum_lengthfrom INFORMATION_SCHEMA.COLUMNS where table_name = '<name of table>';
Many database engines support it .
#5 floor
If you want to query from instead of psql Get it , Then you can query the directory schema . This is a complex query that performs this operation :
SELECT f.attnum AS number, f.attname AS name, f.attnum, f.attnotnull AS notnull, pg_catalog.format_type(f.atttypid,f.atttypmod) AS type, CASE WHEN p.contype = 'p' THEN 't' ELSE 'f' END AS primarykey, CASE WHEN p.contype = 'u' THEN 't' ELSE 'f' END AS uniquekey, CASE WHEN p.contype = 'f' THEN g.relname END AS foreignkey, CASE WHEN p.contype = 'f' THEN p.confkey END AS foreignkey_fieldnum, CASE WHEN p.contype = 'f' THEN g.relname END AS foreignkey, CASE WHEN p.contype = 'f' THEN p.conkey END AS foreignkey_connnum, CASE WHEN f.atthasdef = 't' THEN d.adsrc END AS defaultFROM pg_attribute f JOIN pg_class c ON c.oid = f.attrelid JOIN pg_type t ON t.oid = f.atttypid LEFT JOIN pg_attrdef d ON d.adrelid = c.oid AND d.adnum = f.attnum LEFT JOIN pg_namespace n ON n.oid = c.relnamespace LEFT JOIN pg_constraint p ON p.conrelid = c.oid AND f.attnum = ANY (p.conkey) LEFT JOIN pg_class AS g ON p.confrelid = g.oid WHERE c.relkind = 'r'::char AND n.nspname = '%s' -- Replace with Schema name AND c.relname = '%s' -- Replace with table name AND f.attnum > 0 ORDER BY number;
It's very complicated , But it does show you PostgreSQL Function and flexibility of system directory , And you should gradually master pg_catalog ;-). Make sure to change %s. The first is mode , The second is the table name .
#6 floor
You can Use the asterisk \\d *search pattern *
To find the table that matches the search pattern you are interested in .
#7 floor
You can use :
SELECT attname FROM pg_attribute,pg_class WHERE attrelid=pg_class.oid AND relname='TableName' AND attstattarget <>0;
#8 floor
Except for the command line that has been found \\d+ <table_name>
, You can also use it info -schema adopt info_schema.columns find information .
SELECT *FROM info_schema.columnsWHERE table_schema = 'your_schema'AND table_name = 'your_table'
#9 floor
Use the following SQL sentence
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_name' AND COLUMN_NAME = 'col_name'
If you replace tbl_name and col_name, It will show the data type of the specific column you are looking for .
#10 floor
You can also use the following query to check
Select * from schema_name.table_name limit 0;
Example : My watch has 2 Column name and password . Provide the following screenshots .
* Use PG admin3
#11 floor
Use this command \d table namelike \d queuerecords Table "public.queuerecords" Column | Type | Modifiers-----------+-----------------------------+----------- id | uuid | not null endtime | timestamp without time zone | payload | text | queueid | text | starttime | timestamp without time zone | status | text |
#12 floor
The best way to describe a table , For example, columns , type , Column modifier, etc .
\d+ tablename or \d tablename
#13 floor
/ dt It's a comma , It lists all the tables that exist in the database . Use
/ d Command and / d + We can get the details of the table . The system will look like
* / d table_name( or )\\ d + table_name
#14 floor
This change of query ( As stated in other answers ) It works for me .
SELECT COLUMN_NAMEFROM information_schema.COLUMNSWHERE TABLE_NAME = 'city';
Here is a detailed introduction : http : //www.postgresqltutorial.com/postgresql-describe-table/
#15 floor
I made the following script for getting the table schema .
'CREATE TABLE ' || 'yourschema.yourtable' || E'\n(\n' ||array_to_string(array_agg(' ' || column_expr), E',\n') || E'\n);\n'from(SELECT ' ' || column_name || ' ' || data_type || coalesce('(' || character_maximum_length || ')', '') || case when is_nullable = 'YES' then ' NULL' else ' NOT NULL' end as column_exprFROM information_schema.columnsWHERE table_schema || '.' || table_name = 'yourschema.yourtable'ORDER BY ordinal_position) column_list;
#16 floor
stay MySQL in ,DESCRIBE table_name
stay PostgreSQL in ,\\ d table_name
perhaps , You can use the following long commands :
SELECT a.attname AS Field, t.typname || '(' || a.atttypmod || ')' AS Type, CASE WHEN a.attnotnull = 't' THEN 'YES' ELSE 'NO' END AS Null, CASE WHEN r.contype = 'p' THEN 'PRI' ELSE '' END AS Key, (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid), '\'(.*)\'') FROM pg_catalog.pg_attrdef d WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef) AS Default, '' as ExtrasFROM pg_class c JOIN pg_attribute a ON a.attrelid = c.oid JOIN pg_type t ON a.atttypid = t.oid LEFT JOIN pg_catalog.pg_constraint r ON c.oid = r.conrelid AND r.conname = a.attnameWHERE c.relname = 'tablename' AND a.attnum > 0ORDER BY a.attnum
#17 floor
In postgres \d is used to describe the table structure.e.g. \d schema_name.table_name;this command will provide you the basic info of table such as, columns, type and modifiers.If you want more info about table use\d+ schema_name.table_name;this will give you extra info such as, storage, stats target and description
#18 floor
To improve another answer SQL Inquire about ( great !), This is a modified query . It also includes constraint names , Inherit information and data types decomposed into components ( type , length , precision , Decimal digit ). It also filters out deleted columns ( The database still exists ).
SELECT n.nspname as schema, c.relname as table, f.attname as column, f.attnum as column_id, f.attnotnull as not_null, f.attislocal not_inherited, f.attinhcount inheritance_count, pg_catalog.format_type(f.atttypid,f.atttypmod) AS data_type_full, t.typname AS data_type_name, CASE WHEN f.atttypmod >= 0 AND t.typname <> 'numeric'THEN (f.atttypmod - 4) --first 4 bytes are for storing actual length of data END AS data_type_length, CASE WHEN t.typname = 'numeric' THEN (((f.atttypmod - 4) >> 16) & 65535) END AS numeric_precision, CASE WHEN t.typname = 'numeric' THEN ((f.atttypmod - 4)& 65535 ) END AS numeric_scale, CASE WHEN p.contype = 'p' THEN 't' ELSE 'f' END AS is_primary_key, CASE WHEN p.contype = 'p' THEN p.conname END AS primary_key_name, CASE WHEN p.contype = 'u' THEN 't' ELSE 'f' END AS is_unique_key, CASE WHEN p.contype = 'u' THEN p.conname END AS unique_key_name, CASE WHEN p.contype = 'f' THEN 't' ELSE 'f' END AS is_foreign_key, CASE WHEN p.contype = 'f' THEN p.conname END AS foreignkey_name, CASE WHEN p.contype = 'f' THEN p.confkey END AS foreign_key_columnid, CASE WHEN p.contype = 'f' THEN g.relname END AS foreign_key_table, CASE WHEN p.contype = 'f' THEN p.conkey END AS foreign_key_local_column_id, CASE WHEN f.atthasdef = 't' THEN d.adsrc END AS default_valueFROM pg_attribute f JOIN pg_class c ON c.oid = f.attrelid JOIN pg_type t ON t.oid = f.atttypid LEFT JOIN pg_attrdef d ON d.adrelid = c.oid AND d.adnum = f.attnum LEFT JOIN pg_namespace n ON n.oid = c.relnamespace LEFT JOIN pg_constraint p ON p.conrelid = c.oid AND f.attnum = ANY (p.conkey) LEFT JOIN pg_class AS g ON p.confrelid = g.oid WHERE c.relkind = 'r'::char AND f.attisdropped = false AND n.nspname = '%s' -- Replace with Schema name AND c.relname = '%s' -- Replace with table name AND f.attnum > 0 ORDER BY f.attnum;
#19 floor
This should be the solution :
SELECT * FROM information_schema.columnsWHERE table_schema = 'your_schema' AND table_name = 'your_table'
边栏推荐
- Compréhension approfondie du symbole [langue C]
- Exclusive interview of open source summer | new committer Xie Qijun of Apache iotdb community
- 2021 CCPC Harbin I. power and zero (binary + thinking)
- 淘宝商品评价api接口(item_review-获得淘宝商品评论API接口),天猫商品评论API接口
- Drop down selection of Ehlib database records
- Jerry's ad series MIDI function description [chapter]
- Jerry's ad series MIDI function description [chapter]
- 创客思维在高等教育中的启迪作用
- 输入的查询SQL语句,是如何执行的?
- Sorting and sharing of selected papers, systems and applications related to the most comprehensive mixed expert (MOE) model in history
猜你喜欢
Interpreting the development of various intelligent organizations in maker Education
[ 每周译Go ] 《How to Code in Go》系列文章上线了!!
Lambdaquerywrapper usage
什么是商业智能(BI),就看这篇文章足够了
MongoDB聚合操作总结
超详细教程,一文入门Istio架构原理及实战应用
输入的查询SQL语句,是如何执行的?
How is the entered query SQL statement executed?
QT - double buffer plot
Methods of improving machine vision system
随机推荐
[early knowledge of activities] list of recent activities of livevideostack
【C语言】符号的深度理解
Go language loop statement (3 in Lesson 10)
Operation of adding material schedule in SolidWorks drawing
Delphi soap WebService server-side multiple soapdatamodules implement the same interface method, interface inheritance
VS2019 C# release下断点调试
Jerry's ad series MIDI function description [chapter]
Minidom module writes and parses XML
解读创客教育中的各类智能化组织发展
奋斗正当时,城链科技战略峰会广州站圆满召开
gtest从一无所知到熟练使用(3)什么是test suite和test case
如何使用ConcurrentLinkedQueue做一个缓存队列
Case sharing | integrated construction of data operation and maintenance in the financial industry
MP3是如何诞生的?
如何借助自动化工具落地DevOps
How was MP3 born?
2021 CCPC Harbin B. magical subsequence (thinking question)
Numpy vstack and column_ stack
How to implement Devops with automatic tools
【活动早知道】LiveVideoStack近期活动一览