PostgreSQL의 이중에서 선택

Bilal Shahid 2024년2월15일
  1. dual 테이블 개요
  2. dual 테이블 소개
  3. PostgreSQL에서 dual 테이블의 중요성
  4. PostgreSQL에서 dual 테이블 생성
PostgreSQL의 이중에서 선택

오늘의 튜토리얼은 이중 테이블, PostgreSQL에서의 중요성 및 PostgreSQL에서 이중에서 선택하는 방법에 대해 교육합니다.

dual 테이블 개요

데이터베이스 시스템에서는 때때로 테이블에 없는 데이터를 선택하기 위해 일부 쿼리를 사용해야 합니다. 예를 들어 다음 쿼리를 실행하여 현재 날짜와 시간을 검색할 수 있습니다.

select now();

postgresql에서 이중에서 선택 - 출력 1

이 쿼리는 테이블에서 데이터를 선택하지 않기 때문에 FROM 키워드 없이 SELECT 문을 사용합니다. 이 의사 열 선택은 PostgreSQL에서 유효한 가능성입니다.

그러나 Oracle과 같은 일부 데이터베이스 관리 시스템에서는 이 구문을 허용하지 않습니다. 대신 SELECT 문에 FROM 절이 있어야 합니다.

그렇다면 위와 같은 기본 명령문을 실행할 때 오라클에서 무엇을 해야 할까요? 우리는 dual 테이블을 사용합니다.

dual 테이블 소개

이중 테이블은 위에서 설명한 문제를 해결하는 데 사용되는 Oracle의 더미 테이블입니다.

열 이름이 dummy이고 데이터 유형 VARCHAR2(1)인 행에 저장된 x 값이 있는 하나의 행과 열만 있습니다.

Oracle의 dual 테이블을 살펴보겠습니다. SQL에서 간단한 계산을 수행한다고 가정합니다. 다음과 같은 방법으로 할 수 있습니다.

select 2*2;

그러나 Oracle에서 이 쿼리를 실행하면 ORA-00923: 예상 위치에서 FROM 키워드를 찾을 수 없음이라는 오류가 표시됩니다. 이는 Oracle에서 SELECT 문에 FROM 절과 테이블을 지정해야 하기 때문입니다.

따라서 오류를 해결하기 위해 다음 쿼리를 실행합니다.

select 2*2 as result from dual;

dual이 더미 테이블로 사용되어 오류를 제거합니다.

PostgreSQL에서는 SELECT 문에 FROM 절을 반드시 포함해야 한다는 제한이 없습니다. 따라서 오류 없이 다음 명령문을 실행할 수 있습니다.

select 2*2 as result;

postgresql에서 이중에서 선택 - 출력 2

그렇다면 PostgreSQL에서 dual 테이블에 대한 대안을 살펴봐야 하는 이유는 무엇입니까? 이 질문에 대한 답변은 아래에 있습니다.

PostgreSQL에서 dual 테이블의 중요성

PostgreSQL 자체에는 이중 테이블이 필요하지 않지만 데이터베이스를 PostgreSQL에서 Oracle로 또는 그 반대로 포팅하는 동안 문제가 발생할 수 있습니다.

조직은 확장성 문제 및 현대화로 인해 한 데이터베이스 관리 시스템에서 다른 데이터베이스로 데이터베이스를 마이그레이션하려고 할 수 있습니다. 하지만 이를 위해서는 두 플랫폼의 호환성도 고려해야 합니다.

호환성 문제 중 하나는 Oracle에는 있지만 PostgreSQL에는 없는 dual 테이블입니다. 따라서 코드가 한 플랫폼에서 다른 플랫폼으로 마이그레이션되면 오류가 발생합니다.

예를 들어 다음 코드는 Oracle에서 완벽하게 실행되지만 PostgreSQL에서는 오류가 발생합니다.

select 2*2 as result from dual;

postgresql에서 이중에서 선택 - 출력 3

PostgreSQL은 SELECT 문에서 FROM 키워드의 생략을 허용하므로 dual 테이블이 존재하지 않기 때문입니다. 따라서 선택하면 오류가 발생합니다.

마찬가지로 PostgreSQL에서 완벽하게 작동하는 간단한 select 2*2 쿼리는 Oracle에서 실행될 때 잘못된 것으로 간주됩니다. 앞에서 설명했듯이 SELECT 문에 FROM 절을 포함하는 것은 Oracle의 요구 사항입니다.

따라서 이러한 플랫폼 간의 데이터베이스 마이그레이션을 호환 가능하게 하려면 PostgreSQL에서 몇 가지 대안을 찾아야 합니다. 그러나 솔루션은 간단합니다. PostgreSQL에는 dual 테이블이 없기 때문에 하나를 만들 수 있습니다.

PostgreSQL에서 dual 테이블 생성

예, 이 호환성 문제에 대한 해결책은 PostgreSQL 데이터베이스에서 Oracle의 것과 마찬가지로 dual 테이블을 생성하는 것만큼 간단합니다. 다음과 같은 방법으로 이를 수행할 수 있습니다.

CREATE TABLE public.dual ( dummy varchar);

varchar 데이터 유형의 dummy 열을 포함했습니다. 이제 Oracle의 dual 테이블과 유사한 더미 값으로 채울 것입니다.

insert into dual values ('X');

이전에 PostgreSQL에서 오류가 발생했던 다음 쿼리를 실행하여 이것이 작동하는지 테스트해 보겠습니다.

select 2*2 as result from dual;

postgresql에서 이중에서 선택 - 출력 2

지금 작동 중입니다! PostgreSQL과 Oracle 간의 dual 호환성 문제에서 선택 항목을 제거합니다.

또는 PostgreSQL에서 테이블 대신 이중 보기를 만들 수 있습니다. 다음과 같은 방법으로 수행됩니다.

CREATE VIEW public.dual AS 
SELECT 'X'::varchar AS dummy;

여기서 dual 보기의 정의에서 Oracle의 dual 테이블에 있는 것과 같은 더미 varchar 변수를 선택합니다. 다음 쿼리를 다시 실행하여 이것이 작동하는지 확인하십시오.

select 2*2 as result from dual;

postgresql에서 이중에서 선택 - 출력 2

예상대로 이것도 작동합니다! 따라서 Oracle의 dual 테이블처럼 작동하는 PostgreSQL에서 테이블 또는 뷰를 생성할 수 있습니다.

모든 경우에 작동하는지 알아보기 위해 PostgreSQL에서 이중 테이블을 사용하여 의사 열을 선택하는 다른 예를 살펴보겠습니다.

다음 예에서는 다음 쿼리를 사용하여 현재 날짜와 시간을 선택하려고 합니다.

select now() from dual;

다음 출력을 제공합니다.

postgresql에서 이중에서 선택 - 출력 1

다음과 같은 방법으로 데이터베이스의 현재 사용자를 선택할 수도 있습니다.

select user from dual;

다음 출력을 제공합니다.

postgresql에서 이중에서 선택 - 출력 4

그래서 우리는 FROM 절을 지정해야 하는 Oracle과 같은 일부 데이터베이스 관리 시스템에서 dual 테이블이 필요하다고 논의했습니다.

호환성 문제에 대응하기 위해 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