\d 말고 쿼리로 날릴 수 있는 desc table명 과 같은 명령어가 뭐에요?
시스템 카타로그 정보를 이용하는 것을 배우는 가장 좋은 방법은 psql 사용할 때, -E 옵션을 사용하는 방법입니다.
[ioseph@bengi ioseph]$ psql -E mydb 비밀번호: 화면단위 보기 기능 끔(전체 자료 모두 보여줌) Welcome to psql 8.0.1, the PostgreSQL interactive terminal. 사용법: \copyright 저작권 정보 \h SQL 명령어 도움말 \? 내장 명령어 도움말 \g 또는 명령 끝에 ; 쿼리 실행 \q 마침 mydb=# \encoding uhc mydb=# \dt ********* QUERY ********** SELECT n.nspname as "스키마", c.relname as "이름", CASE c.relkind WHEN 'r' THEN '테이블' WHEN 'v' THEN '뷰(view)' WHEN 'i' THEN '인덱스' WHEN 'S' THEN '시퀀스' WHEN 's' THEN '특수' END as "형태", u.usename as "소유주" FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_user u ON u.usesysid = c.relowner LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 1,2; ************************** 릴레이션(relation) 목록 스키마 | 이름 | 형태 | 소유주 --------+---------+--------+---------- public | t | 테이블 | postgres public | zipcode | 테이블 | postgres (2건 있음) mydb=# \d zipcode ********* QUERY ********** SELECT c.oid, n.nspname, c.relname FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE pg_catalog.pg_table_is_visible(c.oid) AND c.relname ~ '^zipcode$' ORDER BY 2, 3; ************************** ********* QUERY ********** SELECT relhasindex, relkind, relchecks, reltriggers, relhasrules, relhasoids , reltablespace FROM pg_catalog.pg_class WHERE oid = '550929' ************************** ********* QUERY ********** SELECT a.attname, pg_catalog.format_type(a.atttypid, a.atttypmod), (SELECT substring(d.adsrc for 128) FROM pg_catalog.pg_attrdef d WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef), a.attnotnull, a.attnum FROM pg_catalog.pg_attribute a WHERE a.attrelid = '550929' AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum ************************** ********* QUERY ********** SELECT c2.relname, i.indisprimary, i.indisunique, i.indisclustered, pg_catalog.pg_get_indexdef(i.indexrelid, 0, true) FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i WHERE c.oid = '550929' AND c.oid = i.indrelid AND i.indexrelid = c2.oid ORDER BY i.indisprimary DESC, i.indisunique DESC, c2.relname ************************** ********* QUERY ********** SELECT c.relname FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhparent AND i.inhrelid = '550929' ORDER BY inhseqno ASC ************************** "public.zipcode" 테이블 필드명 | 형태 | 기타 조건 ---------+-----------------------+----------- zipcode | character(7) | sido | character varying(2) | gugun | character varying(7) | dong | character varying(12) | ri | character varying(19) | bunji | character varying(16) | seq | integer | 인덱스들: "zipcode_dong_i" btree (dong)
또 다른 한 방법으로 information_schema 스키마를 이용하는 방법도 있습니다.
이 스키마 안에 있는 모든 뷰는 SQL 표준을 따릅니다. psql 놈을 사용한다면,
select * form informa
이정도 쓰고, tab 글쇠를 누르면, 나머지 자동완성 기능을 이용할 수 있으니, 이놈을 이용해서, 원하는 정보를 찾아가는 방법도 좋은 방법일겝니다.
pgAdmin 놈을 사용한다면, 디스플레이 메뉴에서 시스템 객체를 보겠다고 설정해서 살펴보면 됩니다.
친절하신 답변 감사드립니다.