뷰(View) 소개
뷰는 데이터베이스에서 테이블과 유사한 결과를 생성하는 쿼리의 가상 테이블입니다.
뷰를 사용하면 보안상 중요한 정보를 숨길 수 있고, 간단하고 사용하기 쉬운 형태의 데이터를 얻을 수 있습니다.
형식
-- 뷰 생성 예시
CREATE VIEW view_table AS
SELECT column1, column2, ...
FROM your_query;
예제
MariaDB [haksa]> SELECT st.hakbun, st.name, k.kwamok_name, a.jumsu
-> FROM sungjuk AS a
-> INNER JOIN st ON a.hakbun = st.hakbun
-> INNER JOIN kwamok AS k ON a.kwamok_code = k.kwamok_code
-> WHERE a.jumsu >= 90;
+---------+-----------+-------------+-------+
| hakbun | name | kwamok_name | jumsu |
+---------+-----------+-------------+-------+
| 2023001 | 김영희 | korean | 90 |
| 2023003 | 장나라 | korean | 90 |
| 2023005 | 이효리 | korean | 90 |
| 2023010 | 화요비 | korean | 90 |
| 2023003 | 장나라 | english | 95 |
| 2023004 | 임재범 | english | 90 |
| 2023003 | 장나라 | math | 95 |
| 2023001 | 김영희 | java | 95 |
| 2023005 | 이효리 | java | 90 |
| 2023010 | 화요비 | php | 90 |
+---------+-----------+-------------+-------+
10 rows in set (0.001 sec)
MariaDB [haksa]> create view v_sungjuk
-> as
-> select st.hakbun,st.name,k.kwamok_name,s.jumsu
-> from sungjuk as s inner join st on s.hakbun = st.hakbun inner join kwamok as k on s.kwamok_code = k.kwamok_code;
Query OK, 0 rows affected (0.003 sec)
MariaDB [haksa]> select * from v_sungjuk;
+---------+-----------+-------------+-------+
| hakbun | name | kwamok_name | jumsu |
+---------+-----------+-------------+-------+
| 2023001 | 김영희 | korean | 90 |
| 2023003 | 장나라 | korean | 90 |
| 2023004 | 임재범 | korean | 60 |
| 2023005 | 이효리 | korean | 90 |
| 2023010 | 화요비 | korean | 90 |
| 2023001 | 김영희 | english | 80 |
| 2023003 | 장나라 | english | 95 |
| 2023004 | 임재범 | english | 90 |
| 2023005 | 이효리 | english | 70 |
| 2023010 | 화요비 | english | 80 |
| 2023003 | 장나라 | math | 95 |
| 2023004 | 임재범 | math | 80 |
| 2023001 | 김영희 | java | 95 |
| 2023005 | 이효리 | java | 90 |
| 2023010 | 화요비 | php | 90 |
+---------+-----------+-------------+-------+
15 rows in set (0.001 sec)
MariaDB [haksa]> select * from v_sungjuk
-> where jumsu >= 80;
+---------+-----------+-------------+-------+
| hakbun | name | kwamok_name | jumsu |
+---------+-----------+-------------+-------+
| 2023001 | 김영희 | korean | 90 |
| 2023003 | 장나라 | korean | 90 |
| 2023005 | 이효리 | korean | 90 |
| 2023010 | 화요비 | korean | 90 |
| 2023001 | 김영희 | english | 80 |
| 2023003 | 장나라 | english | 95 |
| 2023004 | 임재범 | english | 90 |
| 2023010 | 화요비 | english | 80 |
| 2023003 | 장나라 | math | 95 |
| 2023004 | 임재범 | math | 80 |
| 2023001 | 김영희 | java | 95 |
| 2023005 | 이효리 | java | 90 |
| 2023010 | 화요비 | php | 90 |
+---------+-----------+-------------+-------+
13 rows in set (0.001 sec)
MariaDB [haksa]> update sungjuk set jumsu=98
-> where hakbun='2023001';
Query OK, 3 rows affected (0.003 sec)
Rows matched: 3 Changed: 3 Warnings: 0
MariaDB [haksa]> show tables;
+-----------------+
| Tables_in_haksa |
+-----------------+
| kwamok |
| st |
| sungjuk |
| v_sungjuk |
+-----------------+
4 rows in set (0.000 sec)
MariaDB [haksa]> update v_sungjuk set jumsu='100'
-> where hakbun='2023010';
Query OK, 3 rows affected (0.002 sec)
Rows matched: 3 Changed: 3 Warnings: 0
MariaDB [haksa]> drop table v_sungjuk;
ERROR 1965 (42S02): 'haksa.v_sungjuk' is a view
MariaDB [haksa]> drop view v_sungjuk;
Query OK, 0 rows affected (0.000 sec)
'DB' 카테고리의 다른 글
| MySQL Transaction 설정 및 예제 (1) | 2024.02.02 |
|---|---|
| MariaDB/MySQL 뷰 백업/복원 가이드 (0) | 2024.02.02 |
| MySql 샘플 DB (0) | 2024.02.01 |
| Table 조인 (1) | 2024.02.01 |
| DB 생성과 정규화 (2) | 2024.01.31 |