데이터를 조회할 때 원하는 레코드만 필터링해서 출력하려면 비교 연산자와 관계 연산자가 사용된다. 우선, 아래 연산자의 종류를 보면, 아마 대부분 익숙한 연산자일 것이다. =는 같음을, !=는 다름을 나타낸다. 주의해야할 점은, !=과 동일한 의미를 가진 연산자가 ^=와 <> 이렇게 두 개가 더 존재한다. 이 세 가지 모두 같지 않다를 나타낸다. 그러면 왜 같은 의미의 연산자가 세 개나 있을까?
원래 !=은 Oracle이 아닌 다른 DBMS들이 사용하는 연산자이다. MySQL, SQL Server, Informix, Sybase 등 여러 DBMS에서 사용되며, 사실상 표준 아닌 표준이 된 연산자라서 사용한다. <>는 ANSI SQL에서 정의한 표준이고 ^=는 Oracle에서만 주로 사용되며 호환성이 낮다.
그러면 이 세 연산자 중 무엇을 사용해야할까? 가능하면 표준화된 연산자를 사용하는 것이 좋다. 그래서 <>를 사용하는 것도 방법이겠지만, 사실 !=도 비공식적인 표준이므로 주로 !=을 사용한다. 또한 다른 프로그래밍 언어에서도 이 형식을 많이 사용하기 때문에 익숙하기도 하다.
=, !=, ^=, <>, >, <, >=, <=, IS NULL, IS NOT NULL
예제를 통해 비교 연산자를 사용해보자. 아래의 문제를 풀기 위해서는 notice라는 테이블에서 작성자가 'newlec'인 게시글만 조회하려면, where 절을 사용해 writer_id가 'newlec'인 레코드만 조회할 수 있을것이다. 조건을 걸 때는 반드시 where 절이 들어가야 한다.
게시글(NOTICE) 중에서 작성자(WRITER_ID)가 'newlec'인 게시글만 조회하시오.
↓
SELECT * FROM NOTICE WHERE WRITER_ID = 'newlec';
아래의 문제도 > 비교 연산자를 사용하여 풀 수 있는 간단한 예이다. HIT라는 컬럼이 3보다 큰 레코드를 조회하면 된다. * 여기에서 조회할 컬럼을 지정하고 where절에서 레코드를 지정하면 된다.
게시글(NOTICE) 중에서 조회수(HIT)가 3이 넘는 글만 조회하시오.
↓
SELECT * FROM NOTICE WHERE HIT > 3;
또 다른 예로, 내용을 입력하지 않은 게시글을 찾으려면 어떻게 해야 할까? 빈 문자열이 아니라 null 값이 들어간 레코드를 찾아야 한다. 하지만 where content = 'null'로 조회하면 안 된다. 이것은 null이라는 문자열을 가진 레코드를 찾는 것이기 때문에 Content 안에 정말 null이라고 하는 문자열이 들어간 content가 들어가 있을 수도 있기 때문이다. 그래서 null은 싱글 쿼테이션을 감싸는 문자열 비교가 되어서는 안되기 때문에 null을 비교할 때는 is null을 사용해야 한다.
게시글(NOTICE) 중에서 내용을 입력하지 않은 게시글을 조회하시오.
↓
SELECT * FROM NOTICE WHERE CONTENT IS NULL
반대로 내용이 있는 게시글만 조회하려면, is not null을 사용해야 합니다. 이렇게 비교 연산자를 활용하면 원하는 레코드를 손쉽게 필터링할 수 있습니다.
SELECT * FROM NOTICE WHERE CONTENT IS NOT NULL
참고자료
'💾 Database > Oracle' 카테고리의 다른 글
[오라클] 11.산술 연산자 (0) | 2024.09.14 |
---|---|
[오라클] 10.트랜잭션 처리(Commit, Rollback) (0) | 2024.09.10 |
[오라클] 9.DML(Update, Delete) (2) | 2024.09.09 |
[오라클] 8.DML(Select, Insert) (0) | 2024.09.09 |
[오라클] 7.ALTER(수정, 삭제, 추가) (0) | 2024.08.31 |