본문 바로가기

Oracle/SQL

SQL 연산자 비교연산자, 논리연산자 (AND , OR, NOT 진리연산)

기타 비교연산자


비교연산자 기본 

부등호 연산자 >,<,>=,<=,=,

같지 않다 의 연산자 : !=,<> ^= 

(1) between and

  • between .. and 는  그 사이의 값을 구해라
  • not between .. and 는 그 사이의 값이 아닌 값을 구해라
  • 같다(=)가 포함되어 있다는 뜻!

 

예제 : 20 세 이상 29 세 이하 (즉 : 20 대 구해라 )

age ≥20 and age ≤29    =    between 20 and 29 

 


(2) like / not like (특정단어로 시작하거나, 끝나거나 ... 등등 )

  1. % : wild card : 이자리에는 무엇이 와도 관계 없고 , 몇개여도 관계가 없다.                                                                                              ->즉 이름 첫 글자가 s 이고 뒤에는 무엇이 얼마나 길게 와도 관계 없다.
  2. _ : 이자리에 무엇이 와도 관계 없지만, 자릿수는 한자릿수 이다.
  3. like 연산자를 사용했을때만 % 는 특수문자가 아닌 연산자로서 사용한다. 

Like 연산자는 따로 (괄호) 는 사용 하지 않는다

만약 이메일 데이터를 뽑는데 데이터에 소문자와 대문자가 두개 다 존재 할 수 있으니

코딩 할때도 두개를 다 써넣어주면 된다.

select ename, email

from emp14

where email like '%.net' or email like '%.NET';


or 절 쓸때 주의할 점은 컬럼명을 다시 작성하고 다시 like 를 작성해야한다는 점이다.

여러가지를 뽑을 때에는 where 절에 쿼리명 까지 일일히 다 입력해야한다..( 중복된 쿼리라고 할 지라도)


예제 : 이름이 s 로 시작하는 사람들의 이름을 출력하시오

select ename

from emp

where ename like 's%';

-> 해석해보면 s 이하로는 어떤 문자가 와도 상관이없다~ (%의 의미)


(3) is null / is not null

null 이란 ? 0 도아닌 그냥 **데이터가 아예 없는 상태 (null) 로 출력 된다. :  알 수 없는 값

select ename, comm

from emp

where comm = null ; (x) —→ 오류난다. = 을 쓰는게 아닌 is 를 써주어야한다.

where comm is null ; (o) —> 커미션이 널인 것만 출력해 주어라


->comm 이 출력 될 수 있도록 하기 위해서는 is null 사용 해 준다.

그냥 null 만 입력해서 코딩 실행하게 되면 그냥 null 도 나오지 않는 빈칸이 출력 됨 (?) 확인필요


(4) in / not in 연산자 (특정데이터를 뽑아내어 출력하거나, 출력에서 제외하는것 )

in 은 여러개의 리스트 값을 검색할때 쓰인다.

in 을 사용하지않고 = 으로도 쓸 수 있으나 or 을 중간중간 써 주어야 한다.

-> (단점, 너무 길어짐 )

select ename, sal, job

from emp

where job in ( 'SALESMAN', 'ANALYST', 'MANAGER');

or

where job = 'SALESNAM' or job = 'ANALYST' or job = 'MANAGER' ;

주의 할 점은 job in 후에 (괄호로) 묶어 주어야 한다는 점이다.

특정한 데이터를 제외하고 출력하려면 not in 연산문을 사용한다.

문제 : 나이가 27, 30, 31 세가 아닌 사람들

select ename, age

form emp14

where age not in (27, 30, 31);


연산자들 끼리 이어 붙여 주는 and, or, not (논리 연산자) 

AND

직업이 salesman 이면서 / 월급이 1200 이상인 사람들을 출력하기 위해서는

where 절에 검색조건을 입력해 주면 되는데, 조건이 두개 이므로 AND 로 연결하여 쿼리 작성한다

where job = 'SALESMAN' and sal ≥ 1200;

OR

where telecom = 'sk' or telecom = 'SK' or telecom = 'skt' or telecom = 'skT'

—>이런식으로 하나하나 다 입력 해주어야 한다.

NOT

 

and 연산자의 진리 연산표 

AND TRUE FLASE NULL
TURE TRUE FALSE NULL
FALSE FALSE FALSE FLASE
NULL NULL FALSE NULL

 

OR 연산자의 진리 연산표 

OR TRUE FALSE NULL
TRUE TRUE TRUE TRUE
FALSE TRUE FLASE NULL
NULL TRUE NULL NULL

 

not 연산자의 진리연산표 

NOT TRUE FALSE NULL
TRUE FLASE TRUE NULL