조건을 걸어 해당 데이터를 걸러낸다.
실습문제(WHERE)
1.직원 중에 연봉이 9000 보다 많은 직원들의 직원ID, 이름, 나이, 입사일시를 출력해주세요.
SELECT 직원ID, 이름, 나이, 입사일시
FROM 직원
WHERE 연봉 > 9000;
2.직원 중에 이름이 "이현정"인 직원의 정보를 모두 출력해주세요.
SELECT *
FROM 직원
WHERE 이름='이현정';
3.직원연락처 테이블에서 연락처가 '010-1231-1234'인 직원의 정보를 모두 출력해주세요.
SELECT *
FROM 직원연락처
WHERE 연락처 = '010-1231-1234';
4.부서 테이블에서 근무지가 서울인 부서명을 출력해주세요.
SELECT 부서명
FROM 부서
WHERE 근무지 = '서울';
5. 직원주소 테이블에서 직원ID가 'A0007'인 직원의 주소를 출력해주세요.
SELECT 주소
FROM 직원주소
WHERE 직원ID = 'A0007';
참(TRUE), 거짓(FALSE)를 기준으로 논리조건을 따진다.
AND : 하나라도 FALSE 면 FALSE
OR : 하나라도 TRUE 면 TRUE
실습문제(AND, OR)
1.직원연락처 테이블에서 직원ID가 'A0001'인 직원의 집 전화 연락처를 출력해주세요.
SELECT 연락처
FROM 직원연락처
WHERE 직원ID = 'A0001' AND 구분코드 = '집전화';
2.소속된 부서의 ID가 'D0003'인 여직원 중 나이가 30대 이상인 직원의 모든 정보를 출력해주세요.
SELECT *
FROM 직원
WHERE 성별 = '여' AND 나이 > 30;
3. 직원ID 가 'A0001'이거나 'A0005'이거나 'A0007'인 직원의 정보를 모두 출력해주세요.
SELECT *
FROM 직원
WHERE 직원ID = 'A0001' OR 직원ID = 'A0005' OR 직원ID ='A0007';
조건문에도 순서가 있다.
WHERE절에서 AND가 우선 OR이 다음!
여러 조건을 WHERE IN(data1, data2, data3, ...)
실습 문제를 보다 효율적으로 찾아보기! (WHERE절 참고)
3. 직원ID 가 'A0001'이거나 'A0005'이거나 'A0007'인 직원의 정보를 모두 출력해주세요.
SELECT *
FROM 직원
WHERE 직원ID = 'A0001' OR 직원ID = 'A0005' OR 직원ID ='A0007';
↓
WHERE 직원ID IN('A0001', 'A0003','A0005');
data1 이상 부터 data2 이하까지 데이터를 찾을때 사용! (data1 가 data2 보다 값이 적어야함)
SELECT *
FROM 직원
WHERE 연봉 BETWEEN 2800 AND 5000;
SELECT *
FROM 직원
WHERE 이름 LIKE '%수';
실습문제(LIKE, BETWEEN)
--1 .직원 테이블에서 이름에 ' 철' 이 포함되는 직원의 직원ID, 이름, 나이를 출력해주세요.
SELECT 직원ID, 이름, 나이
FROM 직원
WHERE 이름 LIKE '%철%';
--2. 직원 중에 연봉이 7000 ~ 9000 사이인 직원들의 직원ID, 연봉, 입사일시를 출력해주세요.
SELECT 직원ID, 연봉, 입사일시
FROM 직원
WHERE 연봉 BETWEEN 7000 AND 9000;
--3. 직원주소 테이블에서 주소가 '동구' 로 시작하는 모든 데이터를 출력해주세요.
SELECT *
FROM 직원주소
WHERE 주소 LIKE '동구%';
--4.(보너스 문제) 입사를 11월에 한 직원들의 정보를 모두 출력해주세요!
SELECT *
FROM 직원
WHERE 입사일시 LIKE '%/11/%';
또는 WHERE 절...
WHERE 입사일시 LIKE '%_11_%';
또는 WHERE 절...
WHERE 입사일시 LIKE '___11___';
SELECT *
FROM 테이블 명
WHERE 칼럼명 IS NULL;
WHERE 칼럼명 IS NOT NULL;
WHERE 칼럼명 LIKE '패턴%';
WHERE 칼럼명 IN ('값1', '값2', '값3');
WHERE 칼럼명 BETWEEN 10 AND 20;
WHERE 칼럼명 <> '값';
WHERE 칼럼명 > 10;