MariaDB의 Views(뷰)는 데이터베이스 관리를 간소화하고 효율성을 높이기 위한 강력한 도구입니다. 이 가이드는 뷰의 기본 개념부터 활용 방법까지 설명합니다.
목차
1. 뷰(View)란 무엇인가?
뷰는 데이터베이스 테이블에서 실행된 SQL SELECT문의 결과를 저장하는 가상 테이블입니다. 물리적인 데이터를 저장하지 않고 실시간으로 데이터를 생성하므로 데이터의 일관성을 유지하면서 복잡한 SQL을 간소화할 수 있습니다.
2. 뷰를 사용해야 하는 이유
- 복잡한 SQL 간소화: 긴 SQL문을 뷰로 저장하면 코드 재사용성이 높아지고 유지 관리가 편리합니다.
- 데이터 접근 제한: 보안 요구 사항에 따라 특정 컬럼이나 행만을 노출할 수 있습니다.
- 데이터베이스 성능 최적화: 잘 설계된 뷰는 데이터 검색 및 분석에 필요한 시간과 리소스를 줄일 수 있습니다.
3. MariaDB에서 뷰 생성 및 활용
뷰 생성 기본 SQL
CREATE VIEW 뷰명 AS
SELECT 컬럼1, 컬럼2
FROM 테이블명
WHERE 조건;
실습: Employee 데이터베이스를 활용한 뷰 생성
MariaDB에서 직원 출퇴근 데이터를 관리하는 뷰를 생성해봅니다.
1. 직원 데이터 테이블 생성
CREATE TABLE Employees (
ID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
First_Name VARCHAR(25),
Last_Name VARCHAR(25),
Position VARCHAR(25),
PRIMARY KEY (ID)
);
2. 출퇴근 시간 테이블 생성
CREATE TABLE Hours (
ID TINYINT UNSIGNED NOT NULL,
Clock_In DATETIME NOT NULL,
Clock_Out DATETIME NOT NULL
);
3. 직원의 지각 및 조기 퇴근 데이터를 필터링하는 뷰 생성
CREATE SQL SECURITY INVOKER VIEW Employee_Tardiness AS
SELECT
Employees.First_Name,
Employees.Last_Name,
Hours.Clock_In,
Hours.Clock_Out,
TIMESTAMPDIFF(MINUTE, Hours.Clock_Out, Hours.Clock_In) AS Difference
FROM Employees
INNER JOIN Hours ON Employees.ID = Hours.ID
WHERE TIMESTAMPDIFF(MINUTE, Hours.Clock_Out, Hours.Clock_In) > -601;
뷰 활용
뷰를 통해 간단한 SELECT문으로 결과를 조회할 수 있습니다.
SELECT * FROM Employee_Tardiness;
4. 뷰의 추가적인 활용
데이터 접근 제한
뷰는 노출된 데이터를 제한하여 개인 정보를 보호할 수 있습니다. 예를 들어, 직원의 이름만 볼 수 있는 뷰를 생성할 수 있습니다.
CREATE VIEW Public_Employee_Info AS
SELECT First_Name, Last_Name
FROM Employees;
Row-Level Security
특정 조건에 따라 데이터 접근을 제한할 수 있습니다. 예를 들어, 부서장이 자신의 부서 직원만 조회하도록 설정 가능합니다.
데이터베이스 성능 최적화
뷰를 사용하여 인덱스를 강제로 활용하거나 복잡한 조인을 미리 처리하여 성능을 개선할 수 있습니다.
테이블 추상화
기존 테이블 구조 변경 시, 뷰를 통해 기존 애플리케이션과의 호환성을 유지할 수 있습니다.
MariaDB의 뷰는 복잡한 SQL 관리, 데이터 보안 강화, 성능 최적화 등 다양한 이점을 제공합니다. 이를 활용하면 데이터베이스 작업의 효율성을 크게 높일 수 있습니다.
'MySQL MariaDB > DB,Table 정보' 카테고리의 다른 글
MariaDB 원격 클라이언트 접속 설정 가이드 (0) | 2024.11.09 |
---|---|
MySQL과 MariaDB의 차이점과 선택 기준 총정리 (라이선스, 성능, 보안, 장점, 차이점,,) (0) | 2024.11.07 |
MySQL / MariaDB Table count 개수 조회 (0) | 2021.09.10 |
MySQL / MariaDB DB 사용 용량 확인. (0) | 2021.09.09 |
MySQL / MariaDB 테이블, 컬럼 & key 정보 한번에 조회 (0) | 2021.08.25 |
MySQL / MariaDB 해당 테이블의 컬럼(Key)을 참조하고 있는 테이블 & 컬럼 정보. (0) | 2021.08.13 |
MySQL / MariaDB foreign key _참조된 table, columns 조회 (0) | 2021.08.13 |
MySQL / MariaDB foreign key :제약 조건 조회 (0) | 2021.08.13 |
댓글