--[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프로그래밍 > SQL Server 2008' 카테고리의 다른 글

32. 뷰(View)  (0) 2009.09.15
31. GroupBy  (0) 2009.09.14
29. 조인(Join)  (0) 2009.09.14
28. 명령어로 사용자생성하기  (0) 2009.09.14
27. 사용자정의함수  (0) 2009.09.14
Posted by holland14
: