mysql create view tutorial with code examples
이 MySQL Create View Tutorial은 다른 절과 예를 사용하여 MySQL에서 뷰를 만드는 방법에 대해 설명합니다. 또한 뷰를 삭제하고 관리하는 방법을 다룹니다.
MySQL에서 view는 다른 프로그램이 테이블에 액세스하는 것을 차단하지 않고 테이블의 데이터를 볼 수있게하여 교착 상태를 방지하는 데 도움이되는 가상 테이블입니다.
뷰는 데이터를 보유하는 하나 이상의 테이블 위에 생성됩니다. 계속 진행하기 전에 MySQL 버전 8.0 .
학습 내용 :
MySQL 생성보기
통사론:
CREATE [REPLACE] VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
구문 설명 :
- 구문은 키워드 'CREATE VIEW'로 시작하여 수행 할 활동 유형에 대해 MySQL 서버에 알립니다. 이것은 필수 키워드이며 생략 할 수 없습니다.
- REPLACE는 선택적 매개 변수입니다. 기존 뷰에서 작업하는 동안 이것을 사용할 수 있습니다.
- 다음은 뷰의 이름입니다. 테이블 및 열의 이름처럼 고유해야합니다.
- 그런 다음 테이블에서 열을 선택하십시오. 뷰는 기본 테이블의 모든 열을 포함하거나 선택한 일부만 포함 할 수 있습니다.
- 다음은보기가 수행되어야하는 테이블의 이름입니다. 이것은 필수이며 생략 할 수 없습니다.
- 그런 다음 CREATE VIEW 작업을 적용해야하는 대상 행의 수를 제한하거나 필터링하는 WHERE 조건이 발생합니다. WHERE도 키워드이지만 선택 사항입니다.
그러나 WHERE 절은 중요합니다. 언급되지 않거나 조건이 올바르게 설정되지 않은 경우 전체 테이블 또는 필수가 아닌 행이 뷰의 일부가됩니다.
MySQL Create View 예제
아래는 MYSQL에서 생성 된 샘플 테이블입니다.
스키마 이름 : 태평양
테이블 이름 : 직원
열 이름 :
empNum : 사원 번호에 대한 정수 값을 보유합니다.
lastName : 직원의성에 대한 varchar 값을 보유합니다.
이름 : 직원의 이름에 대한 varchar 값을 보유합니다.
이메일 : 직원의 이메일 ID에 대한 varchar 값을 보유합니다.
deptNum : 직원이 속한 부서 ID에 대한 varchar를 보유합니다.
봉급 : 사원 별 급여의 십진수 값을 저장합니다.
시작일 : 직원의 입사일에 대한 날짜 값을 저장합니다.
스키마 이름 : 태평양
테이블 이름 : 부서
열 이름 :
deptNum; 조직 내 부서 ID에 대한 varchar를 보유합니다.
시티: 부서가 근무하는 도시의 이름을 보유합니다.
국가: 도시에 해당하는 국가 이름을 보유합니다.
보너스 보너스의 백분율 값을 보유합니다.
셀레늄 웹 드라이버 인터뷰 질문 및 답변
MySQL Simple Create A View
이제 위의 표 위에보기를 만들어 보겠습니다.
아래에 쿼리가 있습니다.
SELECT 절은 특정 열 이름을 사용하거나 '*'를 사용하여 모든 열을 가져올 수 있습니다. 뷰를 생성하면 열을 추가하거나 삭제할 수 없습니다. 열을 추가하거나 삭제하려면 새보기를 만들거나이 기존보기를 바꿔야합니다.
출력 문은 CREATE VIEW SQL 문이 성공적으로 실행되었음을 보여줍니다. 또한 행이 영향을받지 않았다고 말합니다. 이는 새 행이 생성 될 때 기본 테이블의 데이터에 영향을 미치지 않음을 의미합니다.
이제 뷰를 쿼리 해 보겠습니다.
질문:
CREATE VIEW employees_view AS SELECT empNum, lastName, firstName, email, deptNum, salary, start_date FROM employees ; SELECT empNum, firstName, lastName, email, deptNum, salary, start_date FROM employees_view ;
ResultSet :
empNum | lastName | 이름 | 이메일 | deptNum | 봉급 | 시작일 |
---|---|---|---|---|---|---|
1008 | 외벽 | 올리버 | oliver.bailey@gmail.com | 삼 | 24494.4 | 0001-01-01 |
1001 | 앤드류스 | 잭 | ja@gmail.com | 하나 | 3182.7 | 0001-01-01 |
1002 | Schwatz | 마이크 | ms@gmail.com | 하나 | 5304.5 | 0001-01-01 |
1003 | Langley | 마가렛 | margaret.langley@gmail.com | 두 | 8820 | 0001-01-01 |
1004 | Harera | 산드라 | sh@gmail.com | 하나 | 10609 | 0001-01-01 |
1005 | 읽다 | 베드로 | pl@gmail.com | 두 | 14332.5 | 0001-01-01 |
1006 | 키스 | 제니 | jk@gmail.com | 두 | 16537.5 | 0001-01-01 |
1009 | 컵 | 괴롭히다 | hb@gmail.com | 5 | 30645.6 | 0001-01-01 |
1011 | 행크스 | 톰 | th@gmail.com | 없는 | 10100 | 0001-01-01 |
1012 년 | 루터 | 남자 이름 | ml@gmail.com | 삼 | 13000 | 0001-01-01 |
1014 년 | 머레이 | 키스 | km@gmail.com | 하나 | 25000 | 0001-01-01 |
1015 년 | Branson | 남자 | jb@gmail.com | 두 | 15000 | 0001-01-01 |
1016 년 | 남자 이름 | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 년 | 존슨 | 이브 | ej@gmail.com | 삼 | 5500 | 2019-11-25 |
1018 년 | 노예 | 놀란 | nb@gmail.com | 두 | 15000 | 2019-09-13 |
GROUP BY 및 ORDER BY를 사용하여보기 만들기
부서별로 총 급여를 받아야하는 시나리오를 가정 해 보겠습니다.
다음은 쿼리입니다.
매번 테이블에서이 쿼리를 실행하는 것보다 정보가 필요하므로 데이터베이스 소스를 더 적게 사용하므로 뷰를 쿼리하는 것이 좋습니다.
이제 뷰의 내용을 살펴 보겠습니다. 우리는 각 부서가 급여 측면에서 직원에게 얼마를 보내고 있는지 알 수 있습니다.
질문:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
결과 세트 :
deptNum | 합계 (급여) | |||||
---|---|---|---|---|---|---|
1006 | 키스 | 제니 | 두 | 샬럿 | 미국 | 5 |
5 | 30645.6 | |||||
4 | 5000 | |||||
삼 | 42994.4 | |||||
두 | 69690 | |||||
하나 | 44096.2 | |||||
없는 | 10100 |
deptNum의 NULL은 직원이 어떤 부서에도 속하지 않지만 조직의 급여를 받고 있음을 나타냅니다.
JOIN을 사용하여 MySQL Create View
부서, 해당 부서의 기반이되는 도시 및 직원에게 제공되는 보너스에 대한 데이터를 얻고 싶다고 가정 해 보겠습니다. 모든 직원에게이 정보가 필요합니다.
이를 위해 JOIN 키워드를 사용하여 부서 및 직원 테이블에서 데이터를 가져옵니다.
쿼리와 그 출력을 살펴 보겠습니다.
요구 사항에 따라 INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN 또는 FULL OUTER JOIN과 같은 다양한 유형의 JOIN을 사용할 수 있습니다.
질문:
CREATE VIEW join_view AS SELECT A.empNum, A.lastName, A.firstName, A.deptNum, B.city, B.country, B.bonus FROM employees A INNER JOIN departments B USING (deptNum) ; SELECT * FROM join_view ;
이제이 뷰에서 SELECT 쿼리를 실행하여 출력을 확인하겠습니다.
결과 세트 :
empNum | 성 | 이름 | deptNum | 시티 | 국가 | 보너스 |
---|---|---|---|---|---|---|
1001 | 앤드류스 | 잭 | 하나 | 뉴욕 | 미국 | 삼 |
1002 | Schwatz | 마이크 | 하나 | 뉴욕 | 미국 | 삼 |
1004 | Harera | 산드라 | 하나 | 뉴욕 | 미국 | 삼 |
1014 년 | 머레이 | 키스 | 하나 | 뉴욕 | 미국 | 삼 |
1003 | Langley | 마가렛 | 두 | 샬럿 | 미국 | 5 |
1005 | 읽다 | 베드로 | 두 | 샬럿 | 미국 | 5 |
1015 년 | Branson | 남자 | 두 | 샬럿 | 미국 | 5 |
1018 년 | 노예 | 놀란 | 두 | 샬럿 | 미국 | 5 |
1008 | 외벽 | 올리버 | 삼 | 시카고 | 미국 | 8 |
1012 년 | 루터 | 남자 이름 | 삼 | 시카고 | 미국 | 8 |
1017 년 | 존슨 | 이브 | 삼 | 시카고 | 미국 | 8 |
1016 년 | 남자 이름 | Richard | 4 | 런던 | 영국 | 10 |
1009 | 컵 | 괴롭히다 | 5 | 베를린 | 독일 | 13 |
하위 쿼리를 사용하여보기 만들기
이런 종류의 create view 문에서 우리는 절이 하위 쿼리의 출력을 기반으로하는 열의 값을 가져 오려고합니다. 급여가 조직의 평균 급여보다 많은 직원을 모두 찾아야합니다.
쿼리를 보겠습니다.
질문:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
결과 세트 :
empNum | lastName | 이름 | 봉급 |
---|---|---|---|
1018 년 | 노예 | 놀란 | 15000 |
1005 | 읽다 | 베드로 | 14332.5 |
1006 | 키스 | 제니 | 16537.5 |
1008 | 외벽 | 올리버 | 24494.4 |
1009 | 컵 | 괴롭히다 | 30645.6 |
1014 년 | 머레이 | 키스 | 25000 |
1015 년 | Branson | 남자 | 15000 |
보기 관리
보기 변경 또는보기 만들기 / 바꾸기를 사용하여보기를 수정 / 바꿀 수 있습니다. 뷰를 재 컴파일하기 위해 ALTER VIEW를 명시 적으로 사용하는 것은 유효하지 않습니다.
ALTER ANY Table 시스템 권한이 있거나 뷰가 스키마에있는 경우 ALTER VIEW 문을 사용할 수 있습니다.
Alter View 쿼리를 사용하여 런타임 전에 재 컴파일 오류를 찾을 수 있습니다. ALTER VIEW 문을 사용하면 종속 된 다른 개체 /보기에 영향을 줄 수 있습니다. 따라서 변경 후 뷰를 다시 컴파일 할 수 있습니다.
뷰 생성을 사용하여 뷰를 재정의하고 뷰 바꾸기 쿼리로 기존 뷰를 바꿀 수 있습니다.
예를 들면 employee_view를 고려하십시오. 여기에는 몇 가지 다른 열과 함께 lastName 및 firstName 열이 있습니다. firstName 및 lastName 열을 병합하기위한 요구 사항이 있다고 가정합니다.
다음은 ALTER 쿼리를 실행하기 전 뷰의 스냅 샷입니다.
이제 ALTER VIEW 쿼리를 실행하여 firstName과 lastName을 병합 해 보겠습니다.
쿼리는 다음과 같습니다.
질문:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
이제 employee_view의 내용을 살펴 보겠습니다.
아시다시피 이름에 대한 두 개의 별도 열이 없습니다. 대신, 이름과 성이 모두 연결된 열이 하나만 있습니다.
자세히 알아보기 = >> MySQL CONCAT 함수
질문:
SELECT * FROM employees_view;
결과 세트 :
empNum | empName | 이메일 | deptNum | 봉급 | 시작일 |
---|---|---|---|---|---|
1008 | 올리버 베일리 | oliver.bailey@gmail.com | 삼 | 24494 | 0001-01-01 |
1001 | 잭 앤드류스 | ja@gmail.com | 하나 | 3182.7 | 0001-01-01 |
1002 | 마이크 슈 와츠 | ms@gmail.com | 하나 | 5304.5 | 0001-01-01 |
1003 | 마가렛 랭글리 | margaret.langley@gmail.com | 두 | 8820 | 0001-01-01 |
1004 | 산드라 하레 라 | sh@gmail.com | 하나 | 10609 | 0001-01-01 |
1005 | 피터 리 | pl@gmail.com | 두 | 14333 | 0001-01-01 |
1006 | 제니 키스 | jk@gmail.com | 두 | 16538 | 0001-01-01 |
1009 | 해리 비커 | hb@gmail.com | 5 | 30646 | 0001-01-01 |
1011 | 톰 행크스 | th@gmail.com | 10100 | 0001-01-01 | |
1012 년 | 마틴 루터 | ml@gmail.com | 삼 | 13000 | 0001-01-01 |
1014 년 | 키스 머레이 | km@gmail.com | 하나 | 25000 | 0001-01-01 |
1015 년 | 존 브랜슨 | jb@gmail.com | 두 | 15000 | 0001-01-01 |
1016 년 | 리처드 마틴 | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 년 | 이브 존슨 | ej@gmail.com | 삼 | 5500 | 2019-11-25 |
1018 년 | 놀란 본드 | nb@gmail.com | 두 | 15000 | 2019-09-13 |
보기 삭제
DROP VIEW 문을 사용하여 뷰를 삭제할 수 있습니다. DROP ANY보기 권한이 있거나 스키마에 있어야하는 경우 DROP VIEW를 사용할 수 있습니다. 드 루핑 뷰는 뷰가 빌드 된 기본 테이블이나 해당 테이블의 데이터에 영향을주지 않습니다.
질문:
DROP VIEW (view name);
자주 묻는 질문
Q # 1) MySQL에서 뷰를 생성하는 방법은 무엇입니까?
대답: MySQL에서 뷰를 만드는 방법은 여러 가지가 있습니다. 우리는 아래와 같이 네 가지 방법을 거쳤습니다.
1. MySQL Simple Create A View
2. MySQL은 GROUP BY 및 ORDER BY를 사용하여 뷰 생성
3. JOIN을 사용한 MySQL Create View
4. MySQL 서브 쿼리를 사용하여 뷰 생성
질문 # 2) MySQL의보기 란 무엇입니까?
대답: 뷰는 논리적 구조에 저장된 미리 실행 된 쿼리와 같으므로 테이블에서 복잡한 쿼리를 다시 실행할 필요가 없습니다. 테이블에 영향을주지 않고 뷰를 쿼리하고 데이터를 가져올 수 있습니다.
질문 # 3) 뷰를 생성하는 동안 뷰에 JOIN을 적용 할 수 있습니까?
대답: 예, JOIN 문은 테이블에서 사용하는 것과 유사한 방식으로 뷰에서 사용할 수 있습니다.
질문 # 4) 다른보기에서보기를 만들 수 있습니까?
대답: 뷰는 기본적으로 테이블 역할을하지만 가상의 역할을합니다. 따라서 테이블 위에 뷰를 만드는 방식과 마찬가지로 다른 뷰 위에 뷰를 만들 수 있습니다.
질문 # 5) 뷰를 사용하는 이유는 무엇입니까?
일하기 좋은 최고의 게임 회사
대답: SQL 쿼리의 결과로 뷰는 논리 테이블을 만듭니다. 우리는 다음과 같은 이유로 뷰를 사용합니다.
- 보기를 사용하여 관련 작업에 대한 행과 열의 가시성을 제한 할 수 있습니다 (Select 및 Where 절 사용).
- 뷰는 행과 열을 결합 할 때 사용됩니다 (사용 노동 조합 및 조인).
- 행 집계 (Group by 및 Have 사용)를보다 세밀한 세부 정보가있는 테이블로 더 뚜렷하게 표시합니다.
- 뷰는 열 (AS 사용) 또는 행 (JOIN, IF, CASE 또는 Oracle의 DECODE 사용)의 이름을 바꾸거나 디코딩하는 동안 사용됩니다.
- 위의 항목 중 하나를 보안 설정과 결합하여 사용자가 권한 만있는 항목에만 액세스 할 수 있는지 확인할 수 있습니다.
결론
이 자습서에서는 MySQL에서보기를 만드는 다양한 방법을 살펴 보았습니다.
1. MySQL Simple Create A View
2. MySQL은 GROUP BY 및 ORDER BY를 사용하여 뷰 생성
3. JOIN을 사용한 MySQL Create View
4. MySQL 서브 쿼리를 사용하여 뷰 생성
프로젝트 요구 사항에 따라 이러한 옵션 중 하나를 선택할 수 있습니다.
추가 읽기 = >> MySQL 생성 테이블
행복한 학습 !!
추천 도서
- MySQL ALTER TABLE-MySQL에서 테이블에 열을 추가하는 방법
- MySQL CONCAT 및 GROUP_CONCAT 함수 (예제 포함)
- MySQL COUNT 및 COUNT DISTINCT (예제 포함)
- MySQL 데이터베이스 만들기-MySQL에서 데이터베이스를 만드는 방법
- MySQL CREATE USER : MySQL에서 새 사용자를 만드는 방법
- MySQL Create View Tutorial with Code Examples
- MySQL GROUP BY 절-예제가 포함 된 자습서
- MySQL JOIN 튜토리얼 : 내부, 외부, 십자가, 왼쪽, 오른쪽 및 자기