Whiteship's Note

Chapter 8: Hiding Complex SQL with Views

DB/SQL : 2008.01.06 18:13


참조 : The Programmer's Guide to SQL

뷰 사용하면 좋은 점.
    - 같은 쿼리를 매번 작성하지 않아도 됨.
    - 데이터를 좀 더 편한 상태로 포맷해서 볼 수 있다.
    - 데이터가 아닌 뷰에 접근하게 함으로써 보안.
    - 데이터의 변경을 별도의 작업 필요없이 뷰에 반영할 수 있다.

뷰 만들기
    CREATE VIEW ViewName AS Query [WITH CHECK OPTION]
뷰 수정하기(오라클)
    CREATE OR REPLACE VIEW ViewName AS NewQuery
뷰 삭제하기
    DROP VIEW ViewName

뷰를 통해서 데이터를 수정/삭제 하려면 다음의 조건을 만족해야 한다.
    1. 어떤 aggregate functions(COUNT나 MAX) 또는 GROUP BY 를 사용하지 않아야 한다. 서브쿼리에서 사용하는 것은 괜찮다.
    2. DISINT를 사용하지 않아야 한다.
    3. 계산 식을 사용한 컬럼을 사용하지 않아야 한다.
    4. 명시적으로 설정한 값이 아닌, 데이블에서 가져온 데이터야만 한다.

뷰 예제
CREATE VIEW ClassAttendees AS
SELECT Class.ClassID,
   SUBSTR(Professor.Name, INSTR(Professor.Name, ' ') + 1)
           || ', '
           || SUBSTR(Professor.Name, 1,
              INSTR(Professor.Name, ' ') - 1)
   AS Name, 'Professor' AS Role
FROM Professor
   INNER JOIN Class ON Professor.ProfessorID =
      Class.ProfessorID
UNION
SELECT Enrollment.ClassID,
   SUBSTR(Student.Name, INSTR(Student.Name, ' ') + 1)
           || ', '
           || SUBSTR(Student.Name, 1,
              INSTR(Student.Name, ' ') - 1)
   AS Name, 'Student'
FROM Student
   INNER JOIN Enrollment ON Student.StudentID = Enrollment.StudentID;
- 문자열 연산을 사용했다.
- 명시적으로 값을 사용했다.
- 따라서 위의 뷰를 통해서 테이블의 데이터를 수정/삭제/추가 할 수 없다.
top

TAG ,

Write a comment.