ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 베이스 _ 뷰(view)
    SQL/sql 문법(mysql, mariaDB) 2024. 5. 13. 09:31

    ▤ 목차

      ✔ 뷰(view)

      뷰(view)란 데이터 베이스에 존재하는 가상의 테이블을 말한다. 뷰를 이용해서 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 저장하고 있지 않는다.

      ✨장점

      • 보안 강화 ) 특정 사용자에게 테이블 전체가 아닌 필요한 자료만 보여줄 수 있다.
      • 복잡한 쿼리를 단순화해서 사용할 수 있다.
      • 독립성 확보) 사용한 쿼리를 재사용할 수 있다.
      • 논리적 테이블을 만들기때문에 메모리 절감 효과가 있다.

      ✨ 단점

      • 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가진다
      • 자신만의 인덱스를 가질 수 없다.

      ⌨ 형식

      CREATE [or REPLACE] VIEW [view_name] AS SELECT문;
      DROP VIEW view_name;

       

      ⌨ 테이블 변경 덮어쓰기 : OR REPLACE

      이 명령어를 사용하면 테이블 변경사항을 덮어써준다.

       

      (OR REPLACE 없는 테이블)

      create VIEW v_b AS
      select * FROM jikwon WHERE jikwon_name LIKE'김%' OR
      jikwon_name LIKE '박%';

       

      v_b라는 이름의 뷰테이블을 생성한다. 해당 테이블은 김 혹은 박으로 시작하는 직원만 존재한다.

      ALTER TABLE jikwon RENAME sbs;

      테이블 이름을 sbs로 변경해보자.

      이후 다시 v_b를 조회해보자.

      SELECT * FROM v_b;

      오류가 뜬다. 다시 이름을 바꿔보자.

      ALTER TABLE sbs RENAME jikwon;
      SELECT * FROM v_b;

      잘 작동하는 것을 알 수 있다.

       

      💻 뷰 테이블 확인하기

      SHOW FULL TABLES IN mydb WHERE TABLE_TYPE LIKE 'view';

      원하는 데이터베이스에 뷰 테이블을 확인 할 수 있는 쿼리이다.

       

      이렇게 해당 테이블의 타입을 확인할 수 있다.

       

      ⌨ 조건이 걸린 데이터만 ram에 가지고 온다.

      CREATE VIEW v_c AS SELECT * FROM jikwon ORDER BY jikwon_pay DESC;
      SELECT * FROM v_c;

      원하는데로 정렬된 뷰를 만들 수 있다.

       


      v_d 테이블

      CREATE VIEW v_d AS SELECT jikwon_no AS 번호,jikwon_name 이름,jikwon_pay * 10000 AS 연봉
      FROM jikwon ORDER BY jikwon_pay DESC;

      칼럼에 별명을 주고 뷰를 만들어줬다. 뷰 테이블을 사용하는 user는 칼럼명을 별명으로 사용해야한다.

       

       

      SELECT jikwon_no, jikwon_name FROM v_d; -- err

      이렇게 직접적으로 칼럼명을 적을 수 없다.

      뷰를 생성했을 때 별칭으로 정한 이름이 뷰 칼럼으로 나타나는 것을 확인 할 수 있다. 

      SELECT 번호, 이름 FROM v_d;

      내 ram 공간에는 뷰테이블 (select로 요청한 테이블)만 있다.

       

       

      💻 뷰 테이블로 뷰만들기

      CREATE VIEW v_e AS SELECT * FROM v_d WHERE 연봉 >= 78000000;
      
      SELECT * FROM v_e;

       

      👏 중요

      뷰는 마치 실제 테이블처럼 사용된다.

      뷰로 새로운 뷰 테이블이 만들어 진다.

       

      😊정리

      가상 테이블이다.

      기본 테이블은 물리적인 테이블로 디스크에 공간이 할당되어 데이터를 저장한다.

      뷰는 데이터 딕셔너리 테이블에 뷰에 대한 SQL문만 저장되어 저장 공간 할당이 이뤄지지 않는다.

      전체 데이터 중 일부만 접근할 수있도록 한다. (보안적으로 유리하다.)

      - 사용자마다 특정 데이터만 조회할 수 있도록 권한 제한을 둘 수 있다.

      뷰를 정의한 기본 테이블에서 정의된 무결성 제약 조건은 그대로 유지된다. 

    Designed by Tistory.