이번 포스팅에서는 SQL의 연사자들에 대해 알아보도록 하겠습니다. SQL은 관계, 논리, IN, OR, AND, NOT, Exists 등 연산자를 사용할 수 있는데요. 아래 연산자를 통해 WHERE절에서 반환되는 데이터 행을 제한 한다고 생각하면 됩니다. 크게 관계 연산자와 논리 연산자로 구분할 수 있습니다.
종류 | 예시 | |
관계 연산자 |
= | SELECT * FROM TB_PROD WHERE PROD_UNIT_AMT = 100000; |
!=, ^=, <> | SELECT * FROM TB_PROD WHERE PROD_UNIT_AMT != 100000; | |
>,< | SELECT * FROM TB_PROD WHERE PROD_UNIT_AMT > 100000; | |
>=, <= | SELECT * FROM TB_PROD WHERE PROD_UNIT_AMT <= 100000; | |
IN | SELECT * FROM TB_PROD WHERE PROD_UNIT_AMT IN (100000,20000); | |
LIKE | SELECT * FROM TB_PROD WHERE PROD_NM LIKE ‘회전%’; | |
BETWEEN | SELECT * FROM TB_PROD WHERE PROD_UNIT_AMT BETWEEN 100000 AND 200000; | |
IS NULL | SELECT * FROM TB_PROD WHERE DISCT_AMT IS NULL; | |
논리 연산자 |
AND | SELECT * FROM TB_PROD WHERE PROD_NM LIKE ‘회전%’ AND PROD_LANC_YM = ‘201205’; |
OR | SELECT * FROM TB_PROD WHERE PROD_NM LIKE ‘회전%’ OR PROD_LANC_YM = ‘201205’; | |
NOT | SELECT * FROM TB_PROD WHERE PROD_LANC_YM NOT ‘201205’; |
LIKE 연산
- where col1 like '_b%' : 첫번째 한글자는 어는 값이든 상관없고 두번째 글자가 b인 데이터 출력
- col1 like '%#_%' escape '#' : escape '#'을 하면 #뒤에 글자를 그래도 인식하기 때문에 _를 포함한 데이터 선택
- where col1 like '_#_%' escape '#' : 두 번째 문자가 _인 데이터 선택
IS NULL
- 널(NULL)값은 알 수 없는 값, 사용할 수 없는 값, 할당할 수 없는 값, 적용할 수 없는 값, 아직 정의 되지 않은 값
- 널(NULL)은 0 또는 공백과 다름
- 산술식 에서 컬럼의 값이 널이면 결과는 NULL
IN과 OR는 같을까?
SELECT * FROM TB_PROD WHERE PROD_UNIT_AMT IN (100000,20000); |
SELECT * FROM TB_PROD WHERE PROD_UNIT_AMT = 100000 OR PROD_UNIT_AMT = 200000; |
왼쪽에 IN을 사용하는 방식을 논리 연산자인 OR로 변경해도 같은 결과가 나옵니다.
NOT 연산자
SELECT * FROM TB_PROD WHERE PROD_NM NOT IN ('아이패드','맥북'); |
SELECT * FROM TB_PROD WHERE PROD_NM != '아이패드‘ AND PROD_NM != '맥북'; |
위의 왼쪽, 오른쪽 SQL과 같이 NOT (A OR B) = NOT A AND NOT B는 같습니다.
EXISTS 연산자
1.in을 사용
select *from temp1 t1 where t1.col1 in ( select col1 from temp2 s1 ) ; |
2. exists를 사용 select * from temp1 t1 where exists ( select 1 from temp2 s1 where s1.col1 = t1.col1 ) ; |
위의 예시에서 볼 수 있듯이 temp1의 col1 데이터가 temp2에 col1 데이터로 존재하는 row를 선택하기 위해 서브쿼리를 이용하여 IN과 EXISTS를 이용하여 작성할 수 있습니다. EXISTS를 사용하는 이유는 주로 특정 테이블의 특정 값이 다른 테이블에 존재하는지를 확인하기 위해서 입니다.
'데이터베이스' 카테고리의 다른 글
[SQLD] 함수의 종류 및 활용(문자함수, 숫자함수, 날짜함수, 분석함수, ALL, ANY) (2) | 2023.11.20 |
---|---|
[SQLD] 데이터베이스 제약조건 및 형변환 (46) | 2023.11.17 |
[SQLD] SQL의 이해 및 구문 (2) | 2023.11.15 |
하둡과 빅데이터는 무슨 관계일까? (1) | 2023.11.14 |
인메모리(In-memory) DB 특징과 종류 비교 (0) | 2023.11.13 |