SQL Server / 연산자 / 비교 연산자, 논리 연산자

예제로 사용한 데이터베이스는 AdventureWorks이다.

같다

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10인 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID = 10
;

같지 않다

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 작거나 큰, 즉 같지 않은 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID <> 10
;
  • <> 대신 !=를 사용해도 된다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID != 10
;

크다

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 큰 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID > 10
;

크거나 같다 / 작지 않다

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 크거나 같은 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID >= 10
;
  • 크거나 같은 것은 작지 않은 것이므로 >= 대신 !<를 사용해도 된다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID !< 10
;

작다

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 작은 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID < 10
;

작거나 같다 / 크지 않다

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 작거나 같은 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID <= 10
;
  • 작거나 같은 것은 크지 않은 것이므로 <= 대신 !>를 사용해도 된다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID !> 10
;

AND / OR

여러 조건에 대한 비교를 하고 싶다면 AND나 OR를 사용한다. AND는 모든 조건을 만족하는 것, OR는 적어도 하나를 만족하는 것을 찾는다.

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 크거나 같고 20보다 작거나 같은 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID >= 10
  and BusinessEntityID <= 20
;
  • HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 작거나 20보다 큰 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID < 10
  or BusinessEntityID > 20
;

조건에 괄호가 있으면 괄호 안의 조건을 먼저 체크한다.

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10 이상 20 이하 또는 100인 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  ( BusinessEntityID >= 10 and BusinessEntityID <= 20 )
  or BusinessEntityID = 100
;

BETWEEN

BETWEEN으로 두 값 사이의 데이터를 추출할 수 있다.

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 크거나 같고 20보다 작거나 같은 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID between 10 and 20
;
  • 즉, 아래와 같다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID >= 10
  and BusinessEntityID <= 20
;

IN / NOT IN

IN으로 적어도 하나와 일치하는 데이터를 추출할 수 있다.

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10 또는 20 또는 30인 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID in ( 10, 20, 30 )
;
  • 이는 다음과 같이 할 수도 있다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID = 10
  or BusinessEntityID = 20
  or BusinessEntityID = 30  
;

NOT IN으로 일치하지 않는 데이터를 추출할 수 있다.

  • HumanResources.Employee 테이블에서 BusinessEntityID가 10이 아니고, 20이 아니고, 30이 아닌 데이터를 출력한다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID not in ( 10, 20, 30 )
;
  • 이는 다음과 같이 할 수도 있다.
select
  *
from HumanResources.Employee
where
  BusinessEntityID <> 10
  and BusinessEntityID <> 20
  and BusinessEntityID <> 30  
;

데이터 형식이 문자열, 날짜인 경우

데이터 형식이 문자열 또는 날짜인 경우 사전식 배열순으로 대소를 정한다. 즉 A는 B보다 작다.

  • HumanResources.Employee 테이블에서 HireDate가 2008-01-06보다 크거나 같은, 즉 2008-01-06 이후에 고용된 사람의 데이터를 출력한다.
select
  *
from HumanResources.Employee
where 
  HireDate >= '2008-01-06'
order by HireDate 
;
  • HumanResources.Employee 테이블에서 JobTitle이 HireDate가 buyer보다 작은, 즉 사전식으로 배열했을 때 buyer보다 앞에 있는 사람의 데이터를 출력한다.
select
  *
from HumanResources.Employee
where 
  JobTitle < 'buyer'
order by JobTitle 
;

 

같은 카테고리의 다른 글
SQL Server / SSMS / 테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함 설정 변경하는 방법

SQL Server / SSMS / 테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함 설정 변경하는 방법

SSMS로 테이블 작업을 할 때 다음과 같은 메시지와 함께 저장이 되지 않는 경우가 있다. 변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야 합니다. 다시 만들 수 없는 테이블을 변경했거나 옵션을 설정했습니다. 테이블 열의 순서를 변경하는 등 특정 ...

SQL Server / Query / SELECT / 데이터 조회

SQL Server / Query / SELECT / 데이터 조회

예제로 사용한 데이터베이스는 AdventureWorks이다. SELECT로 원하는 데이터를 조회한다. SELECT FROM 기본 SELECT 뒤에는 조회할 열 이름을, FROM 뒤에는 조회할 테이블 이름을 입력한다. 모든 열을 조회한다면 *를 사용한다. HumanResources.Employee 테이블의 모든 열을 조회한다. select * from HumanResources.Employee ; HumanResources.Employee 테이블에서 BusinessEntityID, JobTitle, BirthDate, HireDate를 조회한다. select BusinessEntityID, JobTitle, BirthDate, HireDate from HumanResources.Employee ; TOP TOP으로 조회 개수를 정한다. 상위 10개를 ...

SQL Server / 테이블 / 만들기, 삭제하기, 수정하기, 조회하기

SQL Server / 테이블 / 만들기, 삭제하기, 수정하기, 조회하기

테이블 만들기 client 테이블을 만든다. 열이 하나도 없으면 만들어지지 않으므로, 적어도 하나의 열은 같이 만들어야 한다. create table client ( id int ); 테이블 삭제하기 client 테이블을 삭제한다. drop table client; 테이블 이름 변경하기 테이블 client의 이름을 account로 변경한다. sp_rename client, account; 테이블 목록 조회하기 방법 1 select * from information_schema.tables; 방법 2 execute sp_tables @table_type = "'table'"; SSMS 테이블 만들기 데이터베이스를 확장하고 을 선택한 다음 ...

SQL Server / SSMS / 탭 설정하는 방법

SQL Server / SSMS / 탭 설정하는 방법

SSMS의 텍스트 에디터의 기본 탭 크기는 4이다. 만약 탭 크기를 변경하고 싶다면 을 열고, 텍스트 편집기 > 모든 언어 > 탭 으로 이동하여, 탭 크기의 수를 조정한다. 그리고 이에 맞게 들여쓰기도 같이 조정한다. 개인적으로 선호하는 설정은 탭 크기 2에 공백 삽입.

SQL Server / SSMS / 도움말 추가하는 방법

SQL Server / SSMS / 도움말 추가하는 방법

SQL Server에 관한 많은 자료가 온라인에 있지만, 웹에서 검색하는 것이 불편하거나 불가능할 수 있다. 그런 경우 SSM에 도움말을 추가하여 쉽게 정보를 얻을 수 있다. 기본 설치를 했다면 도움말이 전혀 없으므로, 수동으로 추가해야 한다. SSMS를 실행하고 를 클릭한다. 추가하려는 도움말을 선택한다. 선택한 도움말을 다운로드할 때 필요한 디스크 용량은 오른쪽 ...

SQL Server / 포트 변경하는 방법

SQL Server / 포트 변경하는 방법

SQL Server의 기본 포트는 1433이다. 보안을 비롯하여 여러 가지 이유로 포트를 변경해야 할 경우가 있다. SQL Server의 포트를 1433에서 다른 것으로 변경하는 방법은 다음과 같다. 를 연다. 에서 인스턴스를 선택한다. 을 클릭한다. 의 TCP 포트를 원하는 것으로 변경한다. 또는 ...

SQL Server / 샘플 데이터베이스 AdventureWorks 설치하는 방법

SQL Server / 샘플 데이터베이스 AdventureWorks 설치하는 방법

만약 공부에 필요한 샘플 데이터베이스가 필요하다면 Micrososft에서 제공하는 AdventureWorks를 사용하자. AdventureWorks 샘플 데이터베이스 페이지에 접속하여 백업 파일을 다운로드한다. AdventureWorks는 OLTP 데이터베이스, AdventureWorksDW는 OLAP 데이터베이스, AdventureWorksLT는 AdventureWorks의 경량 및 축소 버전이다. 디스크 공간이 충분하다면 AdventureWorks와 AdventureWorksDW를 설치하자. SSMS에서 를 선택하고... 마우스 우클릭 후 을 클릭한다. 를 선택하고, 찾아보기 아이콘을 클릭한 후... 를 클릭하고... 다운로드한 파일을 선택하고 을 클릭한다. 을 ...

SQL Server / 논리 연산자 / IN, NOT IN

SQL Server / 논리 연산자 / IN, NOT IN

예제로 사용한 데이터베이스는 AdventureWorks이다. IN 다음은 Person.Person 테이블에서 FirstName, MiddleName, LastName을 10개 추출하는 쿼리이다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person 만약 FirstName이 Syed 또는 Sam 또는 John인 사람을 추출하고 싶다면 아래처럼 쿼리한다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person WHERE FirstName IN ( 'Syed', 'Sam', 'John' ) 물론 아래와 같이 해도 된다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person WHERE FirstName ...

SQL Server / 열 / 만들기, 삭제하기, 수정하기, 조회하기

열 정보 조회하기 방법 1 client 테이블의 열의 모든 정보를 조회한다. select * from information_schema.columns where table_name = 'client'; client 테이블의 열의 특정 정보만 조회한다. select column_name, ordinal_position, data_type from information_schema.columns where table_name = 'client'; 방법 2 execute sp_columns @table_name = 'city'; 열 추가하기 client 테이블에 client_name 열을 추가한다. 테이터 형식은 varchar, 최대 길이는 50이다. alter table client add ...

SQL Server / Query / JOIN

SQL Server / Query / JOIN

JOIN으로 여러 개의 테이블의 데이터를 연결하여 조회할 수 있다. 다음과 같은 두 개의 테이블이 있다고 하자. country에는 나라의 이름이, city에는 도시의 이름이 있다.  INNER JOIN country 테이블의 country_no와 city 테이블의 country_no가 같은 것을 연결한다. 두 테이블에 모두 존재하는 데이터를 출력한다. select country.country_name, city.city_name from country inner join city on country.country_no = city.country_no ; LEFT JOIN country 테이블의 country_no와 ...