빅데이터/SQL

동의어 SYNONYM

예캉 2018. 1. 4. 10:02

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- 대표적인 동의어
SELECT 
FROM all_objects;
 
DESC user_objects; -- data dictionary view 내가 가진 객체를 보여주는 뷰
    -- all 은 내가 가지진 않았지만 볼 수 있는 객체를 보여주는 뷰
    -- dba는 없다고 뜬다. 왜냐하면 dba를 볼 수 있는건 dba나 sys정도 되야하기 때문이다.
    -- 참고 레퍼런스 : https://docs.oracle.com/cloud/latest/db112/REFRN/statviews_1158.htm#REFRN20146
SELECT * FROM user_objects;
 
DESC user_tables; -- 주로 복수형이다.
    --USER_TABLES describes the relational tables owned by the current user. This view does not display the OWNER column.
SELECT * FROM user_tables; -- 사실 얘 자체(user_tables)도 동의어다.
SELECT * FROM tabs; -- user_tables의 synonym
 
SELECT owner, object_name,object_type
FROM all_objects
WHERE object_name = 'DUAL';
-- 우리가 쓰는 실체는 owner sys의 테이블인데
-- synonym이 없었다면 sys.dual을 사용했어야 했음. -> public dual을 쓰고 있다!!
cs


* 동의어 : 객체에 다른 이름을 부여한다. 다른 이름으로 테이블을 호출할 수 있는 데이터베이스 

- 다른 유저가 소유한 테이블을 쉽게 참조할 수 있다 ( sys.dual -> dual)

- 내가 소유한 긴 객체 이름을 짧게 만들 수 있다.

- [PUBLIC] 유무로 다른계정에서도 SYNONYM 쓸 수 있는지 결정할 수 있다. default는 private이다.