추천 모음 집-MySQL 보기 상세 설명

6159 단어 mysql
선언: 
MySQL 에서 보 기 는 아마도 우리 가 가장 자주 사용 하 는 데이터베이스 대상 중의 하나 일 것 이다.그럼 보기 와 표 의 차 이 를 아 십 니까?보 기 를 만 들 고 사용 할 때 어떤 점 을 주의해 야 하 는 지 아 십 니까?많은 사람들 이 보기 에 대해 수박 겉 핥 기 일 수도 있 습 니 다.보 기 를 자세히 알 고 싶 은 학생 들 이 보 세 요.이 글 은 보기 의 개념,생 성 및 사용 방법 을 상세 하 게 소개 합 니 다.
1.보기 정의 및 간단 한 소개
보 기 는 SQL 문 구 를 기반 으로 한 결과 집합 을 시각 화 하 는 표 입 니 다.즉,보 기 는 가상 존재 하 는 표 입 니 다.표 의 전부 또는 일부 기록 을 포함 할 수도 있 고 표 나 여러 표 로 만 들 수도 있 습 니 다.보 기 를 사용 하면 데이터 시트 의 모든 데 이 터 를 보지 않 고 필요 한 데이터 만 얻 을 수 있 습 니 다.보 기 를 만 들 때 실제 데이터베이스 에서 SELECT 문 구 를 실 행 했 습 니 다.SELECT 문 구 는 필드 이름,함수,연산 자 를 포함 하여 사용자 에 게 데 이 터 를 표시 합 니 다. 
보기 의 데 이 터 는 원래 표 의 데이터 에 의존 하기 때문에 원래 표 의 데이터 가 바 뀌 었 습 니 다.그러면 보 이 는 보기 의 데이터 도 달라 집 니 다.예 를 들 어 데이터 시트 에 데 이 터 를 삽입 하면 보 기 를 볼 때 보기 에 도 같은 데이터 가 삽 입 된 것 을 발견 할 수 있 습 니 다.보 기 는 실제 적 으로 미리 정 의 된 조회 형식의 표 로 구성 되 어 있다.
2.보기 생 성 및 사용 방법
보기 표준 문법 만 들 기:
CREATE
    [OR REPLACE]
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = user]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]

문법 해석:
1)OR REPLACE:기 존 보 기 를 교체 하 는 것 을 의미 합 니 다.이 보기 가 존재 하지 않 으 면 CREATE OR REPLACE VIEW 는 CREATE VIEW 와 같 습 니 다.
2)ALGORITHM:보기 선택 알고리즘 을 표시 합 니 다.기본 알고리즘 은 UNDEFINED(정의 되 지 않 은):MySQL 에서 사용 할 알고리즘 을 자동 으로 선택 합 니 다.merge 합병;temptable 임시 표,일반적으로 이 매개 변 수 는 명시 적 으로 지정 되 지 않 습 니 다.
3)DEFINER:보기 의 작성 자 나 정의 자 를 가리 키 며,이 옵션 을 지정 하지 않 으 면 보 기 를 만 드 는 사용자 가 정의 자 입 니 다.
4)SQL SECURITY:SQL 보안,기본 값 은 DEFINER 입 니 다.
5)select_statement:selection 문 구 를 표시 합 니 다.기본 표 나 다른 보기에 서 선택 할 수 있 습 니 다.
6)WITH CHECK OPTION:보기 가 업 데 이 트 될 때 제약 이 있 음 을 의미 하 며,기본 값 은 CASCADED 입 니 다.
사실 우리 가 일상적으로 보 기 를 만 들 때 매개 변 수 를 지정 할 필요 가 없습니다.일반적인 상황 에서 보 기 를 만 드 는 것 을 권장 합 니 다.
create view  [(column_list)]
as select  
with check option;

다음은 몇 가지 구체 적 인 생 성 예 시 를 보 여 줍 니 다.
#     
mysql> create view v_F_players(  ,  ,  ,  )
    -> as
    -> select PLAYERNO,NAME,SEX,PHONENO from PLAYERS
    -> where SEX='F'
    -> with check option;
Query OK, 0 rows affected (0.00 sec)

mysql> desc v_F_players;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
|       | int(11)  | NO   |     | NULL    |       |
|       | char(15) | NO   |     | NULL    |       |
|       | char(1)  | NO   |     | NULL    |       |
|       | char(13) | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> select * from  v_F_players;
+--------+-----------+--------+------------+
|       |         |       |           |
+--------+-----------+--------+------------+
|      8 | Newcastle | F      | 070-458458 |
|     27 | Collins   | F      | 079-234857 |
|     28 | Collins   | F      | 010-659599 |
|    104 | Moorman   | F      | 079-987571 |
|    112 | Bailey    | F      | 010-548745 |
+--------+-----------+--------+------------+
5 rows in set (0.02 sec)

#     
mysql> create view v_match
    -> as 
    -> select a.PLAYERNO,a.NAME,MATCHNO,WON,LOST,c.TEAMNO,c.DIVISION
    -> from 
    -> PLAYERS a,MATCHES b,TEAMS c
    -> where a.PLAYERNO=b.PLAYERNO and b.TEAMNO=c.TEAMNO;
Query OK, 0 rows affected (0.03 sec)

mysql> select * from v_match;
+----------+-----------+---------+-----+------+--------+----------+
| PLAYERNO | NAME      | MATCHNO | WON | LOST | TEAMNO | DIVISION |
+----------+-----------+---------+-----+------+--------+----------+
|        6 | Parmenter |       1 |   3 |    1 |      1 | first    |
|       44 | Baker     |       4 |   3 |    2 |      1 | first    |
|       83 | Hope      |       5 |   0 |    3 |      1 | first    |
|      112 | Bailey    |      12 |   1 |    3 |      2 | second   |
|        8 | Newcastle |      13 |   0 |    3 |      2 | second   |
+----------+-----------+---------+-----+------+--------+----------+
5 rows in set (0.04 sec)

보 기 는 사용 할 때 기본 표 와 같 습 니 다.예 를 들 어 우리 가 사용 할 수 있 습 니 다. select from view_name 또는 select from view_name where...보 기 는 우리 가 필요 로 하지 않 는 데 이 터 를 걸 러 내 고 관련 열 이름 을 사용자 정의 열 이름 으로 바 꿀 수 있 습 니 다.보 기 는 기본 표 의 구조 와 표 이름 이 아무리 복잡 하 더 라 도 접근 인터페이스 입 니 다.일반적인 상황 에서 보 기 는 조회 에 만 사 용 됩 니 다.보기 자체 에 데이터 가 없 기 때문에 보기 에 대한 dml 작업 은 최종 적 으로 기본 표 에 나타 납 니 다.보 기 를 delete,update,insert 작업 을 합 니 다.원래 표 역시 업데이트 되 고 drop 보기 의 원래 표 는 변 하지 않 으 며 보 기 는 truncate 가 안 됩 니 다.그러나 일반적인 상황 에서 우 리 는 보 기 를 업데이트 하 는 것 을 피해 야 한다.dml 작업 은 원 표를 직접 업데이트 할 수 있다.
3.보기 관련 최고의 실천
다음은 보기 의 장점 을 간단하게 소개 하고 이러한 장점 을 통 해 우 리 는 보기 의 적용 장면 을 쉽게 정리 할 수 있다.
1)간단 함:보 기 를 사용 하 는 사용 자 는 뒤에 대응 하 는 표 의 구조,관련 조건 과 선별 조건 에 전혀 관심 을 가 질 필요 가 없 으 며 사용자 에 게 는 이미 걸 러 진 복합 조건 의 결과 집합 이다.
2)보안:보 기 를 사용 하 는 사용 자 는 검색 이 허용 되 는 결과 집합 에 만 접근 할 수 있 습 니 다.표 에 대한 권한 관 리 는 한 줄 의 열 로 제한 할 수 없 지만 보 기 를 통 해 간단하게 이 루어 집 니 다.
3)데이터 독립:보기 의 구조 가 확정 되면 표 구조 변화 가 사용자 에 게 미 치 는 영향 을 차단 할 수 있 고 소스 표 의 증가 열 은 보기 에 영향 을 주지 않 습 니 다.원본 표 에서 열 이름 을 수정 하면 보기 수정 을 통 해 해결 할 수 있 으 며 방문 자 에 게 영향 을 주지 않 습 니 다.
한 마디 로 보 기 를 사용 하 는 경우 대부분 데이터 안전성 을 보장 하고 조회 효율 을 높이 기 위해 서다.예 를 들 어 우 리 는 몇 개의 표 와 관련 된 결 과 를 자주 사용 합 니 다.그러면 우 리 는 보 기 를 사용 하여 처리 하거나 제3자 프로그램 이 우리 의 업무 라 이브 러 리 를 호출 해 야 합 니 다.필요 에 따라 보 기 를 만들어 제3자 프로그램 에 조회 할 수 있 습 니 다.
일상적인 사용 과 보 기 를 유지 하 는 과정 에서 개인 은 다음 과 같은 몇 가지 실천 을 정리 하여 참고 할 수 있 습 니 다.
  • 보기 이름 은 접 두 사 를 통일 하 는 것 을 권장 합 니 다.예 를 들 어 v혹은 view처음에는 식별 하기 쉽다.
  • SQL SECURITY 는 기본 DEFINER 를 사용 하여 보기 정의 자의 권한 으로 보 기 를 조회 할 수 있 음 을 표시 합 니 다.
  • 보기 정의 자 는 관련 프로그램 사용 자 를 권장 합 니 다.
  • 보 기 는 너무 많은 시 계 를 연결 하지 않 고 데이터 가 불필요 합 니 다.
  • 보 기 를 조회 할 때 조건 을 추가 해 야 하 며 매번 모든 데 이 터 를 조회 하 는 것 을 권장 하지 않 습 니 다.
  • 보기 이전 은 새로운 환경 에서 이 보기 의 정의 자 사용 자 를 주의해 야 합 니 다.
  • 보기 의 데 이 터 를 직접 업데이트 하지 말고 보기 만 조회 합 니 다.

  • 요약: 
    보 기 는 MySQL 에서 자주 사용 되 는데 이 글 은 보기 의 개념 과 생 성 방법 을 소개 하고 연장 되 었 으 며 그 다음 에 보기 의 사용 장면 과 장점 을 설명 했다.사용 할 때 보기 와 표 의 차 이 를 느끼 지 못 할 수도 있 습 니 다.사실 이 안의 도 로 는 아직 많 습 니 다.여기 서 보 기 는 조회 로 만 사용 하 는 것 을 권장 합 니 다.규범 에 따라 보 기 는 매우 편리 합 니 다.이 문장 이 너 에 게 도움 이 되 기 를 바란다.

    좋은 웹페이지 즐겨찾기