SQL-보기 사용
뷰는 연관된 이름으로 데이터베이스에 저장된 SQL 문에 불과합니다. 뷰는 실제로 미리 정의 된 SQL 쿼리 형식의 테이블 구성입니다.
뷰는 테이블의 모든 행을 포함하거나 테이블에서 행을 선택할 수 있습니다. 뷰를 생성하기 위해 작성된 SQL 쿼리에 의존하는 하나 이상의 테이블에서 뷰를 생성 할 수 있습니다.
가상 테이블의 유형 인보기는 사용자가 다음을 수행 할 수 있도록합니다.
사용자 또는 사용자 클래스가 자연 스럽거나 직관적 인 방식으로 데이터를 구조화합니다.
사용자가 필요로하는 것을 정확히보고 수정할 수있는 방식으로 데이터에 대한 액세스를 제한합니다.
보고서를 생성하는 데 사용할 수있는 다양한 테이블의 데이터를 요약합니다.
보기 만들기
데이터베이스보기는 CREATE VIEW성명서. 보기는 단일 테이블, 여러 테이블 또는 다른보기에서 만들 수 있습니다.
보기를 만들려면 사용자에게 특정 구현에 따라 적절한 시스템 권한이 있어야합니다.
기본 CREATE VIEW 구문은 다음과 같습니다-
CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];
일반 SQL SELECT 쿼리에서 사용하는 것과 유사한 방식으로 SELECT 문에 여러 테이블을 포함 할 수 있습니다.
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
다음은 CUSTOMERS 테이블에서보기를 작성하는 예입니다. 이보기는 CUSTOMERS 테이블에서 고객 이름과 나이를 갖는 데 사용됩니다.
SQL > CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM CUSTOMERS;
이제 실제 테이블을 쿼리하는 것과 비슷한 방식으로 CUSTOMERS_VIEW를 쿼리 할 수 있습니다. 다음은 동일한 예입니다.
SQL > SELECT * FROM CUSTOMERS_VIEW;
그러면 다음과 같은 결과가 생성됩니다.
+----------+-----+
| name | age |
+----------+-----+
| Ramesh | 32 |
| Khilan | 25 |
| kaushik | 23 |
| Chaitali | 25 |
| Hardik | 27 |
| Komal | 22 |
| Muffy | 24 |
+----------+-----+
WITH CHECK 옵션
WITH CHECK OPTION은 CREATE VIEW 문 옵션입니다. WITH CHECK OPTION의 목적은 모든 UPDATE 및 INSERT가 뷰 정의의 조건을 충족하는지 확인하는 것입니다.
조건을 만족하지 않으면 UPDATE 또는 INSERT가 오류를 반환합니다.
다음 코드 블록에는 WITH CHECK OPTION을 사용하여 동일한 뷰 CUSTOMERS_VIEW를 만드는 예제가 있습니다.
CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;
이 경우 WITH CHECK OPTION은 뷰가 AGE 열에 NULL 값이없는 데이터에 의해 정의되기 때문에 뷰의 AGE 열에있는 모든 NULL 값의 입력을 거부해야합니다.
보기 업데이트
보기는 아래에 주어진 특정 조건에서 업데이트 될 수 있습니다-
SELECT 절은 키워드 DISTINCT를 포함 할 수 없습니다.
SELECT 절에는 요약 함수가 포함될 수 없습니다.
SELECT 절에는 집합 함수가 포함될 수 없습니다.
SELECT 절에는 집합 연산자가 포함될 수 없습니다.
SELECT 절에는 ORDER BY 절이 포함될 수 없습니다.
FROM 절은 여러 테이블을 포함 할 수 없습니다.
WHERE 절에는 하위 쿼리가 포함될 수 없습니다.
쿼리에 GROUP BY 또는 HAVING이 포함될 수 없습니다.
계산 된 열은 업데이트 할 수 없습니다.
INSERT 쿼리가 작동하려면 기본 테이블의 모든 NOT NULL 열이 뷰에 포함되어야합니다.
따라서보기가 위에서 언급 한 모든 규칙을 충족하면 해당보기를 업데이트 할 수 있습니다. 다음 코드 블록에는 Ramesh의 나이를 업데이트하는 예제가 있습니다.
SQL > UPDATE CUSTOMERS_VIEW
SET AGE = 35
WHERE name = 'Ramesh';
이것은 궁극적으로 기본 테이블 CUSTOMERS를 업데이트하고 동일한 내용이 뷰 자체에 반영됩니다. 이제 기본 테이블을 쿼리하면 SELECT 문이 다음 결과를 생성합니다.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 35 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
뷰에 행 삽입
데이터 행을 뷰에 삽입 할 수 있습니다. UPDATE 명령에 적용되는 동일한 규칙이 INSERT 명령에도 적용됩니다.
여기서는이 뷰에 NOT NULL 열을 모두 포함하지 않았기 때문에 CUSTOMERS_VIEW에 행을 삽입 할 수 없습니다. 그렇지 않으면 테이블에 삽입하는 것과 유사한 방식으로 뷰에 행을 삽입 할 수 있습니다.
보기로 행 삭제
보기에서 데이터 행을 삭제할 수 있습니다. UPDATE 및 INSERT 명령에 적용되는 동일한 규칙이 DELETE 명령에 적용됩니다.
다음은 AGE = 22 인 레코드를 삭제하는 예입니다.
SQL > DELETE FROM CUSTOMERS_VIEW
WHERE age = 22;
이것은 궁극적으로 기본 테이블 CUSTOMERS에서 행을 삭제하고 동일한 내용이 뷰 자체에 반영됩니다. 이제 기본 테이블을 쿼리하면 SELECT 문이 다음 결과를 생성합니다.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 35 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
뷰 삭제
분명히 뷰가있는 곳에서 더 이상 필요하지 않은 경우 뷰를 삭제할 수있는 방법이 필요합니다. 구문은 매우 간단하며 아래에 나와 있습니다.
DROP VIEW view_name;
다음은 CUSTOMERS 테이블에서 CUSTOMERS_VIEW를 삭제하는 예입니다.
DROP VIEW CUSTOMERS_VIEW;