Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

SQL 테이블 vs 뷰(View) vs 동의어(Synonym): 차이점과 활용법 완벽 정리

구조화 질의 언어(SQL)에서 테이블(Table), 뷰(View), 동의어(Synonym)가 각각 무엇인지, 어떤 차이가 있는지 자세히 알아보겠습니다.

테이블, 뷰, 동의어란?

테이블(Table)은 데이터를 저장하는 저장소입니다. 테이블은 물리적 엔티티로서 데이터베이스 내부에 실제로 존재합니다.

뷰(View)는 데이터베이스의 물리적 표현에는 포함되지 않는 가상 객체입니다. 미리 컴파일(precompile)되어 있기 때문에 데이터 조회 속도가 빠르고, 안전한 접근 제어 메커니즘을 제공한다는 장점이 있습니다.

동의어(Synonym)는 테이블, 뷰, 시퀀스(sequence) 또는 프로그램 단위에 부여하는 대체 이름입니다.

예제 시나리오

먼저 다음과 같이 직원(employee) 테이블을 생성해 보겠습니다.

create table employee (
  empID integer primary key,
  name varchar2(30),
  skill varchar2(30),
  salary number(20),
  DOB datetime
);

특정 사용자 그룹에게 급여 정보를 보여주고 싶지 않은 상황을 가정해 볼 수 있습니다. 이런 경우 허용 가능한 정보만 노출하는 뷰를 생성하면 됩니다.

create view emp_some_details as
(select empID, name, skill, DOB from employee);

실습 프로그램

위 예제를 바탕으로 SQL에서 테이블과 뷰를 생성하고 조회하는 전체 과정은 다음과 같습니다.

create table employee (empID integer primary key, name varchar2(30), skill varchar2(30), salary number(20), DOB datetime);
insert into employee values(100,'AAA','JAVA',30000,2020-08-20);
insert into employee values(101,'BBB','PHP',35000,2020-07-02);
select * from employee;

create view [salary_hide] as select empID,name,skill,DOB from employee;
select * from salary_hide;

실행 결과

100|AAA|JAVA|30000|1992
101|BBB|PHP|35000|2011
100|AAA|JAVA|1992
101|BBB|PHP|2011

전체 테이블을 조회했을 때와 달리, 뷰를 통해 조회하면 급여(salary) 열이 제외된 것을 확인할 수 있습니다.

뷰 사용의 장점

  • 하나의 테이블, 여러 개의 테이블, 뷰, 여러 개의 뷰 또는 이들을 조합한 대상에서 데이터를 가져올 수 있습니다.

  • 뷰는 항상 기반(base) 테이블의 데이터와 연결되어 있어 최신 상태를 반영합니다.

  • 안전하고 통제된 데이터 접근 방식을 제공하여 민감한 정보를 숨길 수 있습니다.

뷰 수정하기

기존 뷰를 변경하려면 CREATE OR REPLACE VIEW 문을 사용합니다.

CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

뷰 삭제하기

뷰를 삭제할 때는 DROP VIEW 명령어를 사용합니다.

DROP VIEW view_name;

동의어(Synonym)의 역할

동의어는 테이블이나 뷰에 부여하는 대체 이름으로, 실제 객체의 원래 이름과 소유자(owner)를 감추는 데 활용할 수 있습니다. 또한 공개(public) 동의어를 만들면 더 많은 사용자가 해당 객체에 접근할 수 있어 테이블의 활용 범위를 넓히는 효과도 있습니다.