동의어와 별칭 간의 차이

Anonim

동의어 vs 별칭 (ORACLE 데이터베이스) | 비공개 동의어 및 공용 동의어

영어의 동의어 및 별칭은 거의 동일한 의미를 갖습니다. 그러나 데이터베이스에서 그것들은 두 가지 다른 것들입니다. 특히 ORACLE 데이터베이스의 경우 두 가지 용도가 다릅니다. 동의어는 다른 스키마에서 스키마 나 데이터베이스의 객체를 참조하는 데 사용됩니다. 따라서 동의어는 데이터베이스 객체 유형입니다. 그러나 별칭은 다른 방식으로 나타납니다. 그 의미는; 그것들은 데이터베이스 객체가 아닙니다. 별칭은 쿼리 내에서 테이블, 뷰 및 열을 참조하는 데 사용됩니다.

동의어

이것은 데이터베이스 객체 유형입니다. 데이터베이스의 다른 오브젝트를 참조합니다. 동의어의 가장 일반적인 사용법은 다른 이름을 사용하여 별도의 스키마 개체를 참조하는 것입니다. 그러나 다른 데이터베이스의 오브젝트를 참조하기 위해 동의어를 작성할 수도 있습니다 (분산 데이터베이스에서 데이터베이스 링크 사용). 테이블, 뷰, 함수, 프로 시저, 패키지, 시퀀스, 구체화 된 뷰, Java 클래스 객체 및 트리거는 동의어에 대한 참조로 사용될 수 있습니다. 동의어에는 두 가지 유형이 있습니다.

(999) 공개 동의어 (적절한 특권을 가진 모든 사용자가 사용할 수 있음)
  1. 여기에 간단한 구문을 사용하여 별도의 데이터베이스에 동의어를 작성하고
  2. 동의어 myschema를 작성하십시오. userA에 대한 mytable1. table1 @ database_link1

userA의

myschema 에는 mytable1 라는 동의어가 있으므로 table1 @ database_link1 (분산 데이터베이스 테이블) , mytable1을 사용하여 분산 데이터베이스 테이블을 쉽게 참조 할 수 있습니다. 우리는 모든 곳에 데이터베이스 링크가있는 긴 객체 이름을 사용할 필요가 없습니다.

별칭

이들은보기, 표 또는 쿼리 내의 열에 대한 또 다른 이름입니다. 그것들은 데이터베이스 객체가 아닙니다. 따라서 별칭은 스키마 / 데이터베이스의 모든 곳에서 유효하지 않습니다. 이들은 조회 내에서만 유효합니다. 이 예제를 보자.

select tab1. col1을 c1, tab2로 지정하십시오. col2는 user1의 c2

와 같습니다. tab1 tab1, user1. tab2 tab2

여기서 tab1. col1 = tab2. col2

여기에서 c1과 c2는 tab1에 사용되는 열 별칭입니다. col1 및 tab2. col2이고 tab1과 tab2는 user1에 사용되는 테이블 별칭입니다. table1 및 user2. table2. 이 별칭은 모두이 쿼리 내에서만 유효합니다.

동의어와 별칭

(ORACLE 데이터베이스)

의 차이점은 무엇입니까? 동의어는 데이터베이스 개체 유형입니다. 그러나 별칭은 쿼리 내에서 테이블, 뷰 또는 열을 참조하기위한 이름 일뿐입니다. 데이터베이스 객체가 아닙니다. 테이블, 뷰, 함수, 프로 시저, 패키지, 시퀀스, 구체화 된 뷰, Java 클래스 객체 유형 및 트리거에 대해 동의어를 만들 수 있습니다. 그러나 별칭은 뷰, 테이블 및 해당 열에 만 사용됩니다.동의어는 데이터베이스 객체이기 때문에 스키마 (사적 동의어) 또는 데이터베이스 (공개 동의어) 내에서 유효합니다. 그러나 별칭은 쿼리가 사용되는 곳에서 유효합니다.