1. 뷰(view)
- SELECT의 결과로 만들어지는 가상의 테이블
- 쿼리 단순화 가능
- 모든 데이터를 보여줄 필요가 없어짐
# 뷰 생성
USE VIEW 뷰이름 AS SELECT 문;
# 뷰 삭제
DROP VIEW 뷰이름;
2. 뷰에 대한 작업 제한
- 조회는 제한이 없을지 모르나 삽입, 수정, 삭제 등은 안될 '수도' 있다.
- 예제
CREATE DATABASE IF NOT EXISTS example;
USE example;
CREATE TABLE IF NOT EXISTS users(
id INT AUTO_INCREMENT PRIMARY KEY,
person VARCHAR(255) NOT NULL,
age INT,
city VARCHAR(255),
email VARCHAR(255) NOT NULL
);
INSERT INTO users (person, age, city, email) VALUES
('John', 25, 'New York', 'john@example.com'),
('Alice', 30, 'Los Angeles', 'alice@example.com'),
('Bob', 28, 'Chicago', 'bob@example.com'),
('Eve', 35, 'San Francisco', 'eve@example.com'),
('Charlie', 22, 'Houston', 'charlie@example.com');
SELECT * FROM users;
CREATE VIEW example_view
AS SELECT id, person, age, email FROM users WHERE age >= 28;
SELECT * FROM example_view;
-- 뷰를 대상으로 데이터 삽입
INSERT INTO example_view (person, age, email) VALUES ('Frank', 40, 'frank@example.com');
-- 불가능
INSERT INTO example_view (person, city) VALUES (40, 'Miami');
-- 뷰를 대상으로 데이터 업데이트
UPDATE example_view SET person = 'UpdatedName' WHERE id = 2;
-- 뷰를 대상으로 데이터 삭제
DELETE FROM example_view WHERE id = 3;
-- 뷰 삭제
DROP VIEW example_view;
-- 집계함수를 이용한 view
CREATE VIEW age_average_view AS
SELECT AVG(age) AS average_age
FROM users;
-- 삽입, 삭제, 수정 불가능
SELECT * FROM age_average_view;
SELECT city, COUNT(person) AS population
FROM users
GROUP BY city;
'데이터베이스' 카테고리의 다른 글
12. NoSQL - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.01.20 |
---|---|
11. 효율적 쿼리_JOIN - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.20 |
9. 효율적 쿼리_인덱스 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.19 |
8. 데이터 삭제_DELETE - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.19 |
7. 데이터 수정_UPDATE - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.19 |