@ Synonym 이란?
: 다른 유저도 자신의 테이블을 Synonym으로 지정한 이름으로 사용할 수 있게 해주는 기능
grant로 다른유저에게 테이블 사용권한을 준다고 하더라도 그 유저는 유저명.테이블명 이런식으로 자신의
테이블에 접근해야한다. 이런 번거로움을 피하기위해 Synonym으로 선언하면 다른 유저도 자신의 테이블에
쉽게 접근 가능하다.

Create [private or public] Synonym 원하는명칭 for 유저명.테이블명

* private synonym : 특정 스키마(schema)에서 생성되고 단지 그것을 갖는 스키마에 의해 접근할 수 있음.
* public synonym : public schema에 의해 소유되고 데이터베이스내의 모든 schema가 참조할 수 있음.

디폴트는 private synonym이다.


Synonym의 조회
* all_synonyms : 모든 synonym 정보
* user_synonyms : 사용자가 만든 synonym 정보

 Synonym의 삭제

Drop [private or public] Synonym 지정한Synonym명


@ in 조건절 작성~~

만약 이런 쿼리문이 있다고 가정하자

select * from emp where dept='30' or dept='40' dept='50' or dept='60'

 이 쿼리문은 IN 조건절을 이용해서 간단히 표현할 수 있다.

select * from emp where dept in ('30','40','50','60')

즉 공통되는 칼럼의 여러 조건들을 묶어서 한꺼번에 표현해 줄 수 있는 조건이라 할 수 있다.


@ UNION 

다음 지식에서 퍼옴.

아래와 같은 두 개의 테이블이 있다고 가정합니다.

 TABLE_A                        TABLE_B

-----------------                  -----------------

FLD1                               FLD1

-----------------                  -----------------

1                                       5

2                                       3

3                                       1

-----------------                  ----------------- 

이 때...

SELECT FLD1 FROM TABLE_A

UNION ALL

SELECT FLD1 FROM TABLE_B

 

하면 결과는 

-----------------

FLD1

-----------------

1

2

3

5

3

1

-----------------

이 됩니다. 두 쿼리의 결과를 단순히 합친 것이죠.

그런데

SELECT FLD1 FROM TABLE_A

UNION

SELECT FLD1 FROM TABLE_B

하면 결과는

-----------------

FLD1

-----------------

1

2

3

5

-----------------

이 됩니다. 두 테이블의 결과를 합치되, 중복된 값을 제외하죠.

이렇게 중복을 제거하기 위해 불가피하게 '소트'를 하게 됩니다.

따라서 자료가 많거나 Index가 되어 있지 않은 필드를 대상으로 하게 되면

쿼리 시간이 길어질 수 있습니다.

Posted by Taoist
,