--[1] 샘플 테이블 생성
Create Table dbo.Members
(
Num Int Identity(1, 1) Not Null Primary Key, -- 일련번호
Name VarChar(25) Not Null, -- 이름
Age TinyInt Null, -- 나이
Address VarChar(100) Null -- 주소
)
Go
--[2] 예시 데이터 입력
Insert Into Members(Name, Age, Address)
Values('홍길동', 21, '서울')
Go
Insert Members Values('백두산', 100, '부산')
Go
Insert Members Values('한라산', 30, '부산')
Go
--[3] 데이터 조회(출력)
Select * From Members
Go
--[!] 하위쿼리(서브쿼리)
-- 3번인 데이터의 나이보다 큰 데이터만 출력
-- [a] 3번 레코드의 나이
Select Age From Members Where Num = 3
-- [b] 3번 레코드의 나이보다 큰 데이터 출력
Select * From Members Where Age > 30
-- [a] 3번 레코드의 나이
Declare @intAge Int
Select @intAge = Age From Members Where Num = 3
-- [b] 3번 레코드의 나이보다 큰 데이터 출력
Select * From Members Where Age > @intAge
--[!] 최종 : 서브쿼리는 기본적으로 스칼라값이 반환되어져야 함
Select * From Members
Where Age > (Select Age From Members Where Num = 3)
Go
-- 나이가 평균 이하인 사람 출력
Select * From Members Where Age <= (Select Avg(Age) From Members)
Go
-- 주소가 '부산'인 사람의 나이보다 크거나 같은 데이터 출력
Select * From Members
Where Age >= (Select Age From Members Where Address = '부산')
Go -- 에러
-- Scalar값이 아닌 다중 레코드 값은 In 구문 사용
Select * From Members
Where Age In (Select Age From Members Where Address = '부산')
Go
-- 위 구문을 개선 : Or(Any, Some) 연산, And(All) 연산
Select * From Members
Where
Age >= Any(Select Age From Members Where Address = '부산')
Go -- 30, 100
Select * From Members
Where
Age >= All(Select Age From Members Where Address = '부산')
Go -- 100
--[6] 테이블 삭제
Drop Table dbo.Members
Go
'.Net Project > WindowServer2008' 카테고리의 다른 글
07장 조인(Join) (0) | 2009.09.14 |
---|---|
06장 연산자 (0) | 2009.09.14 |
4장 사용자 생성 (0) | 2009.09.14 |
3장 문자열 관련함수 (0) | 2009.09.14 |
2장 테이터베이스 이름 변경 (0) | 2009.09.14 |