👉 시노님(synonym)
- 동의어
- 다른 사용자의 객체 참조: 사용자.객체명
- 동으이를 생성하면 객체의 이름 앞에 스키마 이름을 명시할 필요가 없으며, 테이블, 뷰, 시퀀스, 프로시저 등 다른 객체에 대한 또 다른 이름 제공
- 뷰처럼 긴 이름을 가진 객체에 특히 유용하게 사용가능
- 사용자.객체명 처럼 접근하는 방법이 불편 => 이 문제를 해결 => 동의어
- dual은 SYS 객체이므로 sys.dual로 접근해야 하지만 dual로 접근 => 동의어
CREATE [PUBLIC] SYNONYM 시노님명 FOR 스키마명.객체명;
CREATE SYNONYM emp60 FOR emp_dept60;
SELECT * FROM syn;
DROP SYNONYM 테이블명;
DROP SYNONYM emp_dept60;
sky 계정에서 hr 계정의 employees 테이블을 SELECT해서 볼 수 있을까?
SELECT * FROM hr.employees; -- 에러: 테이블이 없다고 나옴. 권한이 없어서 나오는 에러
-- HR 계정에서 권한을 준 후 다시 해보면 테이블 확인 가능
HR 계정 : sky 계정에게 employees 테이블을 SELECT 할 수 있는 권한 부여
GRANT SELECT ON employees TO sky;
관리자(sys) 계정: sky 계정에 시노님 작성 권한 부여
GRANT CREATE SYNONYM TO sky;
sky 계정: hr 계정의 employees 테이블의 시노님 작성
SELECT * FROM hr.employees;
CREATE SYNONYM employees FOR hr.employees;
SELECT * FROM syn;
SELECT * FROM employees; -- hr.employees를 안하고도 볼 수 있다.