02_Select_Where.sql
◈ 예제 1) 월급(SALARY) 이 1500 이상인 사원(EMPLOYEE) 조회하기
- 조회 대상 컬럼 : ENAME(사원명 컬럼), SALARY(월급 컬럼)
- 비교연산자 : > , < , >=, <=, =(같다), <>(같지않다)
- 사용법)
SELECT 컬럼명,컬럼명2 ... FROM 테이블명 -- WHERE 컬럼명 >= 값;SELECT ENAME, SALARY FROM EMPLOYEE WHERE SALARY >= 1500;
◈ 연습 1) 10번 부서(번호)의 소속 사원을 출력하세요(전체출력 : *)
- 사원 테이블 : EMPLOYEE
- 부서번호 컬럼 : DNO
- 출력 컬럼 : *
SELECT * FROM EMPLOYEE WHERE DNO = 10;
◈ 연습 2) 사원테이블에서 월급이 5000 인 사람의 이름을 출력하세요
- 사원 테이블 : EMPLOYEE
- 월급 컬럼 : SALARY
- 출력 컬럼 : 사원명(ENAME)
SELECT ENAME FROM EMPLOYEE WHERE salary = 5000;
◈ 예제 2) 사원명(ENAME) 이 SCOTT 사원을 출력하세요( 전체출력 )
- 사원 테이블 : EMPLOYEE
- 출력 컬럼 : *
SQL 문자열 표현 : 홑따옴표 사용 ('')SELECT * FROM EMPLOYEE WHERE ENAME = 'SCOTT';
◈ 연습 3) 사원명(ENAME) 이 ALLEN 사원을 출력하세요( 전체출력 )
SELECT * FROM EMPLOYEE
WHERE ENAME = 'ALLEN';
◈ 연습 4) JOB(직위) 이 CLERK 인 사원을 출력하세요( 전체출력 )
SELECT * FROM EMPLOYEE
WHERE JOB = 'CLERK';
◈ 예제 3) 입사일(HIREDATE) 이 '1981/01/01' 이전인(이하) 사원만 출력하기(전체출력:*)
HIREDATE : 날짜 자료형 비교도 문자열과 비교하면 됨SELECT * FROM EMPLOYEE
WHERE HIREDATE <= '1981/01/01';
◈ 연습 5) 입사일(HIREDATE) 이 '1987/01/01' 이상인 사원만 출력하기 (전체출력:*)
SELECT * FROM EMPLOYEE
WHERE HIREDATE >= '1987/01/01';
◈ 예제 4) 부서번호(DNO) 가 10이고(AND) 직급이(JOB) 'MANAGER' 사원을 출력하세요
사원 : EMPLOYEE
SELECT * FROM EMPLOYEE WHERE DNO = 10 AND JOB ='MANAGER';
◈연습 6) 급여가(SALARY) 1000 과 1500 사이의 사원 조회하기(전체 조회 : *)
사원 : EMPLOYEE
SELECT * FROM EMPLOYEE WHERE SALARY > 1000 AND SALARY < 1500;
◈연습 7) 부서번호가(DNO) 10이거나(OR) 직급이(JOB) 'MANAGER' 인 사원만 출력하기
SELECT * FROM EMPLOYEE WHERE DNO = 10 OR JOB='MANAGER';
◈ 예제 5) 10번 부서에 소속된 사원을 제외하고 나머지 사원 출력하기
① NOT 사용하는 방법 : 논리연산자
SELECT * FROM EMPLOYEE WHERE NOT DNO = 10;② <> (같지않다) 사용 : 비교연산자
!= (같지않다) 도 사용가능SELECT * FROM EMPLOYEE WHERE DNO <> 10;
◈ 연습 8) 급여가(SALARY) 1000 미만이거나 1500 초과인 사원 출력하기
사원 : EMPLOYEE
SELECT * FROM EMPLOYEE WHERE SALARY < 1000 OR SALARY > 1500;
◈ 연습 9) 커미션(COMMISSION) 이 300 이거나(OR) 500 이거나(OR) 1400 인 사원 출력하기
사원 : EMPLOYEE
SELECT * FROM EMPLOYEE WHERE COMMISSION = 300 OR COMMISSION = 500 OR COMMISSION = 1400;
사원 : EMPLOYEE
① 비교연산자
SELECT * FROM EMPLOYEE
WHERE SALARY >= 1000 AND SALART <= 1500;
◈ ② BETWEEN 사용 (** 실무에서 많이 사용함!) ★
★ 사용법) SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 BETWEEN 작은값 AND 큰값;
사용 : 작은값 ~ 큰값 사이의 결과를 조회할때 사용
SELECT * FROM EMPLOYEE WHERE SALARY BETWEEN 1000 AND 1500;---> 1000 과 1500 사이에 있는 정보만 출력함
사원 : EMPLOYEE
SELECT * FROM EMPLOYEE
WHERE DNO BETWEEN 10 AND 20;
◈ *) NOT BETWEEN 예약어 ★
◈예제 7) 급여가(SALARY) 1000 미만이거나 1500 초과인 사원 조회하기
① 비교연산자 사용
SELECT * FROM EMPLOYEE WHERE SALARY < 1000 OR SALARY > 1500;◈ ② NOT BETWEEN 사용** ★
SELECT * FROM EMPLOYEE WHERE SALARY NOT BETWEEN 1000 AND 1500;◈ 연습 11) 1982 년에 입사한(HIREDATE) 사원 조회하기
- 단 BETWEEN ~ AND 사용해서 작성하세요
사원 : EMPLOYEESELECT * FROM EMPLOYEE WHERE HIREDATE BETWEEN '1982/01/01' AND '1982/12/31';
4*) IN 예약어 ( ★ 실무)
★ 사용법) SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 IN (값,값2 ...);
--> 위의 의미 :
컬럼명이 값이거나 값2이거나(OR)...
◈예제 8) 상여금(COMMISSION) 300 이거나 500 이거나 1400 인 사원 조회하기
사원 : EMPLOYEE
① 비교연산자 사용
SELECT * FROM EMPLOYEE
WHERE COMMISSION = 300
OR COMMISSION = 500
OR COMMISSION = 1400;
SELECT * FROM EMPLOYEE
WHERE COMMISSION IN (300, 500, 1400);
사원 테이블 : EMPLOYEE
SELECT * FROM EMPLOYEE
WHERE DNO IN(10,20);
4-1*) NOT IN 예약어 ★
◈예제 9) 상여금(COMMISSION) 300 이 아니고, 500 이 아니고, 1400 아닌 사원 조회하기
-- => 반대 : Not (300 이거나(OR) 500 이거나 1400 이거나)
사원테이블 : EMPLOYEESELECT * FROM EMPLOYEE WHERE COMMISSION NOT IN (300, 500, 1400);
5*) LIKE 검색★★★★★(*)
- 의미 : 일부 키워드(영어, 한글)만 사용해서 비슷한 것들만 조회하기
- 사용법)
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '문자%';
==> % : 아무 글자나 올 수 있음을 의미, 문자를 기준으로 앞/뒤 사용가능
예) 이름이 K 시작하는 사원들 조회SELECT * FROM EMPLOYEE WHERE ENAME LIKE 'F%';
-- 사원 : EMPLOYEE
-- 사원명 컬럼 : ENAME
-- 결과 : 5건
SELECT * FROM EMPLOYEE
WHERE ENAME LIKE '%M%';
-- 사원 : EMPLOYEE
-- 사원명 컬럼 : ENAME
-- 결과 : 2건
SELECT * FROM EMPLOYEE
WHERE ENAME LIKE '%N';
◈ 예제 11) (참고!) 이름의(ENAME) 두번째 글자가 'A' 인 사원 조회하기
☆ LIKE 기호 : % (어떤 문자열을 의미)
☆ LIKE 기호 _ (어떤 1문자를 의미)
사원 테이블 : EMPLOYEESELECT * FROM EMPLOYEE WHERE ENAME LIKE '_A%'
5-1*) NOT LIKE 예약어(★)
- BETWEEN, IN 앞에 NOT 부정의 의미, 마찬가지로 LIKE 앞에 NOT 붙이면 반대(부정)의 의미
◈예제 11) 이름에 'A' 가 포함되지 않는 사원을 조회
사원 테이블 : EMPLOYEE
SELECT * FROM EMPLOYEE WHERE ENAME NOT LIKE '%A%';
6*) NULL 검색(조회) ★
- NULL : SQL 에서 NULL 은 아무것도 없는 값, 연산이 안됨
-사용법 ①) SELECT 컬럼 FROM 테이블명 WHERE 컬럼명 IS NULL;사용법 ②) SELECT 컬럼 FROM 테이블명 WHERE 컬럼명 IS NOT NULL;◈예제 12) 상여금(COMMISSION) 이 NULL 인 사원을 조회
사원 : EMPLOYEE
①IS NULL: NULL 인 정보만 조회SELECT * FROM EMPLOYEE WHERE COMMISSION IS NULL; -- O (결과 나옴)②
IS NOT NULL: NULL 이 아닌 정보만 조회SELECT * FROM EMPLOYEE WHERE COMMISSION IS NOT NULL; -- O (결과 나옴)
(주의) SQL 에서 NULL 은 아무것도 없는 값으로 연산이 안되기 때문에 연산으로 하면 안되고 IS NULL/IS NOT NULL 사용해야한다
SELECT * FROM EMPLOYEE
WHERE COMMISSION = NULL; -- X (결과 없음)
7*) ORDER BY : 정렬 기능★
- 사용 : 속도 저하
- 오름차순 사용법)
SELECT * FROM 테이블명 ORDER BY 컬럼명 ASC;
--> ASC : asending , 오름차순, 생략가능- 내림차순 사용법)
SELECT * FROM 테이블명 ORDER BY 컬럼명 DESC;
--> DESC : desending , 내림차순◈예제 14) 사원(EMPLOYEE) 테이블 오름차순 정렬하기
-- 단, 월급(SALARY)으로 정렬하세요
- 오름차순 : 작은순부터 큰순으로 정렬하는것
- 내림차순 : 큰순부터 작은순으로 정렬하는것
SELECT * FROM EMPLOYEE ORDER BY SALARY ASC;SELECT * FROM EMPLOYEE ORDER BY SALARY DESC;
◈ 연습 7) 사원 테이블에서(EMPLOYEE) 사원명으로(ENAME) 오름차순 정렬해서 조회하세요
-- 사원 : EMPLOYEE
SELECT * FROM EMPLOYEE
ORDER BY ENAME ASC;
◈ 연습 8) 입사일(HIREDATE) 데이터로 내림차순 정렬하세요
-- 사원 : EMPLOYEE
SELECT * FROM EMPLOYEE
ORDER BY HIREDATE DESC;
◈ (응용) 연습 9) 사원테이블에서(EMPLOYEE) 급여는(SALARY) 내림차순으로 정렬하고,사원명은(ENAME) 오름차순으로 정렬하세요
사용법 응용) ORDER BY 컬럼명 ASC[DESC], 컬럼명2 ASC[DESC] ...SELECT * FROM EMPLOYEE ORDER BY SALARY DESC , ENAME ASC;