19.11.21. IN, LIKE, IS NOT NULL, AND, OR, NOT
데이터베이스 구현
2019-11-21 23:46:05
▶IN 연산자
col 의 값이 IN 연산자 안에 나열된 값 중에 포함될 때 참으로 판정.
-
SELCT *
FROM emp
WHERE deptno IN (10,20);
=> emp 테이블의 직원 소속부서가 10번 "이거나" 20번인 직원 정보 조회.
RDBMS : 집합의 개념.
1. 순서가 없다.
(1,5,7),=(5,7,1)
2. 중복이 없다.
(1,1,5,7) = (5,1,7)
"이거나" => OR
"이고" => AND
따라서 IN 연산자는 OR 로 바꿀 수 있다.
SELECT *
FROM emp
WHERE deptno = 10
OR deptno = 20;
▶LIKE 연산자
문자열 매칭 연산. ( % , _)
% : 문자가 없거나, 여러 문자열.
_ : 하나의 문자.
Q : emp 테이블 속 사원 이름(ename)이 s로 시작하는 사원 정보 조회.
SELECT *
FROM emp
WHERE ename LIKE 'S%';
Q : Smith, Scott 를 패턴으로 검색해보자.
1. _ 패턴 사용
SELCT *
FROM emp
WHERE ename LIKE 'S__T_';
2. % 패턴 사용
SELCT *
FROM emp
WHERE ename LIKE 'S%T_';
=> 두 개는 같지 않다. % 패턴 속에는 아무것도 안 올 수도, 537457345개의 글자가 올 수도 있다.
NULL 값 조회해보자.
WHERE MRG = NULL;
=> 일 것 같지만 아님.
WHERE MRG IS NULL;
=> 이게 맞음.
반대는 IS NOT NULL
Q : 상여금을 받은 사원을 조회해보자.
SELCT *
FROM emp
WHERE comm IS NOT NULL;
▶ 논리 연산 (AND, OR, NOT)
And : 조건을 동시에 만족. (많이 쓰일수록 데이터가 줄어든다.)
OR : 조건을 한 개만 충족하면 만족. (많이 쓰일수록 데이터가 늘어난다.)
Q : emp 테이블에서 관리자 사번이 7698, 7839 가 아닌 직원 정보 조회.
SELECT *
FROM emp
WHERE mgr NOT IN (7698, 7839);
(!=)
=> 여기에 mgr 값이 NULL 인 사람 조회도 해야 하니까
SELECT *
FROM emp
WHERE mgr NOT IN (7698, 7839);
OR mgr IS NOT NULL;
=> 완성~!
Q : emp 테이블 job 이 SALESMAN, 입사일자가 1981.06.01 이후인 직원 정보 조회
SELECT *
FROM emp
WHERE job = 'SALESMAN'
AND hiredate > TO_DATE('19810601'),('yyyymmdd');
'database' 카테고리의 다른 글
oracle - 형변환의 종류, 숫자포맷, NULL처리 함수 (0) | 2023.03.13 |
---|---|
oracle - 문자열, 숫자, 날짜 조작 함수 (0) | 2023.03.13 |
oracle - 연산자 우선순위, ORDER BY, ROWNUM (0) | 2023.03.13 |
oracle 컬럼조회(WHERE, TO-DATE, ALIAS, UPDATE 등) (0) | 2023.03.13 |
oracle 계정생성 (0) | 2023.03.13 |