사람들이이 표를 언급하는 것을 들었고 그것이 무엇인지 확실하지 않았습니다.
사람들이이 표를 언급하는 것을 들었고 그것이 무엇인지 확실하지 않았습니다.
답변:
실제로 데이터에 관심이 없지만 select 문에서 일부 시스템 함수의 결과를 원할 때 선택하는 데 사용되는 단일 레코드가있는 일종의 더미 테이블입니다.
예 : select sysdate from dual;
에서 위키 백과
역사
DUAL 테이블은 Oracle Corporation의 Chuck Weiss가 내부보기에 참여하기위한 테이블을 제공하기 위해 작성되었습니다.
Oracle Data Dictionary에서 DUAL 테이블을 기본 개체로 만들었습니다. 그 자체로 볼 수는 없었지만 쿼리가 예상되는 뷰 내부에서 사용되었습니다. 아이디어는 DUAL 테이블에 조인을 수행하고 결과를 테이블의 각 행마다 두 개의 행을 작성할 수 있다는 것입니다. 그런 다음 GROUP BY를 사용하여 결과 조인을 요약하여 DATA 익스텐트 및 INDEX 익스텐트의 스토리지 양을 표시 할 수 있습니다. DUAL이라는 이름은 단 하나의 행에서 한 쌍의 행을 작성하는 프로세스에 적합 해 보였습니다. 1
위에서 명확하지 않을 수도 있지만 원래 DUAL 테이블에는 두 개의 행이 있으므로 이름이 있습니다. 요즘에는 단 하나의 행만 있습니다.
최적화
DUAL은 원래 테이블이었으며 데이터베이스 엔진은 DUAL에서 선택할 때 테이블에서 디스크 IO를 수행합니다. 디스크 블록은 일반적으로 메모리에 이미 캐시되어 있으므로이 디스크 IO는 일반적으로 논리적 IO (물리적 디스크 액세스를 포함하지 않음)였습니다. 이로 인해 DUAL 테이블에 대해 많은 논리 IO가 발생했습니다.
이후 버전의 Oracle 데이터베이스가 최적화되었으며 DUAL 테이블이 실제로 존재하더라도 데이터베이스는 더 이상 DUAL 테이블에서 물리적 또는 논리적 IO를 수행하지 않습니다.
이 위키 백과 기사가 명확하게 도움이 될 것 같습니다.
http://en.wikipedia.org/wiki/DUAL_table
DUAL 테이블은 모든 Oracle 데이터베이스 설치에 기본적으로 존재하는 특수한 1 행 테이블입니다. SYSDATE 또는 USER와 같은 의사 열을 선택하는 데 적합합니다. 테이블에 값이 "X"인 DUMMY라는 단일 VARCHAR2 (1) 열이 있습니다.
유사 테이블의 종류에 대해 명령을 실행하고 sysdate와 같은 결과를 얻을 수 있습니다. 또한 Oracle이 작동하는지 확인하고 SQL 구문을 확인하는 등의 작업을 수행합니다.
듀얼에 대한 더 많은 사실 ....
http://asktom.oracle.com/pls/asktom/f?p=100:11:0:::::P11_QUESTION_ID:1562813956388
여기 스릴 넘치는 실험과 Tom의 스릴 넘치는 설명
DUAL 테이블은 모든 Oracle 데이터베이스 설치에 기본적으로 존재하는 특수한 1 행 테이블입니다. SYSDATE 또는 USER와 같은 의사 열을 선택하는 데 사용하기에 적합합니다.
테이블에 값이 "X"인 DUMMY라는 단일 VARCHAR2 (1) 열이 있습니다.
http://en.wikipedia.org/wiki/DUAL_table 에서 모든 내용을 읽을 수 있습니다 .
그 리턴 1 빈 행에 넣을 객체입니다. 예를 들어 : 이중에서 1을 선택하십시오. 1을 반환
이중에서 21 + 44를 선택하십시오. 65를 반환
이중에서 [sequence] .nextval을 선택하십시오. 시퀀스에서 다음 값을 반환합니다.
DUAL 주로 시퀀스에서 다음 숫자를 얻는 데 사용했습니다.
구문 : SELECT 'sequence_name'. NEXTVAL FROM DUAL
이것은 하나의 행에 하나의 열 값 (NEXTVAL 열 이름)을 반환합니다.
필요한 또 다른 상황 select ... from dual
은 내장 DBMS_METADATA.GET_DDL
함수를 사용하여 다른 데이터베이스 객체 (예 : TABLE, FUNCTION, TRIGGER, PACKAGE)에 대한 코드 (데이터 정의)를 검색하려는 경우입니다 .
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;
오늘날 IDE는 테이블의 DDL을 볼 수있는 기능을 제공하지만 SQL Plus와 같은 간단한 환경에서는 이것이 매우 유용 할 수 있습니다.
편집하다
보다 일반적인 상황 : 기본적으로 표준 SQL 문 내에서 PL / SQL 프로 시저를 사용해야하거나 명령 줄에서 프로 시저를 호출하려는 경우 :
select my_function(<input_params>) from dual;
두 조리법은 Josh Juneau와 Matt Arena의 'Oracle PL / SQL Recipes'책에서 발췌 한 것입니다.