Programming/Microsoft SQL Server
Select *
From Person.Person

Person.Person 테이블의 모든행과 열값을 가져오도록 합니다.


Select *
From Person.Person
Where PersonType = 'IN'

Person.Person 테이블의 PersonType 열값이 'IN'인것만 가져오도록 합니다.


Where 이하 조건문에서는 '='연산자 이외에 다음의 다양한 비교 연산자를 사용할 수 있습니다.

 조건  설명
 >  크다.
 <  작다.
 >=  크거나 같다.
 <=  작거나 같다.
 <>, !=  같지않다.
 !>  크지않다.
 !<  

Select *
From Person.Person
Where PersonType = 'IN'
And FirstName Like '%Andy%'

PersonType이 'IN'이며 FirstName중에 'Andy'라는 문자열값을 포함하고 있는것만 조회합니다.


Like는 문자열관련 비교 연산자에 해당하며 지정한 문자 혹은 문자열을 조건으로 데이터를 조회하게 됩니다. 반면 Not Like는 Like와 반대로 지정한 문자열을 포함하지 않는것만을 조회대상으로 합니다.

Like에서 비교대상 문자열을 지정하는 경우, 아래 특수문자를 사용하여 좀더 유연한 조회조건을 지정할 수도 있습니다.

(1) % 
다른 문자열을 대체합니다. 예를 들어 '%Korea' 라고 쓰는경우 앞의 문자열은 상관없이 끝문자열이 'Korea'로 끝나는 것만을 조회대상으로 합니다. 반면 'Korea%'라고 하는 경우 끝 문자열은 상관없이 시작문자열이 'Korea'인것만을 조회 대상으로 합니다.

결국 %를 조건으로 하고자 하는 문자열의 앞뒤에 모두 사용할 경우 전체문자열 중에서 'Korea'라는 문자열을 포함하는 것만 조회대상이 됩니다.

(2) _
%는 문자열 단위의 조회조건을 나타내지만 _ 는 한문자 만을 대체할 수 있습니다.

예를 들어 '_Korea' 이면 'Korea'로 끝나는 6자의 문자열만을 조건으로 하고 'Korea_'이면 'Korea'로 시작하는 6자의 문자열만을 조회대상으로 합게 됩니다.

물론 '_Korea_'또한 'Korea'를 포함하고 있는 7문자의 문자열을 조회 대상으로 보게 됩니다.

(3) []
일부분의 범위만을 조회대상으로 하고자 경우 []를 쓸 수 있습니다.

'[a-c]Computer'라고 하면 앞문자가 a부터 c까지이며 Computer로 끝나는 문자열만을 대상으로 한 것으로서 aComputer, bComputer, cComputer가 조건이 됩니다.

'[a,c]Computer'는 앞문자가 a와 c이며 Computer로 끝나는 문자열만 해당하는 것으로 aComputer, cComputer가 조회 대상이 됩니다.

반면 []안에 ^를 지정할경우 지정한 문자에 포함되지 않는 것만([]의 반대개념)을 조건으로 보게 됩니다.

Select *
From Person.Person
Where PersonType = 'IN'
Or EmailPromotion = 0

PersonType이 'IN'이거나 EmailPromotion이 0인것만 조회합니다.


Where 조건식에는 And 또는 Or를 통해 조건식에서 참, 거짓을 적용할 수도 있습니다.

(1) And
지정한 두 조건이 모두 참이여야만 합니다. 예를 들어 a = 0 And b = 0 라고 했을 경우 a가 0이고 b가 0인것만을 조회대상으로 합니다.

(2) Or
지정한 두 조건중에서 하나만 참이면 됩니다. 예를 들어 a = 0 or b = 0 라고 했을 경우 a가 0이거나 b가 0인것만을 조회대상으로 하게 됩니다.

참고:
Not 조건식은 부정의 의미로서 해당 조건이 거짓에 대항하는 경우입니다.
예를 들어 Not PersonType = 'IN' And FirstName Like '%Andy%' 이라는 조건식이 지정되는 경우  PersonType이 IN이 아니고 FistName에 Andy문자열이 포함된것만을 조회한다는 의미가 됩니다.

Select *
From Person.Person
Where PersonType In ('IN', 'EM')

PersonType이 'IN'이거나 'EM'인것만 조회합니다.


In은 ()안에서 ,로 구분된 값에 해당하는 것만을 조회 대상으로 합니다. 이때 In은 포함하는 것을 Not In은 포함하지 않는 것을 의미합니다.

Select *
From Person.Person
Where BusinessEntityID BetWeen 10 And 20

BusinessEntityID값이 10에서 20까지인것만을 조회합니다.


BetWeen은 지정된 범위안에 해당하는 모든 열을 조회 대상으로 합니다. 그래서 <1-6>에서 쓰인 BetWeen조건은 Where BusinessEntityID >= 10 And BusinessEntityID <= 20과 같은 결과를 가져오게 됩니다.

또한 Not BetWeen은 지정된 범위안에 포함되지 않는 경우에 해당합니다.

Select *
From Person.Person
Where Title Is Null

Title열값이 Null인것만을 조회합니다.


Null이라고 하는것은 아무것도 없는 상태를 의미합니다. 이것은 0 혹은 공백과는 완전히 다른 것으로서 이들과 혼동하지 않도록 주의하십시오.

Null은 그 특징에 따라 일반 연산자로는 Null을 구분할 수 없습니다. 그래서 Is Null과 Is Not Null등의 Null전용 연산자를 따로 써야 합니다.(Is Null은 Null인것만 Is Not Null은 Null이 아닌것만을 조회대상으로 합니다.)

참고:
Set Ansi_Nulls Off 명령을 통해 Ansi_Nulls를 Off시키면 Null을 Is Null이나 Is Not Null이 아닌 다른 일반연산자(= 이나 <> 등)를 통해서도 조회가 가능해 집니다.(그리 권장하지는 않습니다.)

Select DepartmentID, Name
From HumanResources.Department

HumanResources.Department Table에서 DepartmentID와 Name열만을 조회합니다.


조회하고자 하는 Table의 모든열을 가져오려면 * 를 사용하고 열의 일부분만 가져오려면 해당 열 이름을 ,로 구분지어 지정하면 됩니다.

Select DepartmentID, Name
From HumanResources.Department
Order By DepartmentID

HumanResources.Department Table에서 DepartmentID와 Name열만을 조회하되 DepartmentID열값의 순으로 정렬합니다.


Order By는 지정한 열을 기준으로 데이터를 정렬하여 출력하도록 합니다.

만일 데이터를 오름차순으로 정렬하고자 하신다면 "Orde By [정렬기준열이름] Asc" 로 하고 내림차순으로 하고자 하신다면 "Orde By [정렬기준열이름] Desc"처름 사용하시면 됩니다.(기본값 Asc)

참고:
정렬기준열값에 Null이 있는경우 가장 작은 값으로 처리합니다.

Select DepartmentID, Name As '이름'
From HumanResources.Department

Name열을 조회할때 열 이름을 '이름'으로 출력합니다.

 

이는 특정 컬럼에 별칭을 지정한 것으로 As는 있어도 되고 없어도 됩니다. 약간 다른 방법으로 별칭 = 열이름 형식과 같이 지정할 수도 있습니다.

 

Select 이름 = [Name]
From HumanResources.Department;

 

Select DepartmentID, 'Name : ' + Name
From HumanResources.Department


HumanResources.Department Table조회시 Name열값 앞에 "Name : "라는 문자열을 더해서 출력하도록 합니다.


Select BusinessEntityID, Stuff(NationalIDNumber, 3, 0, '-')
From HumanResources.Employee


Stuff함수를 쓰면 조회하고자 하는 열값 중간에 다른 문자열을 삽입하여 조회할 수 있습니다.

Stuff(대상열 혹은 문자열, 삽입위치(삭제위치), 삭제위치에서 부터 삭제할 문자수, 삽입위치에서 부터 삽입할 문자 혹은 문자열)

'Programming > Microsoft SQL Server' 카테고리의 다른 글

[SQL Server] - Sample Database 설치  (0) 2010.05.06
[SQL] 주석과 식별자  (0) 2010.05.04
[SQL] Select  (0) 2010.05.03
[SQL] 시간관련 형식 변환  (0) 2010.04.30
[SQL] Table 조회시 합계 표시하기  (0) 2010.04.26
[SQL] 하위 Query(Sub Query)  (0) 2010.04.21
0 0