45일차

백엔드를 팝니다·2024년 8월 14일

개발자 수업

목록 보기
29/72

ORACLE_SQL_Select_Where

-- 04_Select_Where.sql
-- 검색할때 조건을 붙여 조회하기(***) : 성능향상
-- 1) 비교연산자로 조건절(Where) 사용하기
-- sql : >, <, >=, <=, =(같다), <>(같지않다)
-- 예제 1) SALARY(월급) 이 1500 이상인 사원 조회하기
-- 사원 : EMPLOYEE
-- SALARY(월급), ENAME(사원명)
-- 사용법) SELECT 컬럼명, 컬럼명2... FROM 테이블명
-- WHERE 컬럼명 >= 값;
SELECT ENAME, SALARY FROM EMPLOYEE
WHERE SALARY >= 1500;

-- 간단연습 : 부서(DEPARTMENT) 테이블에서 DNO(부서번호)
-- 20보다 큰 부서만 출력하세요

SELECT * FROM DEPARTMENT WHERE DNO > 20;

-- 간단연습2 : 사원 테이블에서 DNO가 10번인 사원을 찾아 전체출력하세요

SELECT * FROM EMPLOYEE WHERE DNO = 10;

--간단연습 3: 사원테이블에서 월급이 5000인 사람의 이름을 출력하세요
SELECT ENAME FROM EMPLOYEE WHERE SALARY = 5000;

-- 예제2) 사원명 (ENAME) 이 SCOTT인 사원의 정보를 출력하세요
-- 사원 테이블 : EMPLOYEE

SELECT * FROM EMPLOYEE WHERE ENAME = 'SCOTT';

-- 간단연습 4) : 사원명(ENAME) 이 ALLEN인 사원의 정보를 출력하세요
-- 사원 테이블 : EPLOYEE

SELECT * FROM EMPLOYEE WHERE ENAME = 'ALLEN';

-- 간단연습 5) JOB(직위) 이 CLERK 인 사원을 출력하세요 ( 전체출력)

SELECT * FROM EMPLOYEE WHERE JOB = 'CLERK';

-- 예제 3) 입사일(HIREDATE) 이 '1981/01/01' 이전인(이하) 사원만 출력

SELECT * FROM EMPLOYEE WHERE HIREDATE <= '81/01/01';

-- 예제 4) 조건식 + 논리 연산자 함께 사용하기
-- 논리 연산자 : AND(그리고, &&) , OR(또는, ||), NOT(부정, !) => SQL에서는 영어로 쓴다

--간단연습 7) 부서테이블에서 부서번호가 30이고 부서명이 SALES 인 사람 출력

SELECT * FROM DEPARTMENT
WHERE DNO = 30 AND DNAME = 'SALES';

-- 간단연습8) 급여가 SALARY 1000과 1500 사이의 사원 조회하기

SELECT * FROM EMPLOYEE WHERE SALARY >= 1000 AND SALARY <= 1500;

-- 간단연습9) 부서번호가(DNO) 10이거나(OR) 또는 직급이(JOB) 'MANAGER'인 사원만 출력하기

SELECT * FROM EMPLOYEE
WHERE DNO = 10
OR JOB = 'MANAGER';

-- 예제 5) 10번 부서(DNO) 에 소속된 사원은 제외하고 출력하기
-- NOT: 부정
-- 1) NOT
SELECT * FROM EMPLOYEE WHERE NOT DNO = 10;

--2) 비교연산자 : <>(같지않다) , !=(같지않다)

SELECT * FROM EMPLOYEE WHERE DNO != 10;

-- 간단연습 10) 부서테이블(DEPARTMENT)에서 20번 부서가 아닌 부서를 모두 출력하세요

SELECT * FROM DEPARTMENT WHERE NOT DNO = 20;

-- 간단연습 11) 급여가 1000미만이거나 1500초과인 사원 출력하기

SELECT * FROM EMPLOYEE WHERE SALARY < 1000 OR SALARY > 1500;

-- 간단연습 12 커미션이 300이거나 500이거나 1400인 사원 출력하기

SELECT * FROM EMPLOYEE WHERE COMMISSION = 300 OR COMMISSION = 500 OR COMMISSION = 1400;

-- 예제 6) 예약어 : BETWEEN

-- 값 ~ 값2 사이의 값만 조회

SELECT * FROM EMPLOYEE
WHERE SALARY BETWEEN 1000 AND 1500;

--간단연습 13) 부서번호(DNO)가 10 ~20 번 사이에 있는
-- 사원들을 출력하세요 BETWEEN ~ AND 사용

SELECT * FROM EMPLOYEE
WHERE DNO BETWEEN 10 AND 20;

예제 7) NOT BETWEEN : BETWEEN 의 반대값
-- 급여가(SALARY) 1000 미만이거나 1500 초과인 사원 조회하기
SELECT * FROM EMPLOYEE
WHERE SALARY < 1000;
OR SALARY > 1500;
-- 1000과 1500사이에 없는 사원 조회하기

SELECT * FROM EMPLOYEE
WHERE SALARY NOT BETWEEN 1000 AND 1500;

-- 연습) 1982 년에 입사한(HIREDATE) 사원 조회하기
-- BETWEEN ~ AND 사용해서 작성

-- 예제 8) 예약어 : IN ()
-- 상여금(COMMISSION) 300 이거나 500 이거나 1400 인 사원 조회하기
-- 사원 : EMPLOYEE
SELECT * FROM EMPLOYEE
WHERE COMMISSION = 300
OR COMMISSION = 500
OR COMMISSION = 1400;

-- 개선) SQL 길이가 김 => IN 사용
-- SELECT * FROM EMPLOYEE WHERE COMMISSION IN (300, 500, 1400);

-- 간단연습 : 부서번호가(DNO) 10 이거나 20 인 사원들 조회하기(전체조회: *)
-- 단, IN 예약어 사용하세요
-- 사원 테이블 : EMPLOYEE

SELECT * FROM EMPLOYEE WHERE DNO IN (10,20);

--예제 9) NOT IT ()
--상여금(COMMISSION) 300이 아니고 500이 아니고 1400이 아닌 사원 조회하기

SELECT * FROM EMPLOYEE
WHERE COMMISSION NOT IN (300, 500, 1400);

-- 예제 10) (*) 예약어 LIKE 검색
-- 의미 : 일부 키워드만 사용해서 비슷한 것들을 모두 조회하기
-- 이름이(ENAME) 'F' 로 시작하는 사원 조회하기(전체조회:)
-- 사용법 : SELECT
FROM 테이블명
-- WHERE 컬럼명 LIKE '%문자%';
-- % 의미 : 아무 글자나 올 수 있음을 의미
SELECT * FROM EMPLOYEE
WHERE ENAME LIKE 'F%';

-- 간단연습 ) 이름에 'M' 이 포함된 사원 조회하기

SELECT * FROM EMPLOYEE
WHERE ENAME LIKE '%M%';

--간단연습 2) 이름이 N으로 끝나는 사원

SELECT * FROM EMPLOYEE
WHERE ENAME LIKE '%N';

-- 예제 11) (참고) 이름의 두번째 글자가 'A'인 사원 조회하기
--LIKE 기호 : %(어떤 문자열을 의미=아무거나 들어올수있음)
-- -(어떤 1문자를 의미)

SELECT * FROM EMPLOYEE WHERE ENAME LIKE '_A%';

-- 예제 12) (참고) NOT LIKE : LIKE 부정
-- 이름에 'A'가 포함되지 않는 사원 조회
SELECT * FROM EMPLOYEE
WHERE ENAME NOT LIKE '%A%';

--예제 13) NULL 조회 :
-- NULL : 아무것도 없는 공간, 산술연산 안됨 , 비교연산(=,> ) 안됨
-- 상여금 (COMMISSION)이 NULL인 사원을 조회
-- 사원 : EMPLOYEE
SELECT * FROM EMPLOYEE
WHERE COMMISSION = NULL; --X

-- => NULL 검색 키워드 : IS NULL
SELECT * FROM EMPLOYEE
WHERE COMMISSION IS NULL;

-- 예제 14) IN NOT NULL : NULL이 아닌 데이터 조회

SELECT * FROM EMPLOYEE
WHERE COMMISSION IS NOT NULL;

-- 간단연습) 사원테이블(EMPLOYEE)에 MANAGER(관리자) 컬럼이 있습니다
-- 관리자가 NULL 인 사원을 출력하세요

SELECT * FROM EMPLOYEE WHERE MANAGER IS NULL;

-- 예제15) ORDER BY : 정렬(오름차순,내림차순)
--오름차순 정렬하기
-- 사용법 : SELECT * FROM 테이블명 ORDER BY 컬럼명 ASC
-- 참고: ASC(오름차순 생략가능)
-- 단, 월급(SALARY)으로 정렬하세요
-- 사용 : 속도저하

SELECT * FROM EMPLOYEE ORDER BY SALARY ASC;

--간단연습 사원테이블에서 사원명으로 오름차순 정렬하세요

SELECT * FROM EMPLOYEE ORDER BY ENAME ASC;

-- 예제 16) ORDER BY : 정렬(내림차순)
-- 사원 테이블 월급순 내림차순

SELECT * FROM EMPLOYEE
ORDER BY SALARY DESC; -- DESC(내림차순)

--간단연습 입사일 내림차순

SELECT * FROM EMPLOYEE ORDER BY HIREDATE DESC;

profile
백엔드 고수가 되고싶은 사람

0개의 댓글