백엔드/DB

[MySQL] MySQL 뷰

tero1115 2023. 6. 12. 01:05
  • VIEW
    → 하나의 테이블에서 필요한 컬럼만 가져와서 하나의 테이블로 만들 수 있다
    → 여러개의 테이블에서 필요한 컬럼만 가져와서 하나의 테이블로 만들 수 있다(복합뷰)

    뷰 만들기 → 단순 뷰(Simple View)
    CREATE VIEW V_EMP1 -- 뷰 만들때 보통 언더바 섞어서 씀
    AS
    SELECT EMPNO
    , ENAME
    , HIREDATE
    FROM EMP;

     복합뷰(Complex View)
    CREATE VIEW V_EMP2
    AS
    select e.ENAME
    , d.DNAME
    from emp e, dept d
    WHERE e.DEPTNO = d.DEPTNO;

     인라인 뷰(Inline View)
    SELECT e.deptno
                 , d.DNAME
                 , E.SAL
        FROM( -- inline view(인라인 뷰)
    SELECT DEPTNO
                , MAX(SAL) SAL
       FROM emp
      GROUP BY DEPTNO
    ) e, dept d
    where e.deptno = d.deptno;
  • 학과별 가장 큰 키 학생들의 이름와 키 출력 (인라인뷰)
    student 테이블과 department 테이블을 사용하여 학과이름, 학과별 최대키, 학과별로 가장 키가 큰 학생들의 이름과 키를 Inline View를 사용하여 출력
SELECT D.DNAME
	 , A.MAX_HEIGHT
     , S.NAME
     , S.HEIGHT
  FROM (
	SELECT DEPTNO1
         , MAX(HEIGHT) MAX_HEIGHT
	  FROM STUDENT
	GROUP BY DEPTNO1
  ) A,STUDENT S, department D
  WHERE S.DEPTNO1 = A.DEPTNO1
    AND S.HEIGHT = A.MAX_HEIGHT
    AND S.DEPTNO1 = D.DEPTNO;

  • 학생 테이블에서 동일 학년의 평균키보다 큰 학생들 출력(인라인뷰)
    Studnet 테이블에서 학생의 키가 동일 학년의 평균 키보다 큰 학생들의 학년과 이름과 키, 해당 학년의 평균 키를 출력하되 Inline View 를 사용해서 아래와 같이 출력하세요.(학년 컬럼으로 오름차순 정렬해서 출력하세요)
SELECT S.GRADE
	 , S.NAME
     , S.HEIGHT
     , A.AVG_HEIGHT
  FROM(
	SELECT AVG(HEIGHT) AVG_HEIGHT
         , GRADE
	  FROM STUDENT
      GROUP BY GRADE
  )A, STUDENT S
  WHERE S.GRADE = A.GRADE
    AND S.HEIGHT > A.AVG_HEIGHT
ORDER BY 1;

 

 

'백엔드 > DB' 카테고리의 다른 글

[MySQL] MySQL 퀴즈  (0) 2023.06.12
[MySQL] MySQL 프로시저, 사용자 지정 함수  (0) 2023.06.12
[MySQL] MySQL 서브쿼리  (0) 2023.06.12
[MySQL] MySQL 문법  (0) 2023.06.12
[MySQL] MySQL 설치  (0) 2023.06.11