본문 바로가기
CS/DataBase

데이터베이스 첫걸음 정리 - 6장. 검색 조건 지정하기

by yongckim 2022. 8. 26.
728x90
반응형

이번에는 검색에 조건을 주어 특정 데이터만 검색하는 방법에 대해 알아보겠습니다.

데이터 검색에는 열을 지정하는 방법과 행을 지정하는 방법이 있습니다.

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

검색조건을 지정해야 하는 이유

일반적으로 데이터베이스에는 많은 데이터를 가지고 있습니다.

하지만 우리가 화면에 표시해서 확인할 수 있는 데이터의 양은 한정되어 있기 때문에 특정 조건을 만족하는 경우를 보고 싶은 경우 “검색”을 통해 이를 해결할 수 있습니다.

SQL에서 행을 기준으로는 WHERE 절을 사용하여 검색하고 열을 기준으로는 SELECT 구를 사용하여 검색합니다.

SELECT 구에서 열 지정하기

특정 열만 검색하기 위해서는 다음 명령을 사용하여 검색할 수 있습니다.

SELECT 열1, 열2 FROM 테이블명

열은 위의 구문처럼 쉼표(,)를 이용하여 구분 지으며 여러 개를 지정할 수 있습니다.

다음은 검색 조건으로 특정 열만 지정하는 예제입니다.

SELECT CustomerName, ContactName FROM Customers;

열을 지정할때 주의할 점은 최소 한개 이상의 열을 지정해야 한다는 것입니다.

예를 들어 다음과 같이 열을 지정하지 않으면 SQL Syntax Error가 발생합니다.

SELECT FROM Customers;

마찬가지로 존재하지 않는 열을 지정할 경우에도 에러가 발생합니다.

SELECT A FROM Customers;

  • 헷갈릴 수 있는 내용
    • 열을 지정할때 테이블에 열이 지정한 순서와 동일한 순서로 지정할 필요는 없습니다. 결과는 SELECT 구문에서 지정한 열의 순서대로 출력됩니다.
    • 동일한 열을 중복해서 지정해도 상관 없습니다. 중복된다면 중복된 내용이 그대로 출력되게 됩니다.

WHERE 구에서 행 지정하기

데이터베이스의 규모에 따라 다르지만 대규모 시스템의 경우 수천만에 달하는 행이 존재할 수 있습니다.

이 처럼 많은 행 속에서 필요한 데이터만 검색하기 위해서는 WHERE 구를 사용합니다.

WHERE 구는 FROM 구의 뒤에 표기되며 예약어 “WHERE” 뒤에 검색 조건을 표기합니다. 조건에 일치하는 행만 SELECT의 결과로 반환됩니다.

SELECT 열 FROM 테이블명 WHERE 조건식

구의 순서와 생략

SQL에서는 구의 순서가 정해져 있어 바꿔적을 수 없습니다. FROM 구 뒤에 WHERE 구를 표기합니다.

‘SELECT 구 → WHERE 구 → FROM 구'의 순으로 적을 경우 에러가 발생합니다.

구에는 WHERE 구처럼 생략 가능한 것도 있습니다.

WHERE 구를 생략한 경우에는 테이블 내의 모든 행이 검색 대상이 됩니다.

조건식을 사용하여 WHERE 구 사용해보기

조건식은 “열과 연산자, 상수로 구성되는 식"입니다. 이 조건식을 WHERE 구문 뒤에 작성하면 해당하는 조건의 데이터만 검색됩니다.

다음은 조건식을 활용하여 CustomerID가 1인 값만 조회하는 SQL 구문입니다.

SELECT * FROM Customers WHERE CustomerId=1;

이제 조건식으로 준 다음 구문을 살펴봅시다.

CustomerId=1;
  • CustomerId → 조건으로 지정할 열을 의미합니다.
  • = → 연산자를 의미합니다.
  • 1 → 비교할 값을 의미합니다.

위의 조건식을 한글로 풀어서 설명하면 “CustomerId가 1인 행만 출력한다.”가 됩니다.

이외에도 값이 서로 다른 경우 “>” “<”를 추가하여 크거나 작은 값에 대한 조건도 걸 수 있습니다.

<> 연산자

=은 값이 같은지 비교하는 연산자입니다. 이와 반대로 값이 다른지 비교하는 연산자도 존재하는데 “<>” 연산자가 값이 다른지 비교하는 연산자입니다.

다음은 <> 연산자를 사용하는 예시입니다.

SELECT * FROM Customers WHERE CustomerId<>1;

문자열형의 상수

이번에는 문자열을 WHERE로 비교하는 방법을 보겠습니다.

다음은 특정 도시만 검색하는 SQL입니다.

SELECT * FROM Customers WHERE City='London';

문자열을 비교할때 주의할 점은 싱글쿼트로 둘러 싸 표기해야 합니다. (날짜/시간 형의 경우도 마찬가지입니다.)

💡 자료형에 맞게 표기한 값(1, London, 2014-11-11)들을 리터럴이라고 부릅니다. 문자열과 날짜/시간 유형은 싱글쿼트로 둘러싸 표기합니다.

 

NULL 값 검색

NULL 값을 검색하는 경우에는 주의해야할 필요가 있습니다.

여태까지 봐왔던 것을 바탕으로 생각해보면 NULL 값도 “=” 연산자를 통하여 작성할 수 있을 것 같습니다.

SELECT * FROM test WHERE name=NULL;

하지만 NULL 값이 실제 존재하더라도 위와 같은 방식으로 검색하면 검색이 되지 않습니다.

그래서 NULL을 검색하기 위해서는 IS NULL을 사용해야 합니다.

IS NULL을 사용하는 방법은 다음과 같습니다.

SELECT * FROM Customers WHERE City IS NULL;

반대로 NULL 아닌 값만을 검색하기 위해서는 IS NOT NULL을 사용하면 됩니다.

비교 연산자

SQL에서 대표적인 비교 연산자들은 다음 연산자들이 있습니다.

연산자 동작

= 좌변과 우변의 값이 같을 경우 참
<> 좌변과 우변의 값이 같지 않을 경우 참
> 좌변의 값이 우변의 값보다 클 경우 참, 아니라면 거짓
< 우변의 값이 좌변의 값보다 클 경우 참, 아니라면 거짓
<= 좌변의 값이 우변의 값보다 크거나 같을 경우 참, 아니라면 거짓
>= 우변의 값이 좌변의 값보다 크거나 같을 경우 참, 아니라면 거짓

비교 연산자 중 <=, >= 를 사용할때 이 연산자를 띄어서 사용해서는 안됩니다. (< =)

이런 경우 연산자가 두개 존재한다고 판단해 SQL 에러가 발생합니다.

반응형