logo

SQL 보기

SQL의 뷰 일종의 가상 테이블입니다. 뷰에도 테이블과 같은 행과 열이 있지만 테이블처럼 디스크에 데이터를 저장하지는 않습니다. View는 하나 이상의 테이블에서 데이터를 검색하는 사용자 정의 쿼리를 정의하고 데이터가 단일 소스에서 오는 것처럼 나타냅니다.

데이터베이스에 있는 하나 이상의 테이블에서 필드를 선택하여 뷰를 만들 수 있습니다. 뷰는 테이블의 모든 행을 포함하거나 특정 조건에 따른 특정 행을 포함할 수 있습니다.

이번 글에서는 SQL에서 뷰를 생성, 업데이트, 삭제하는 방법에 대해 알아봅니다.



이모 SQL 데이터베이스

우리는 이것을 사용할 것입니다 두 개의 SQL 테이블 예를 들어.

학생 세부정보

테이블 학생

학생 성적

표 학생 성적

다음 SQL 쿼리를 작성하여 시스템에 이러한 테이블을 생성할 수 있습니다.

MySQL
-- Create StudentDetails table CREATE TABLE StudentDetails (  S_ID INT PRIMARY KEY,  NAME VARCHAR(255),  ADDRESS VARCHAR(255) ); INSERT INTO StudentDetails (S_ID, NAME, ADDRESS) VALUES  (1, 'Harsh', 'Kolkata'),  (2, 'Ashish', 'Durgapur'),  (3, 'Pratik', 'Delhi'),  (4, 'Dhanraj', 'Bihar'),  (5, 'Ram', 'Rajasthan'); -- Create StudentMarks table CREATE TABLE StudentMarks (  ID INT PRIMARY KEY,  NAME VARCHAR(255),  Marks INT,  Age INT ); INSERT INTO StudentMarks (ID, NAME, Marks, Age) VALUES  (1, 'Harsh', 90, 19),  (2, 'Suresh', 50, 20),  (3, 'Pratik', 80, 19),  (4, 'Dhanraj', 95, 21),  (5, 'Ram', 85, 18);>

SQL에서 뷰 생성

다음을 사용하여 뷰를 만들 수 있습니다. 보기 만들기 성명. 뷰는 단일 테이블 또는 여러 테이블에서 생성될 수 있습니다.

통사론

  CREATE VIEW   view_name AS   SELECT   column1, column2.....   FROM   table_name   WHERE   condition;>

매개변수:

  • view_name : 뷰의 이름
  • 테이블_이름 : 테이블 이름
  • 상태 : 행 선택 조건

SQL CREATE VIEW 문 예

SQL에서 뷰를 생성하는 방법을 더 잘 이해하기 위해 SQL의 CREATE VIEW 문의 몇 가지 예를 살펴보겠습니다.

예 1: 단일 테이블에서 뷰 생성

이 예에서는 StudentDetails 테이블에서 DetailsView라는 뷰를 만듭니다. 질문:

  CREATE VIEW   DetailsView   AS    SELECT   NAME, ADDRESS   FROM   StudentDetails   WHERE   S_ID <5;>

뷰에서 데이터를 보려면 테이블을 쿼리하는 것과 동일한 방식으로 뷰를 쿼리하면 됩니다.

  SELECT   *   FROM   DetailsView;>

산출:

뷰 예시 생성

예 2: 테이블에서 뷰 생성

이 예에서는 StudentDetails 테이블에서 StudentNames라는 뷰를 만듭니다. 질문:

  CREATE VIEW   StudentNames   AS    SELECT   S_ID, NAME   FROM   StudentDetails   ORDER BY   NAME;>

이제 뷰를 다음과 같이 쿼리하면

  SELECT   *   FROM   StudentNames;>

산출:

출력 보기

예 3: 여러 테이블에서 뷰 생성

이 예에서는 StudentDetails 및 StudentMarks라는 두 테이블에서 MarksView라는 뷰를 만듭니다. 여러 테이블에서 뷰를 생성하려면 SELECT 문에 여러 테이블을 포함하면 됩니다. 질문:

  CREATE VIEW   MarksView AS   SELECT   StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS   FROM   StudentDetails, StudentMarks   WHERE   StudentDetails.NAME = StudentMarks.NAME;>

View MarksView의 데이터를 표시하려면:

  SELECT   *   FROM   MarksView;>

산출:

출력 보기

데이터베이스의 모든 뷰 나열

다음을 사용하여 View를 나열할 수 있습니다. 전체 표 보기 진술이나 사용 information_schema 테이블 . 뷰는 단일 테이블 또는 여러 테이블에서 생성될 수 있습니다.

통사론

  USE   'database_name';   SHOW FULL   TABLES   WHERE   table_type LIKE '%VIEW';>

information_schema 사용

아파치
  SELECT   table_name   FROM   information_schema.views   WHERE   table_schema = 'database_name';  OR    SELECT   table_schema, table_name, view_definition   FROM   information_schema.views   WHERE   table_schema = 'database_name';>

SQL에서 뷰 삭제

SQL을 사용하면 기존 보기를 삭제할 수 있습니다. 다음을 사용하여 View를 삭제하거나 삭제할 수 있습니다. DROP 문 .

통사론

  DROP VIEW   view_name;>

이 예에서는 뷰를 삭제합니다. 마크뷰.

  DROP VIEW   MarksView;>

SQL의 UPDATE VIEW

보기 내의 기존 데이터를 업데이트하려면 업데이트 성명.

통사론

  UPDATE   view_name   SET   column1 = value1, column2 = value2...., columnN = valueN   WHERE   [condition];>

메모: UPDATE 문을 사용하여 모든 뷰를 업데이트할 수 있는 것은 아닙니다.

데이터에 영향을 주지 않고 뷰 정의를 업데이트하려면 뷰 생성 또는 교체 성명. 이 구문을 사용할 수 있습니다

  CREATE OR REPLACE   VIEW view_name   AS    SELECT   column1, column2, ...   FROM   table_name   WHERE   condition;>

SQL에서 뷰를 업데이트하는 규칙:

뷰를 업데이트하려면 특정 조건을 충족해야 합니다. 이 조건 중 하나라도 해당된다면 ~ 아니다 충족되면 뷰를 업데이트할 수 없습니다.

  1. 뷰를 생성하는 데 사용되는 SELECT 문에는 GROUP BY 절이나 ORDER BY 절이 포함되어서는 안 됩니다.
  2. SELECT 문에는 DISTINCT 키워드가 없어야 합니다.
  3. 뷰에는 모두 NOT NULL 값이 있어야 합니다.
  4. 중첩된 쿼리나 복잡한 쿼리를 사용하여 뷰를 생성하면 안 됩니다.
  5. 뷰는 단일 테이블에서 생성되어야 합니다. 여러 테이블을 사용하여 뷰를 생성한 경우 뷰를 업데이트할 수 없습니다.

SQL에서 뷰를 업데이트하는 다양한 사용 사례를 살펴보겠습니다. 더 나은 이해를 돕기 위해 이러한 사용 사례를 예제와 함께 다룰 것입니다.

예 1: 보기 업데이트를 통해 보기 필드 추가 또는 바꾸기

우리는 뷰 생성 또는 교체 보기에서 필드를 추가하거나 바꾸는 명령문입니다.

뷰를 업데이트하고 싶다면 마크뷰 AGE 필드를 이 뷰에 추가합니다. 학생 성적 테이블에서는 다음과 같이 할 수 있습니다.

  CREATE OR REPLACE VIEW   MarksView AS   SELECT   StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS, StudentMarks.AGE   FROM   StudentDetails, StudentMarks   WHERE   StudentDetails.NAME = StudentMarks.NAME;>

이제 MarksView에서 모든 데이터를 다음과 같이 가져오면:

  SELECT   *   FROM   MarksView;>

산출:

보기 만들기 또는 바꾸기 예

예 2: 뷰를 업데이트하여 뷰에 행 삽입

테이블에서와 동일한 방식으로 뷰에 행을 삽입할 수 있습니다. 우리는 에 집어 넣다 뷰에 행을 삽입하는 SQL 문입니다.

자바 업데이트

아래 예에서는 위에서 단일 테이블에서 뷰를 생성하는 예에서 생성한 View DetailsView에 새 행을 삽입합니다.

  INSERT INTO   DetailsView(NAME, ADDRESS) VALUES('Suresh','Gurgaon');>

지금 DetailsView에서 모든 데이터를 가져오면,

  SELECT   *   FROM   DetailsView;>

산출:

보기 예에 행 삽입

예 3: 뷰에서 행 삭제

뷰에서 행을 삭제하는 것도 테이블에서 행을 삭제하는 것만큼 간단합니다. SQL의 DELETE 문을 사용하여 뷰에서 행을 삭제할 수 있습니다. 또한 뷰에서 행을 삭제하면 먼저 실제 테이블에서 행이 삭제되고 변경 내용이 뷰에 반영됩니다.

이 예에서는 위의 행 삽입 예에서 방금 추가한 DetailsView 뷰에서 마지막 행을 삭제합니다.

  DELETE FROM   DetailsView   WHERE   NAME='Suresh';>

지금 DetailsView에서 모든 데이터를 가져오면,

  SELECT   *   FROM   DetailsView;>

산출:

보기 예에서 행 삭제

WITH CHECK OPTION 절

그만큼 체크 옵션 포함 SQL의 절은 뷰에 매우 유용한 절입니다. 업데이트 가능한 보기에 적용됩니다.

WITH CHECK OPTION 절은 CREATE VIEW 문에서 WHERE 절의 조건이 만족되지 않는 경우 데이터 수정(INSERT 또는 UPDATE 사용)을 방지하는 데 사용됩니다.

CREATE VIEW 문에서 WITH CHECK OPTION 절을 사용한 경우 UPDATE 또는 INSERT 절이 조건을 충족하지 않으면 오류가 반환됩니다.

WITH CHECK OPTION 절 예:

아래 예에서는 WITH CHECK OPTION 절을 사용하여 StudentDetails 테이블에서 View SampleView를 생성합니다.

  CREATE VIEW   SampleView AS   SELECT   S_ID, NAME   FROM   StudentDetails   WHERE   NAME IS NOT NULL   WITH CHECK OPTION  ;>

이 뷰에서 NAME 열에 Null 값이 있는 새 행을 삽입하려고 하면 NAME 열에 대한 조건이 NOT NULL인 뷰가 생성되었기 때문에 오류가 발생합니다. 예를 들어 보기가 업데이트 가능하더라도 이 보기에 대한 아래 쿼리도 유효하지 않습니다.

  INSERT INTO   SampleView(S_ID)   VALUES  (6);>

메모 : NAME 컬럼의 기본값은 없는 .

뷰의 사용

좋은 데이터베이스에는 다음과 같은 이유로 뷰가 포함되어야 합니다.

  1. 데이터 액세스 제한 – 뷰는 테이블의 사전 결정된 행 및 열 집합에 대한 액세스를 제한하여 추가 수준의 테이블 보안을 제공합니다.
  2. 데이터 복잡성 숨기기 – 뷰는 조인된 여러 테이블에 존재하는 복잡성을 숨길 수 있습니다.
  3. 사용자를 위한 명령 단순화 – 뷰를 사용하면 사용자는 실제로 조인을 수행하는 방법을 알 필요 없이 여러 테이블에서 정보를 선택할 수 있습니다.
  4. 복잡한 쿼리 저장 – 뷰는 복잡한 쿼리를 저장하는 데 사용될 수 있습니다.
  5. 열 이름 바꾸기 – 뷰의 열 수가 select 문에 지정된 열 수와 일치해야 하는 경우 기본 테이블에 영향을 주지 않고 열 이름을 바꾸는 데 뷰를 사용할 수도 있습니다. 따라서 이름을 바꾸면 기본 테이블의 열 이름을 숨기는 데 도움이 됩니다.
  6. 다중 뷰 시설 – 다양한 사용자에 대해 동일한 테이블에 다양한 뷰를 생성할 수 있습니다.

SQL 보기에 대한 주요 내용

  • SQL의 뷰는 일종의 가상 테이블입니다.
  • 뷰의 필드는 하나 또는 여러 테이블에 있을 수 있습니다.
  • CREATE VIEW 문을 사용하여 뷰를 생성하고 DROP VIEW 문을 사용하여 뷰를 삭제할 수 있습니다.
  • CREATE OR REPLACE VIEW 문을 사용하여 뷰를 업데이트할 수 있습니다.
  • WITH CHECK OPTION 절은 뷰의 필터링 조건을 만족하지 않는 새로운 행이 삽입되는 것을 방지하기 위해 사용됩니다.