필요한 데이터만 쏙 출력하는 WHERE절
원하는 데이터만 가져올 수 있음
SELECT ...FROM 테이블 명 WHERE 조건식;
참고) 조건식 - 참/거짓 판별식
주로 많이 사용하는 연산: 비교연산, 논리연산
👩🏫참고
- 오라클 테이블: 대문자
오라클 컬럼명: 대문자
-> 인식시 대소문자 구분없이 조회
컬럼명: ORDER_COUNT- MYSQL: 테이블, 컬럼명: 대소문자 구분
테이블명
윈도우즈 - 대소문 구분X
리눅스(맥)- 대소문자 구분
컬럼명: orderCount
AND 연산자
모든 조건이 참일때 참

OR 연산자
하나라도 참일경우 참

단락회로평가

🔽그룹화🔽

+, -, /, * -> 숫자일때
값이 있을때만 연산 가능
--null
SELECT 100 + NULL FROM DUAL; 
nvl(컬럼명,null일때 대체 값)

참고) DUAL 테이블: 가상 테이블, 값을 연산시 사용

>, >=, <, <=
=: 같다

--문자일때는 작은따옴표를 입력해줘야한다.
SELECT * FROM EMP WHERE JOB = 'CLERK';
같지않다
!= <> ^=
SELECT * FROM EMP WHERE DEPTNO != 20;
NOT 연산자: 참인조건 -> 거짓으로
--CLERK, SALESMAN이 아닌 직원 목록 조회
SELECT * FROM EMP WHERE JOB NOT IN ('CLERK','SALESMAN')
ORDER BY JOB;
--SAL가 3000 미만인 직원 목록 조회
SELECT * FROM EMP WHERE NOT SAL >= 3000 ORDER BY SAL;
--사실 비교연산자 바꿔주면 됨ㅎㅎ
-- OR연산으로 쓸 경우 구조가 복잡해진다.
SELECT * FROM EMP
WHERE (DEPTNO = 20 OR DEPTNO = 30 OR DEPTNO = 10)
AND SAL >= 2000
ORDER BY DEPTNO;
🔽


--1981년도에 고용된 직원들 조회
SELECT * FROM EMP
WHERE HIREDATE >= '1981-01-01' AND HIREDATE <= '1981-12-31';

1) 문법
컬럼명 LIKE '키워드'
-> 컬럼명과 키워드가 일치하는 경우
컬럼명 LIKE '키워드%'
-> 키워드로 시작하는 패턴

컬럼명 LIKE '%키워드'
-> 키워드로 끝나는 패턴

컬럼명 LIKE '%키워드%'
-> 키워드가 포함된 패턴
-- NA가 포함된 직책을 가지고 있는 직원 목록
SELECT * FROM EMP WHERE JOB LIKE '%NA%';
2) -, %
_: 글자 1개
ENAME LIKE '_L%' -> 2번째 단어가 L로 시작하는 이름
-- 이름의 2번째 문자가 L로 시작하는 직원 목록
SELECT * FROM EMP WHERE ENAME LIKE '_L%';
3) 와일드 카드 문자가 데이터의 일부일 경우 - ESCAPE 절 사용
_ %를 문자 그대로의 패턴으로 인식하고 싶은 경우 👩🏫참고
테이블 데이터를 복사해서 생성
CREATE TBLE 테이블명 AS SELECT ...


ESCAPE기능 활용

NULL은 값이 없는 상태 -> 연산이 불가능함(산술, 비교, 논리 ...)
컬럼명 IS NULL: 컬럼이 NULL인 상태

👩🏫참고
컬럼명 IS NOT NULL: 컬럼이 NULL이 아닌 상태
- 오라클: 비어있는 문자열 입력-> NULL로 들어감
- MySQL: 빈 문자열 -> 비어있는 문자열로 들어감
(컬럼명 <> " AND 컬럼명 IS NOT NULL)
SQL: 관계 대수 + 집합 이론
1) UNION: 합집합
중복되는 데이터는 하나만 출력
SELECT * FROM EMP WHERE SAL >= 2000
UNION
SELECT * FROM EMP WHERE SAL <= 2500;
⚠주의
컬럼 합칠경우 컬럼의 개수 같아야한다.
2) UNION ALL

3) MINUS: 차집합
-- 차집합 출력, DEPTNO 10만 출력
SELECT * FROM EMP WHERE DEPTNO IN (10,20)
MINUS
SELECT * FROM EMP WHERE DEPTNO IN (20,30);
4) INTERSECT: 교집합
-- 20번 부서 공통적 (교집합 출력)
SELECT * FROM EMP WHERE DEPTNO IN (10,20)
INTERSECT
SELECT * FROM EMP WHERE DEPTNO IN (20,30);
참고) MySQL - MINUS, INTERSECT 없음