2011-05-12 2 views
1

현재 인위적으로 작성된 SQL 문에 대해 생각하고 있으며 문에서 각 특성에 대한 기본 테이블을 알고 싶습니다. 그러나 테이블 정의없이 기본 테이블을 판별 할 수없는 명령문이 있습니다. 오라클 SQL 문에 대한 나의 생각을 적용 할 것이기 때문에 내가 작성한 모든 문장이 실제로 유효한 Oracle SQL인지 알고 싶습니다. 다른 기본 테이블Oracle SQL 구문 : 열 기반

2)

select a from table t 

A가 다른 없기 때문에, 테이블에 속하는 속성이 존재하지 않는 것처럼

1)

select a from table 

는 표 속하는 속성 베이스 테이블

3)

select t.a from table t 

속성 a는 접두어에 따라 테이블에 속합니다.

4)

select a from table1, table2 

속성이 중 표 1 또는 표 2에 속하는, 우리는 두 표에 속하는

5)

select a from table1 t1, table2 

속성 테이블 정의없이 말할 수 없다 또는 table2, 우리는 테이블 정의없이 말할 수 없다

6)

select a from (select * from table t) s 

속성 a는 from 절의 subselect가 테이블 만 포함하므로 테이블에 속합니다. 표 1과 표 2 모두가 그 이후가 모호 할 것이다라는 이름의 컬럼을 포함하는 경우

최저

, 윌

+2

SQL 초보자를 위해 : 쿼리에 테이블이 하나만있는 경우를 제외하고는 필드 이름 앞에 항상 테이블 이름을 붙이거나 그 별칭을 지정해야합니다. –

답변

2

모두 유효해야하지만, 4, 5는 유효하지 않을 수 있습니다.

2

매우 완료되지

select a from table 

"A"사용자 정의 함수가 아닌 테이블 열 (또는 함수의 동의어)이 될 수 있습니다. 의사 - 컬럼 (ROWNUM, LEVEL과 같은)과 SYSDATE와 같은 것들도 내장되어 있습니다.

또한 명령문이 PL/SQL에있는 경우 "A"는 PL/SQL 프로그램 장치의 로컬 변수 일 수도 있습니다.

select t.a from table t 

우선 순위 규칙은 reading입니다. "T.A"는 함수 "A"가있는 pl/sql 패키지 "T"를 참조하거나 함수 "A"가있는 스키마 "T"를 참조 할 수 있습니다.

"sequence_name"에도 유의하십시오.nextval "을 또 다른 특수한 경우로 사용