ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • view
    Database/mysql 2016. 6. 29. 17:33

     
     
     • 뷰의 정의 
     • 뷰를 사용하기 위한 이유 
     • 뷰 생성 
     • 뷰 확인 
     • 뷰 삭제와 수정 
     • 뷰를 위한 권한 설정 
     
    15-1. 뷰를 왜 사용하나?
     
      • SELECT 구문의 용어에 데이터베이스 오프젝트는 정의됨  
      • 가상 테이블 
      • 기본 테이블 혹은 뷰에서 조회 
      • 업데이트 할 수 있음 
     
    15-2. CREATE VIEW 구문
     
     • 뷰의 정의 
     • 일반 문법
          CREATE[OR REPLACE] [ALGORITHM = 타입]
               VIEW 뷰명[(컬럼)]
               AS select_구문
               [WITH [CASCADED | LOCAL] CHECK OPTION]
     
     • CREATE VIEW 구문의 옵션 부분
       – OR REPACE
       – ALGORITHM
       – WITH CHECK OPTION 
     
    15-3. SELECT로 CREATE VIEW
    mysql> CREATE VIEW CityView AS SELECT ID, Name FROM City;
    mysql> SELECT * FROM CityView;

     • 컬럼 리스트
    mysql> CREATE VIEW v
         -> AS SELECT Country.Name, City.Name
         -> FROM Country, City WHERE Code = CountryCode;
    mysql> CREATE VIEW v
         -> AS SELECT Country.Name AS CountryName, City.Name AS CityName
         -> FROM Country, City WHERE Code = CountryCode;
    mysql> DESC v;

     • 컬럼 표현 
    mysql> CREATE VIEW CountryLangCount AS
        -> SELECT Name, COUNT(Language)AS LangCount
        -> FROM Country, CountryLanguage 
    -> WHERE Code = CountryCode -> GROUP BY Name;
    mysql> DESCRIBE CountryLangCount;

     

    15-4. 업데이트 할 수 있는 뷰
     
     • UPDATE와 DELETE 사용 
     • 1:1 관계여야 함
    mysql> CREATE VIEWEuropePop AS
        -> SELECT Name, Population FROM Country
        -> WHERE Continent = 'Europe';

     • 업데이트 보기
    mysql> SELECT * FROM EuropePop WHERE Name = 'San Marino';
    mysql> UPDATEEuropePop SET Population = Population + 1
         -> WHERE Name = 'San Marino';
    mysql> SELECT * FROM EuropePop WHERE Name = 'San Marino';

     • 업데이트와 삭제 보기 
    mysql> SELECT * FROM Country WHERE Name = 'San Marino';
    mysql> DELETEFROM EuropePop WHERE Name = 'San Marino';
    mysql> SELECT * FROM EuropePop WHERE Name = 'San Marino';
    mysql> SELECT * FROM Country WHERE Name = 'San Marino';

     

    15-5. 입력할 수 있는 뷰
     
     • 업데이트가 가능한 뷰는 입력 할 수 있음
       - 필요 조건이 충족되어야 함
       - 뷰의 컬럼 이름이 이중이면 안됨
       - 기본 값이 없는 기본 테이블의 모든 컬럼을 포함해야 함
       - 컬럼에서 나올 수 없음 
     • AUTO_INCREMENT로 된 뷰에서의 입력
       - 뷰에 AUTO_INCREMENT 없이 테이블을 생성했다면 LAST_INSERT_ID() 값은 바뀌지 않을 것임 
     • 뷰에 입력하기 위해 업데이트 할 수 있어야 함 
     
    15-6. WITH CHECK OPTION
     
     • 허용된 수정의 제약 위치 
     • 업데이트를 위한 WHERE 조건 확인
    mysql> CREATE VIEW LargePop AS
        -> SELECT Name, Population FROM Country
        -> WHERE Population >= 100000000
        -> WITH CHECK OPTION;
    mysql> SELECT * FROM LargePop;

     • 업데이트
    mysql> UPDATE LargePop SET Population = Population + 1
         -> WHERE Name = 'Nigeria';
    mysql> SELECT * FROM LargePop WHERE Name = 'Nigeria';
    mysql> UPDATELargePop SET Population = 99999999
         -> WHERE Name = 'Nigeria';

     
    15-7. 뷰 확인
     
     • 뷰에 의해 참조된 어떤 오프젝트는 틀림없이 존재 
     • CHECK TABLE 명령어 사용 
    mysql> CREATE TABLE t1 (i INT);
    mysql> CREATE VIEW v AS SELECT i FROM t1;
    mysql> RENAME TABLE t1 TO t2;
    mysql> CHECK TABLE v\G

    15-8. 뷰 수정
     
     • 존재하는 뷰의 정의 변경 
     • ALTER VIEW 구문 사용
    mysql> ALTER VIEW LargePop AS
         -> SELECT Name, Population FROM Country
         -> WHERE Population >= 100000000;

     • 뷰의 변경을 위해 CREATE VIEW와 REPLACE VIEW를 사용 
     
    15-9. 뷰 삭제
     
     • 한개 혹은 그 이상의 뷰 삭제 
     • DROP VIEW 구문 사용
       - IF EXISTS 절
    mysql> DROP VIEW IF EXISTSv1, v2;
    mysql> SHOW WARNINGS;

     
    15-10. INFORMATION_SCHEMA
     
     • 데이터베이스 안에 VIEWS 테이블
    mysql> SELECT * FROM INFORMATION_SCHEMA.VIEWS
         -> WHERE TABLE_NAME = 'CityView‘
         -> AND TABLE_SCHEMA = 'world'\G

     
    15-11. SHOW 구문
     
     • 메타데이타 보기 
     • 뷰를 위한 SHOW CREATE VIEW
    mysql> SHOW CREATE VIEW CityView\G
     • 뷰를 위한 SHOW와 DESCRIBE 구문
        – DESCRIBE
        – SHOW TABLE STATUS
        – SHOW TABLES
        – SHOW FULL TABLES
    mysql> SHOW FULL TABLES FROM world;

     

    댓글

Designed by Tistory.