사용자 테이블 이름을 기본 키 이름으로 두 번째 열로 어떻게 나열 할 수 있습니까?테이블의 기본 키 이름 가져 오기
나는 절반의 일을하고 있지만 더 할 일이 무엇인지 알지 못합니다.
select table_name from user_tables ORDER BY (table_name) ASC
어떻게 알 수 있습니까?
는사용자 테이블 이름을 기본 키 이름으로 두 번째 열로 어떻게 나열 할 수 있습니까?테이블의 기본 키 이름 가져 오기
나는 절반의 일을하고 있지만 더 할 일이 무엇인지 알지 못합니다.
select table_name from user_tables ORDER BY (table_name) ASC
어떻게 알 수 있습니까?
는이 간단한 쿼리는 PK 제약 조건 이름 (그러나 열 이름)와 함께 당신에게 테이블의 목록을 제공합니다! 우리는 때문에 수집() 집계 함수의 첫번째 유틸리티 유형을 작성해야합니다
create type ty_varchar_nt as table of varchar2(4000);
select ut.table_name, uc.constraint_name, cast(collect (uic.column_name) as ty_varchar_nt) as pk_cols
from user_tables ut
left join user_constraints uc
on ut.table_name = uc.table_name
and uc.constraint_type = 'P'
left join user_ind_columns uic
on uc.index_name = uic.index_name
group by ut.table_name, uc.constraint_name;
당신이 중첩 된 탭의 서식을 좋아하지 않는 경우에, 당신은 입력으로 NT 걸릴 것 유틸리티 기능을 쓸 수 있습니다 쉼표로 구분 된 연결 문자열을 출력으로 제공합니다.
시도에 합류 USER_TABLES와 USER_CONSTRAINTS 주셔서 감사합니다.
에서 USER_CONSTRAINTS 필터은 'P'(기본 키)에 동일 CONSTRAINT_TYPE 모든 행. 여기서 index_name 및 index_owner 값을 USER_INDEXES과 결합 할 수 있으며 PRIMARY KEY에서 열 이름을 가져옵니다.
나는이 일을하는 더 쉬운 방법을 알고 싶다 ...하지만 나는 그렇지 않다.
행운을 빈다. 당신이 열 이름을 원하는 경우
select ut.table_name, uc.constraint_name
from user_tables ut
left join user_constraints uc
on ut.table_name = uc.table_name
and uc.constraint_type = 'P';
가하는 PK가 여러 열을 가질 수 있음을 기억
는 다음과 같은 쿼리
SELECT cols.table_name, cols.column_name, cols.position, cons.status, cons.owner
FROM all_constraints cons, all_cons_columns cols
WHERE cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position;
을 사용할 수 있습니다) 당신이 "사용자 테이블 이름"무엇을 의미합니까, 그냥 나 자신을 할 수있는 시간이 없어? – rogeriopvl
특정 사용자가 작성한 테이블의 이름입니다 (Oracle 사용자와 스키마를 생성하기 위해 Oracle과 함께 작업하고 있습니다). – Sheldon