참조
2020-08-11-01)SELECT내 WHERE절.sql
2020-08-12-01)LIKE_BETWEEN.sql
- 일반조인이나 조인조건을 기술하는 절
- HAVING 은 일반조건 처리불가
- 관계연산자 (>, <, =, >=, <=, !=(<>))
조건
관계 연산자
- 개발언어의 IF문에 사용되는 조건문과 동일
- '> , <, >=, <=, !=(<>), = 사용
논리연산자 - NOT(!), AND, OR
기타 연산자
- ANY, SOME, IN, ALL, EXISTS 등이 제공됨
- ANY, SOME = (=IN)
- ALL : 전체 조건이 만족되어야함
- EXISTS : 반드시 뒤에 서브쿼리가 나와야함
예시
1. 회원테이블(MEMBER)에서 출생년도가 1973년도 이후 출생한 회원을 조회하시오.
- 단, Alias는 회원번호, 회원명, 주민등록번호이다.
1-1. MEM_REGNO1 (CHAR) 을 조건문에 사용
1-2. MEM_BIR (DATE) 을 조건문에 사용
2. 사원테이블(EMPLOYEES)에서 급여(SALARY)가 5000이상이고 부서코드(DEPARTMENT_ID)가 80번인 사원을 조회하시오.
- 단, Alias는 사원번호, 사원명, 부서코드, 급여, 전화번호
3. 사원테이블에서 30, 40, 60번부서에 속한 사원정보를 조회하시오.
- 단, Alias는 사원명, 부서코드, 부서명, 직무명
1-1. OR 연산자 사용
- JOIN 발생 시 조건 수 = 최소 (JOIN테이블 수 - 1개) 이상
1-2. IN 연산자 사용
- 사용형식: 컬럼명(표현식) IN (값1,값2,값3...)
- 컬럼의 값이 복수개로 주어진 값 중 어느 하나와 일치하면 전체가 참(TRUE)을 반환
- OR 연산자와 호환가능
- ANY(SOME) 연산자로 변환할 때 관계연산자 추가
1-3. ANY(SOME) 연산자
- 사용형식: 컬럼명(표현식) 관계연산자 ANY(SOME) (값1, 값2, ...)
- 컬럼의 값이 복수개로 주어진 값 중 어느 하나와 일치하면 전체가 참(TRUE)을 반환
- OR 연산자로 변환 가능
- IN 연산자로 변환할 때 관계연산자 생략
NULL 조건식
- NULL 값의 비교는 관계연산자('=')로 비교할 수 없음
- IS NULL, IS NOT NULL
예시
사원테이블(EMPLOYEES)에서 영업실적코드(COMMISSION_PCT)가 NULL이 아닌 사원을 조회하시오
- 단, Alias는 사원이름, 부서코드, 영업실적
사원테이블(EMPLOYEES)에서 보너스를 지급하여 급여액을 조회하시오
- 보너스=본봉(SALARY) * 영업실적 / 지급액=본봉+보너스
- 단, Alias는 사원명, 본봉, 보너스, 지급액
널처리 함수 미사용
널처리 함수 사용
- NVL(해당값,숫자) -- 해당값이 NULL이면 숫자로 출력
LIKE 연산자
- 문자열 비교시에만 사용
- 많이 사용되지만, 많이 쓰면 실행속도 느려짐
- 패턴비교 연산
- 와일드카드 : '%'와 '_'
- '%' : 사용된 위치 이후의 모든 문자열과 대응 (모든 문자열: NULL, 공백도 포함)
ex) '김%' -> '김'으로 시작하는 모든 문자열과 대응
- '_' : 사용된 위치에서 한글자와 대응
ex) '홍_동' -> 첫글자가 '홍'이고 3글자로 구성되고, 마지막 글자가 '동'인 문자열과 대응
예시
회원테이블에서 거주지가 '서울'인 회원을 조회하시오.
- 단, Alias는 회원번호, 회원명, 성별,주소, 마일리지
- 주소는 상세주소까지 출력
문제
1. 매입테이블(BUYPROD)에서 2005년 5~6월에 매입한 전자제품(P102)매입 현황을 조회하시오
- 단, Alias는 날짜, 제품코드, 수량, 단가, 금액이다.
ORDER 적용
BETWEEN ~ AND 조건식
- 사용형식: 컬럼명|수식 BETWEEN 값1 AND 값2
- '컬럼명|수식'에 저장된 값이 '값1'에서 '값2' 사이의 값이면 참(TRUE)을 반환
- 범위를 지정하여 비교하는 경우 사용
- AND(논리연산자)를 대신하여 사용 가능
- 문자열, 숫자, 날짜 타입 모두에 적용 가능
예시
장바구니테이블(CART)에서 2005년 6월 회원별 구매현황을 조회하시오
- 단, Alias는 회원번호, 회원명, 구매금액합계
- 회원별 = 회원으로 GROUPING
- 일반컬럼 + 집계함수가 나왔는데 GROUP BY가 안나오면 오류임
문제
사원테이블에서 급여가 5000~12000사이의 사원정보를 조회하시오
- 단, Alias는 사원번호, 사원명, 급여, 직무코드