[SQL] 쿼리 테이블의 외래 키 관계
SQL쿼리 테이블의 외래 키 관계
주어진 테이블 'foo는', 나는 지점이 foo는 외국 키가 테이블 세트를 생성하는 쿼리를해야합니다. 나는 오라클 10G를 사용하고 있습니다.
해결법
-
==============================
1.이 작업 (또는 뭔가 닫기)한다 :
이 작업 (또는 뭔가 닫기)한다 :
select table_name from all_constraints where constraint_type='R' and r_constraint_name in (select constraint_name from all_constraints where constraint_type in ('P','U') and table_name='<your table here>');
-
==============================
2.다음 문은 자녀와 후손을 모두 제공해야합니다. 나는 오라클 (10) 데이터베이스를 테스트했습니다.
다음 문은 자녀와 후손을 모두 제공해야합니다. 나는 오라클 (10) 데이터베이스를 테스트했습니다.
SELECT level, main.table_name parent, link.table_name child FROM user_constraints main, user_constraints link WHERE main.constraint_type IN ('P', 'U') AND link.r_constraint_name = main.constraint_name START WITH main.table_name LIKE UPPER('&&table_name') CONNECT BY main.table_name = PRIOR link.table_name ORDER BY level, main.table_name, link.table_name
-
==============================
3.다음은 제약 조건 이름에서 열 이름을 얻기 위해 더 마이크의 쿼리 하나의 조치를 취할 방법은 다음과 같습니다
다음은 제약 조건 이름에서 열 이름을 얻기 위해 더 마이크의 쿼리 하나의 조치를 취할 방법은 다음과 같습니다
select * from user_cons_columns where constraint_name in ( select constraint_name from all_constraints where constraint_type='R' and r_constraint_name in (select constraint_name from all_constraints where constraint_type in ('P','U') and table_name='<your table name here>'));
-
==============================
4.오라클 데이터베이스 온라인 문서 링크
오라클 데이터베이스 온라인 문서 링크
당신은 데이터 사전 뷰를 탐색 할 수 있습니다. 그들은 접두사가 :
견본:
select * from dictionary where table_name like 'ALL%'
마이크의 예를 계속, 당신은 / 비활성화 제약을 가능하게하는 스크립트를 생성 할 수 있습니다. 난 단지 첫 번째 행에서 '선택'수정했습니다.
select 'alter table ' || TABLE_NAME || ' disable constraint ' || CONSTRAINT_NAME || ';' from all_constraints where constraint_type='R' and r_constraint_name in (select constraint_name from all_constraints where constraint_type in ('P','U') and table_name='<your table here>');
-
==============================
5.나는 위의 매우 따라서 여기에 복잡 답변 중 일부는 훨씬 간단 걸릴 것입니다, 늦은 대답을 좀 알고하지만 나를 어쨌든 대답 할 수 있습니다.
나는 위의 매우 따라서 여기에 복잡 답변 중 일부는 훨씬 간단 걸릴 것입니다, 늦은 대답을 좀 알고하지만 나를 어쨌든 대답 할 수 있습니다.
`SELECT a.table_name child_table, a.column_name child_column, a.constraint_name, b.table_name parent_table, b.column_name parent_column FROM all_cons_columns a JOIN all_constraints c ON a.owner = c.owner AND a.constraint_name = c.constraint_name join all_cons_columns b on c.owner = b.owner and c.r_constraint_name = b.constraint_name WHERE c.constraint_type = 'R' AND a.table_name = 'your table name'`
-
==============================
6.
select distinct table_name, constraint_name, column_name, r_table_name, position, constraint_type from ( SELECT uc.table_name, uc.constraint_name, cols.column_name, (select table_name from user_constraints where constraint_name = uc.r_constraint_name) r_table_name, (select column_name from user_cons_columns where constraint_name = uc.r_constraint_name and position = cols.position) r_column_name, cols.position, uc.constraint_type FROM user_constraints uc inner join user_cons_columns cols on uc.constraint_name = cols.constraint_name where constraint_type != 'C' ) start with table_name = '&&tableName' and column_name = '&&columnName' connect by nocycle prior table_name = r_table_name and prior column_name = r_column_name;
-
==============================
7.데이터 사전 테이블을 설명 10G에 대한 Oracle 참조 안내서를 다운로드합니다.
데이터 사전 테이블을 설명 10G에 대한 Oracle 참조 안내서를 다운로드합니다.
위의 대답은 잘하지만 제약 관련 될 수있는 다른 테이블을 확인하십시오.
SELECT * FROM DICT WHERE TABLE_NAME LIKE '%CONS%';
마지막으로, 당신은 UI에서이 물건을 검색 할 수 있습니다 두꺼비 또는 SQL 개발자와 같은 도구를 얻을, 당신은 테이블을 사용하는 방법을 배우게 할 필요가 있지만, 당신은 또한 UI를 사용해야합니다.
-
==============================
8.
select acc.table_name, acc.constraint_name from all_cons_columns acc inner join all_constraints ac on acc.constraint_name = ac.constraint_name where ac.r_constraint_name in ( select constraint_name from all_constraints where table_name='yourTable' );
-
==============================
9.하나 개의 테이블에 대한 모든 제약 조건
하나 개의 테이블에 대한 모든 제약 조건
select uc.OWNER, uc.constraint_name as TableConstraint1, uc.r_constraint_name as TableConstraint2, uc.constraint_type as constrainttype1, us.constraint_type as constrainttype2, uc.table_name as Table1,us.table_name as Table2, ucc.column_name as TableColumn1, uccs.column_name as TableColumn2 from user_constraints uc left outer join user_constraints us on uc.r_constraint_name = us.constraint_name left outer join USER_CONS_COLUMNS ucc on ucc.constraint_name = uc.constraint_name left outer join USER_CONS_COLUMNS uccs on uccs.constraint_name = us.constraint_name where uc.OWNER ='xxxx' and uc.table_name='xxxx'
from https://stackoverflow.com/questions/85978/query-a-tables-foreign-key-relationships by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 2005 SQL Server에서 열로 임의의 숫자를 반환합니까? (0) | 2020.06.07 |
---|---|
[SQL] "DELETE CASCADE ON"MS SQL은 여러 외부 키는 동일한 테이블을 가리키는? (0) | 2020.06.07 |
[SQL] SQL Server 데이터베이스에서 스크립트의 모든 데이터 (0) | 2020.06.06 |
[SQL] 넓은 키가 큰 MySQL의 긴에서 모양 변경 데이터 / (0) | 2020.06.06 |
[SQL] 어떻게 C #을에서 날짜가 제대로 SQL로 전달하는 방법? (0) | 2020.06.06 |