본문 바로가기

Languages/SQL

[SQL] 6. 검색 조건

728x90
반응형
SMALL

0. 검색 조건 지정하기

데이터 검색에는 열을 지정하는 방법과 행을 지정하는 방법이 있다. 조건을 지정하여 데이터를 검색해보자. 

 

통상적인 데이터베이스의 경우 많은 행이 있을 것이다. 화면에 표시하여 데이터를 확인할 수 있는데 한번에 볼 수 있는 데이터 양은 한정적이다. 화면에 표시할 때는 행이나 열을 선택하여 데이터베이스에서 데이터를 읽어오는 일이 자주 발생한다. WHERE 구와 SELECT 구를 통해 검색 조건을 지정한다. 

SELECT 열1, 열2 FROM 테이블명 WHERE 조건식

 

1. SELECT로 열 지정하기

앞서 SELECT를 사용할 때는 *를 사용해서 테이블의 모든 열을 검색했다. 열을 한정하기 위해 *대신 열명을 지정한다.

SELCET 열1,열2... FROM 테이블명

열은 콤마를 통해 구분 지으며 여러 개를 지정할 수 있따. 지정한 열만 결괏값으로 표시된다. 

SELECT no, name FROM sample21;

열을 지정하지 않을 경우 에러가 발생한다. 또한 테이블에 존재하지 않는 열을 지정해도 에러가 발생한다. 열 지정 순서는 임의로 정할 수 있으며 테이블에서 열이 정의된 순서와 동일한 순으로 지정할 필요는 없다. 중복 지정 또한 가능하다. 

 

2. WHERE 구에서 행 지정하기

테이블의 행은 열에 비해 훨씬 더 많을 수 있다. 데이터베이스의 규모에 따라 다르지만 일반적으로 수백 건에서 대규모의 경우 수천만 건의 행에 달하는 경우도 있따. 이처럼 많은 행 속에서 필요한 데이터만 검색하기 위해 WHERE 구를 사용한다. 

 

WHERE 구는 FROM 뒤에 표기하며 WHERE 뒤에 검색 조건을 표기한다. 조건에 일치하는 행만 결과로 표시된다. 

 

구의 순서와 생략

SQL에서는 구의 순서가 정해져 있어 바꿔적을 수 없다. 순서를 바꿔적을 경우 에러가 발생한다. 단 생략이 가능한 구도 존재한다. WHERE 구를 생략할 경우 테이블 내의 모든 행이 검색 대상이 된다. 

 

WHERE 구

조건식은 '열과 연산자, 상수로 구성되는 식'이다. 예를 들어 'WHERE no = 2'라고 적을 경우 no 열이 2인 행만 결과로 표시된다. 

SELECT * FROM sample21 WHERE no = 2

조건식

조건식 'no = 2'는 no 열 값이 2일 경우에 참이 되는 조건이다. 조건식을 더 자세히 살펴보자. 'no = 2'는 'no', '=', '2'의 세 개 항목으로 나눌 수 있다. 첫 번째 항목은 열 이름이다. 두 번째 항목은 연산자이다. 연산자란 어떤 계산을 할지 지정하는 것으로 보통 기호로 표기한다. '='의 경우 양 항이 같으면 참, 다르면 거짓을 반환한다. 이를 비교연산자라고 부른다.

 

값이 서로 다른 경우 '<>'  

'<>'는 또 다른 비교연산자이다. 만약 'no <> 2'로 사용한다면 no가 2가 아닌 행들을 출력한다. 

 

 

3. 문자열형의 상수

지금까지 no 열을 사용한 검색 조건의 예를 살펴보았다. no 열 값이 2인 경우와 그렇지 않은 경우로 검색해 보았다. 이번에는 name 열을 사용해 동일한 조건으로 검색해보자. 

 

SELECT * FROM sample21 WHERE name = '박준용';

no 열은 수치형 열이다. name 열은 no 열과 자료형이 다른 문자열형 열이다. 수치형 조건식의 경우 비교할 숫자를 그대로 조건식에 표기한다. 하지만 문자열형을 비교할 경우 싱글쿼트('')로 둘러싸 표기해야한다. 날짜시간형의 경우에도 싱글쿼트로 둘러싸 표기하며 연월일을 하이픈으로 구분한다. 시각은 시분초를 콜론으로 구분하여 표기한다.

문자열형의 열과 비교하기 위해서는 조건으로 지정할 값도 그 자료형에 맞춰 지정해야한다. 한편 자료형에 맞게 표기할 상수값을 리터럴이라 부른다. 문자열 리터럴은 싱글쿼트로 둘러싸 표기한다. 

 

 

4. NULL값 검색

검색이라고는 해도 조건식을 표기하는 것뿐이므로 간단하다. 하지만 NULL 값을 검색하는 경우에는 조금 주의해야 한다. 지금부터 NULL 값을 검색하는 방법에 관한 살펴보겠다. 

 

IS NULL

NULL 값을 검색할 때는 = 연산자가 아닌 'IS NULL'을 사용한다. IS NULL은 술어로 연산자의 한 종류로 생각해야 한다. 

SELECT * FROM sample21 WHERE birthday IS NULL;

이제 NULL 값에 해당하는 행이 표시되었다. 반대로 NULL 값이 아닌 행을 검색하고 싶다면 'IS NOT NULL'을 사용하면 된다. 

 

 

5. 비교 연산자

= 연산자와 <> 연산자, IS NULL로 검색하는 방법에 관해 알아보았다. WHERE 구로 지정하는 조건식을 참과 거짓을 반환하는 비교 연산자나 술어를 사용해서 표기할 수 있다. SQL에서는 많은 연산자 술어를 사용할 수 있다. 대표적인 비교연산자를 살표보자. 

  • <> 
  • >=
  • <
  • <=

< 연산자와 > 연산자는 대소관계를 비교하는 연산자이지만 =을 붙임으로써 서로 값이 같은 경우도 비교할 수 있다. =은 무조건 >나 <뒤에 붙이며 중간에 스페이스를 넣으면 에러가 발생한다. 

728x90
반응형
SMALL

'Languages > SQL' 카테고리의 다른 글

[SQL] 8. 패턴 매칭에 의한 검색  (0) 2021.04.12
[SQL] 7. 여러가지 조건  (0) 2021.03.15
[SQL] 5. 테이블 구조 참조하기  (0) 2021.03.02
[SQL] 4. SELECT * FROM 테이블명  (0) 2021.02.22
[SQL] 3. 데이터베이스 서버  (0) 2021.02.15