japanese site
온라인강좌책메일다운로드동아리쇼핑기술지원기업정보갤러리동영상 블로그
『신개념 4단계 리눅스기술지원 시스템 공개』

※ 『무료 리눅스 배포판 배송서비스』 ※

 
부질의 (서브쿼리)
조회 : 5,295  


부질의 (서브쿼리)
부질의는 질의 내에서 SELECT 절이나 WHERE 절 등 표현식이 가능한 모든 곳에서 사용할 수 있다. 부질의가 표현식으로 사용될 경우에는 반드시 단일 컬럼을 반환해야 하지만, 표현식이 아닌 경우에는 하나 이상의 인스턴스가 반환될 수 있다. 부질의가 사용되는 경우에 따라 단일 행 부질의와 다중 행 부질의로 나뉠 수 있다.
1. 단일 행 부질의
단일 행 부질의는 하나의 컬럼을 갖는 하나의 인스턴스를 만든다. 부질의에 의해 인스턴스가 반환되지 않을 경우에 부질의 표현식은 NULL을 가진다. 만약 부질의가 두 개 이상의 인스턴스를 반환하도록 만들어진 경우에는 에러가 발생된다.
1) 예제
다음은 역대 기록 테이블을 조회하는데, 신기록을 수립한 올림픽이 개최된 국가도 함께 조회하는 예제이다. 이 예제는 표현식으로 사용된 단일 행 부질의를 보여준다. 이 예에서 부질의는 olympic 테이블에서 host_year 컬럼 값이 history 테이블의 host_year 컬럼 값과 같은 인스턴스에 대해 host_nation 값을 반환한다. 조건에 일치되는 값이 없을 경우 부질의 결과는 NULL이 표시된다.
SELECT h.host_year, (SELECT host_nation FROM olympic o WHERE o.host_year=h.host_year) as host_nation ,
h.event_code, h.score, h.unit from history h;   
=== <Result of SELECT Command in Line 1> ===
host_year host_nation  event_code  score           unit
==========================================================
2004       'Greece'      20283      '07:53.0'       'time'
2004       'Greece'      20283      '07:53.0'       'time'
2004       'Greece'      20281      '03:57.0'       'time'
2004       'Greece'      20281      '03:57.0'       'time'
2004       'Greece'      20281      '03:57.0'       'time'
2004       'Greece'      20281      '03:57.0'       'time'
2004       'Greece'      20326      '210'           'kg'
2000       'Australia'   20328      '225'           'kg'
2004       'Greece'      20331      '237.5'         'kg'
······
147 rows selected.
2. 다중 행 부질의
중다중 행 부질의는 지정된 컬럼을 갖는 하나 이상의 인스턴스를 반환한다. 다중 행 부질의 결과는 적절한 키워드(SET, MULTISET, LIST, SEQUENCE)를 사용하여 집합, 다중집합, 순차집합을 만드는데 사용될 수 있다.
1) 예제
다음은 국가 테이블에서 국가 이름과 수도 이름을 조회하되, 올림픽을 개최한 국가는 개최도시를 리스트로 묶어 함께 조회하는 예제이다. 이 예제 같은 경우는 부질의 결과를 이용하여 olympic 테이블의 host_city 컬럼 값으로 리스트를 만든다. 이 질의는 nation 인스턴스에 대해 name, capital 값과 host_nation 값을 포함하는 olympic 인스턴스의 host_city 값에 대한 집합을 반환한다. 질의 결과에서 name 값이 공집합인 경우는 제외되고, name과 같은 값을 갖는 olympic 인스턴스가 존재하지 않는 경우에는 공집합이 반환된다.
SELECT name, capital, list(SELECT host_city FROM olympic WHERE host_nation = name) FROM nation;

=== <Result of SELECT Command in Line 1> ===
name                  capital               sequence((SELECT host_city FROM olympic WHERE host_nation=name))
============================================================================================================
 'Somalia'                  'Mogadishu'          {}
 'Sri Lanka'                'Sri Jayewardenepura Kotte'  {}
 'Sao Tome & Principe'      'Sao Tome'           {}
······
 'U.S.S.R.'                  'Moscow'             {'Moscow'}
 'Uruguay'                   'Montevideo'         {}
 'United States of America'  'Washington.D.C'     {'Atlanta ', 'St. Louis', 'Los Angeles', 'Los Angeles'}
 'Uzbekistan'                'Tashkent'           {}
 'Vanuatu'                   'Port Vila'          {}
215 rows selected.
이런 형태의 다중 행 부질의 표현식은 집합 값을 갖는 표현식이 허용되는 모든 곳에서 사용할 수 있다. 단, 클래스 속성 정의에서 DEFAULT 명세 부분과 같이 집합 상수 값이 요구되는 곳에는 사용될 수 없다.

부질의 내에서 ORDER BY 절을 명시적으로 사용하지 않는 경우 다중 행 부질의 결과의 순서는 지정되지 않으므로, 순차 집합을 생성하는 다중 행 부질의는 ORDER BY 절을 사용하여 결과의 순서를 지정하여야 한다

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1633


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
큐브리드

 
   
 


『신개념 4단계 리눅스기술지원 시스템 공개』

CentOS 리눅스 전문서적 국내최초출시

 
회사소개 | 보도기사 | 채용안내 | 광고안내 | 이용약관 | 개인정보취급방침 | 책임한계와 법적고지 | 불편사항 신고하기 | 사이트맵
ㅇ 서울 : 서울특별시 강남구 노현로79길 66, 402호(역삼동,청송빌딩)  ㅇ 부산 : 부산광역시 해운대구 우동 1470 에이스하이테크21 914호
ㅇ 대표 : 1544-8128 ㅇ부산직통 : 051-744-0077 ㅇ서울직통 : 02-856-0055 ㅇ FAX : 02-6280-2663
ㅇ 사업자번호 : 128-86-68239 ㅇ 통신판매업 신고번호 : 2013-부산금정-0035호 ㅇ 개인정보책임자 : 이재석
ㅇ 상호명 : (주) 수퍼유저 ㅇ 대표자 : 박성수
Copyright ⓒ (주)수퍼유저. All rights reserved.

 아 이 디
 비밀번호
회원 가입 | 비밀번호 찾기

블로그~
 
▷ 데이타베이스
MySQL
Oracle
PostgreSQL
큐브리드
책제목
리눅스서버관리실무바이블v3.0


저자 박성수
페이지수 2,032 pages
펴낸곳(주)수퍼유저

리눅스 서버 구축 및 관리에 필요한 거의 모든 부분과 전반적인 실무 기법들을 다루고 있음
책제목
리눅스보안관리실무(2/E)


저자홍석범
페이지수 820 pages
펴낸곳(주)수퍼유저

리눅스 보안에 관련된 내용을 종합적으로 쓴 책. 저자의 명성 그대로 보안관련의 모든 내용이 그대로 담겨져 있다.