서론
통상적인 데이터베이스(테이블)에는 많은 행과 열이 있다.
화면에 표시하여 데이터를 확인할 수 있는데, 한번에 볼 수 있는 데이터양은 한정되어 있다.
따라서 화면에 표시할 때는 특정 행이나 열을 선택하여 데이터베이스에서 데이터를 읽어오는, 다시 말해 '검색'
이 빈번하게 일어난다.
이 검색에는 행
을 선택하는 방법과 열
을 선택하는 방법이 있다.
행을 선택할 때는 WHERE 구
를 사용하며, 열을 선택할 때는 SELECT 구
를 사용한다.
먼저 SELECT 구를 살펴보자.
1. SELECT 구에서 열 지정하기
SELECT column_1, column_2 FROM sample_table;
열을 한정하기 위해서는 위와 같이 열명을 지정
해주면 된다.
콤마(,)
를 이용하여 구분지으며 여러 개를 지정할 수 있다.
열을 전혀 지정하지 않거나 테이블에 존재하지 않는 열을 지정하면 구문 에러가 발생한다.
열 지정 순서는 임의로 정할 수 있다.
동일한 열을 중복해서 지정해도 무관하다.
2. WHERE 구에서 행 지정하기
테이블의 열은 많아야 몇십 개 정도지만 행
은 열에 비해 훨씬 많을 수 있다.
데이터베이스의 규모에 따라 다르지만 일반적으로 수백 건에서 대규모의 경우 수천만 건의 행에 달하는 경우도 있다.
이처럼 많은 행 속에서 필요한 데이터만 검색하기 위해서는 WHERE 구
를 사용한다.
WHERE 구는 FROM 구의 뒤
에 표기한다.
예약어 'WHERE' 뒤에는 검색 조건
을 표기하며 이 조건에 일치하는 행만 SELECT의 결과로 반환된다.
SELECT * FROM sample_table WHERE id=1;
조건식은 열
과 연산자
, 상수
로 구성되는 식이다.
위 명령에서 'id=1'
이 이에 해당한다.
'id=1'은 id 값이 1인 행
만 추출하겠다는 의미이다.
id가 1이 아닌
값을 찾고 싶다면 '<>'
연산자를 사용하면 된다.
SELECT * FROM sample_table WHERE id<>1;
참고로 SQL에서는 구의 순서가 정해져 있어 바꿔적을 수 없다.
'SELECT 구 => WHERE 구 => FROM 구'의 순으로 적으면 에러가 발생한다.
3. 문자열형의 상수
수치형 조건식의 경우 비교할 숫자를 그대로 조건식에 표기한다.
하지만 문자열형
을 비교할 경우는 싱글쿼트(' ')
로 둘러싸 표기해야 한다.
SELECT * FROM sample_table WHERE name='홍길동';
날짜시간형
의 경우에도 싱글쿼트로 둘러싸 표기한다.
이때 연원일을 하이픈(-)
으로 구분한다.
SELECT * FROM sample_table WHERE dates='2022-01-01';
시각은 시분초를 콜론(:)
으로 구분하여 표기한다.
SELECT * FROM sample_table WHERE dates='2022-01-01 12:00:00';
한편 자료형에 맞게 표기한 상수값을 '리터럴'
이라 부른다.
4. NULL값 검색
'검색'이라고는 해도 조건식을 표기하는 것뿐이므로 간단하다.
하지만 NULL값
을 검색할 경우에는 조금 주의해야 한다.
왜냐하면 NULL값은 =
연산자로 검색할 수 없기 때문이다.
NULL값을 검색할 때는 'IS NULL'
을 사용한다.
IS NULL은 술어
로 연산자의 한 종류로 생각하면 된다.
SELECT * FROM sample_table WHERE id IS NULL;
반대로 NULL값이 아닌 행을 검색하고 싶다면 'IS NOT NULL'
을 사용하면 된다.
SELECT * FROM sample_table WHERE id IS NOT NULL;