PostgreSQL의 뷰 소개

Bilal Shahid 2023년6월20일
  1. PostgreSQL의 보기
  2. 보기 만들기
  3. 보기 표시
  4. 보기 업데이트
  5. 보기 삭제
PostgreSQL의 뷰 소개

유용하긴 하지만 사용자는 때때로 PostgreSQL의 뷰를 처리하는 데 문제가 있습니다. 그러나 더 이상 문제가 발생하지 않습니다. 먼저 PostgreSQL에서 보기를 생성, 삭제 및 업데이트하기 위해 알아야 할 모든 것을 설명합니다.

PostgreSQL의 보기

보기는 데이터베이스의 다른 테이블처럼 보입니다. 그러나 차이점은 기존 데이터베이스의 내용을 추출하여 해당 데이터만 사용자에게 표시할 수 있다는 것입니다.

결과적으로 민감하거나 관련 없는 정보는 원본 데이터베이스에 남아 대중에게 숨겨집니다.

보기 만들기

뷰를 생성하는 것이 까다로워 보일 수 있지만 PostgreSQL에서는 매우 간단합니다. 이를 위해서는 쿼리를 사용하여 적용할 수 있는 조건과 함께 CREATE VIEW 문을 사용해야 합니다.

다음 스키마를 고려하십시오.

CREATE TABLE users(
    user_id int PRIMARY KEY,
    user_name VARCHAR (100) UNIQUE,
    email VARCHAR (300) NOT NULL
);

INSERT INTO users(user_id, user_name, email)
VALUES (1, 'name', 'email');

user_iduser_name만 표시되는 테이블을 사용자에게 표시하려고 한다고 가정해 보겠습니다. 이를 달성하기 위해 아래 코드를 사용할 수 있습니다.

CREATE VIEW view_name AS
SELECT user_id, user_name
FROM users;

users 테이블에서 user_iduser_name만 표시하는 보기를 생성합니다. view_name을 사용하여 데이터를 검색하려면 다음과 같이 SELECT 명령을 사용해야 합니다.

select * from view_name;

출력:

 user_id | user_name 
---------+-----------
       1 | name

원하는 경우 추가 조건을 추가할 수도 있습니다. 예를 들어 특정 사용자를 표시하는 보기만 원하는 경우 다음을 시도할 수 있습니다.

CREATE VIEW view_name AS
SELECT user_id, user_name
FROM users
WHERE user_id= 123;

이 보기는 user_id123인 사용자로만 구성됩니다.

참고: PostgreSQL에 해당 테이블이 없으면 뷰를 생성할 수 없습니다. 항상 보기 전에 테이블을 만듭니다.

보기 표시

보기를 표시하는 것은 보기를 만드는 것만큼 간단합니다. 테이블을 보고 싶을 때 종종 다음 구문을 사용합니다.

SELECT * FROM users;

같은 방식으로 보기를 표시하려는 경우 유사한 구문을 사용합니다.

SELECT * FROM view_name;

참고: 생성하는 동안 테이블 이름과 마찬가지로 각 뷰 이름이 고유한지 확인하십시오.

보기의 코드 표시

때때로 큰 데이터베이스나 긴 코드 라인에서 뷰의 코드를 잃어버리고 액세스할 수 없는 경향이 있습니다. 그러나 PostgreSQL에는 여러 줄을 스크롤하지 않고도 코드를 빠르게 표시할 수 있는 명령이 있습니다.

이를 수행할 수 있는 몇 가지 방법은 다음과 같습니다.

  • SELECT 절 - 대부분의 사용자가 SELECT 절에 익숙하기 때문에 보다 간단한 방법 중 하나입니다. 사용 방법은 다음과 같습니다.

    SELECT definition FROM pg_views
    WHERE viewname = 'view_name';
    

    일부 버전은 다음도 허용합니다.

    SELECT view_definition FROM information_schema.views
    WHERE table_name = 'view_name';
    

    이 명령은 보기를 만드는 데 사용된 원래 코드의 재작성된 버전을 제공한다는 점에 유의해야 합니다.

  • pg_get_viewdef - 이 명령은 잘 작동하지만 많은 사용자가 구현하기 어렵다는 것을 알게 되었습니다. 이것이 당신에게도 해당되는 시나리오라면 다음과 같이 사용해 보십시오.

    SELECT pg_get_viewdef('view_name', true);
    

    또 다른 방법은 이름을 regclass로 캐스팅하는 것입니다. 사용할 수 있는 몇 가지 방법은 다음과 같습니다.

    SELECT pg_get_viewdef('view_name'::regclass);
    
  • \d+ viewname - 위의 명령 중 일부는 잘 작동하지만 기억하기 약간 까다로울 수 있습니다. 빠르고 효과적인 것을 선호한다면 이 명령을 대신 사용해 보십시오.

    이와 같은 더 많은 기능을 탐색하려면 \?를 입력해 보십시오. 명령줄에서. 그런 다음 PostgreSQL에서 더 많은 기능을 발견하기 위해 사용할 수 있는 일련의 명령을 표시합니다.

보기 업데이트

뷰의 이름을 알면 생성에 사용된 원래 코드에 액세스할 수 없더라도 계속 업데이트할 수 있습니다.

UPDATE 절을 사용하여 달성할 수 있습니다. 그러나 먼저 앞에서 설명한 대로 기존 테이블을 사용하여 뷰를 만듭니다. 보기의 이름을 기억하지 않으면 액세스할 수 없습니다. 보기를 업데이트하려면 다음을 시도하십시오.

CREATE OR REPLACE VIEW view_name AS 
SELECT * FROM name_of_the_table;

이 코드의 마지막 줄을 원하는 보기를 생성하는 데 도움이 되는 쿼리로 바꿀 수 있습니다. 보기의 이름을 변경하려면 다음 코드를 사용하면 됩니다.

ALTER VIEW view_name
RENAME TO new_name;

기존 뷰를 삭제하고 필요한 변경 사항을 적용하여 다시 생성하여 뷰를 업데이트할 수도 있습니다. 삭제 과정은 아래에 설명되어 있습니다.

보기 삭제

보기를 삭제하려는 이유는 여러 가지가 있습니다. 예를 들어 업데이트가 너무 많아서 다시 하는 것이 더 낫거나 더 이상 필요하지 않을 수 있습니다.

원인이 무엇이든 PostgreSQL은 보기를 삭제하는 작업을 매우 간단하게 만들었습니다. 다음 코드를 사용하여 그렇게 할 수 있습니다.

DROP VIEW IF EXISTS view_name;

여기서 IF EXISTS 절은 필수는 아니지만 권장됩니다. 보기 이름이 존재하지 않는 경우에도 코드를 실행할 수 있습니다.

그러나 긴 코드에 뷰 이름을 나열할 때 오류가 발생하면 삭제를 방지하고 데이터베이스에 오류가 발생할 수 있으므로 문제가 될 수 있습니다. 따라서 사용은 작업의 특성에 따라 다릅니다.

생성, 업데이트, 삭제, 표시 및 생성 코드 액세스와 관련하여 PostgreSQL에서 뷰를 사용하기 위해 알아야 할 모든 것입니다. 이제 기능을 깊이 이해하고 쉽게 사용할 수 있기를 바랍니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub