본문 바로가기

DB

MariaDB/MySQL 뷰(View)

뷰(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