❗ * 은 전체 Column 조회
SELECT *
FROM RARA.TEST;
SELECT *
FROM EMPLOYEE;
❗ DEPT_TITLE은 EMPLOYEE가 아닌 다른 테이블에 있기 때문에 조회가 불가능하다.
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE;
SELECT 10+20, 10-20, 20/3, 5*4
FROM DUAL;
SELECT 10+20, 10-20, 20/3, 5*4
FROM DUAL;
✏️ 전체 사원의 급여에 100원씩 더하고 사원명 조회하기
SELECT EMP_NAME, SALARY + 100, SALARY
FROM EMPLOYEE;
❗ NULL 값과의 연산은 불가능 하다.
❗ BONUS의 값이 NULL 일 경우 아래 결과는 NULL 로 조회된다.
SELECT EMP_NAME, SALARY+BONUS
FROM EMPLOYEE;
❗ 산술연산은 숫자형만 가능하다.
❗ 오라클에서 문자열 리터럴은 ' ' 를 사용한다.
SELECT '이제 점심 먹자'+100
FROM DUAL; (조회불가)
❗ 실제 테이블에는 존재하지 않는다. (10+30)
SELECT EMP_NAME, SALARY, BONUS, 10+30
FROM EMPLOYEE;
✏️ 사원테이블에서 사원명, 부서코드, 월급, 연봉 조회하기
SELECT EMP_NAME, DEPT_CODE, SALARY, SALARY*12
FROM EMPLOYEE;
👉 SELECT EMP_NAME AS 사원명 FROM EMPLOYEE
SELECT EMP_NAME AS 사원명, SALARY AS 월급
FROM EMPLOYEE;
❗ AS를 생략하고 띄어쓰기로 부여할 수 있다.
SELECT EMP_NAME 사원명, SALARY 월급
FROM EMPLOYEE;
❗별칭에 띄어쓰기, 특수기호는 " " 사용하면 가능
SELECT EMP_NAME AS "사 원 명", SALARY AS "월$급%"
FROM EMPLOYEE;
👉 컬럼명 앞에 사용, SELECT문의 맨 앞에 작성
👉 SELECT DISTINCT 컬럼명, 컬럼명... FROM 테이블명
❗ 부서에 부여된 코드 7개만 조회된다.
SELECT DISTINCT DEPT_CODE
FROM EMPLOYEE;
❗ DEPT_CODE 와 EMP_NAME 의 두 개의 값이 일치해야만 중복이다.
❗ 따라서 중복이 없다고 본다.
SELECT DISTINCT DEPT_CODE, EMP_NAME
FROM EMPLOYEE;
❗ 문자열을 연결할 때 + 를 쓰지 않도록 주의한다.
SELECT '안녕' || '하세요'
FROM DUAL;
❗ || 연산은 컬럼을 합쳐서 출력할 때도 사용한다.
❗ 컬럼은 INFO 로 아래 값들을 모두 포함하여 조회된다.
SELECT EMP_NAME || EMP_NO || EMAIL AS INFO
FROM EMPLOYEE;
SELECT EMP_NAME || '님의 월급은 ' || SALARY || ' 보너스' || BONUS
FROM EMPLOYEE;
SELECT EMP_NAME, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE = 'D9';
✏️ 월급이 200만원 이상인 사원을 전체 조회하기
SELECT *
FROM EMPLOYEE
WHERE SALARY>=2000000;
✏️ 사원 중 직책이 J2 가 아닌 사원 조회하기
❗ 부정연산자 !=, <> 둘 다 사용 가능
SELECT *
FROM EMPLOYEE
WHERE JOB_CODE != 'J2';
✏️ 사원 중 부서가 D5이고 월급이 300만원 이상인 사원명, 부서코드, 월급 조회하기
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE DEPT_CODE = 'D5' AND SALARY >= 3000000;
✏️ 사원 중 부서가 D5거나 월급이 300만원 이상인 사원의 이름, 부서코드, 월급 조회하기
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE DEPT_CODE = 'D5' OR SALARY >= 3000000;
👉 기본적인 날짜를 표시하는 문자열 패턴 : YY/MM/DD -> 'YY/MM/DD'
📎 SYSDATE : 오늘 날짜를 출력하기
SELECT SYSDATE
FROM DUAL;
SELECT SYSDATE-10
FROM DUAL;
SELECT SYSDATE-HIRE_DATE
FROM EMPLOYEE;
✏️ 입사일이 2000년 01월 01일 이전인 사원의 이름, 입사일을 조회하기
❗ DATE 형으로 자동 형변환
SELECT EMP_NAME, HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE < '00/01/01'
✏️ 사원 중 입사일이 00년 01월 01일 부터 02년 12월 31일 까지인 사원 전체 조회하기
SELECT *
FROM EMPLOYEE
WHERE HIRE_DATE >= '00/01/01' AND HIRE_DATE <= '02/12/31';
👉 컬럼명 BETWEEN 값 AND 값;
SELECT EMP_NAME, SALARY, BONUS, HIRE_DATE
FROM EMPLOYEE
WHERE SALARY BETWEEN 2000000 AND 3000000;
SELECT *
FROM EMPLOYEE
WHERE HIRE_DATE BETWEEN '00/01/01' AND '02/12/31' AND DEPT_CODE = 'D9';
👉 컬럼명 (NOT) LIKE '패턴';
📎 % : 문자가 0개 이상 아무 문자나 허용할 때 사용
ex)
%강% : 강, 한강, 두강, 두만강, 한강다리, 강강술래 모두 가능
%강 : 강으로 끝나는 말
강% : 강으로 시작하는 말
✏️ 김씨가 아닌 사원들 찾기
SELECT *
FROM EMPLOYEE
WHERE EMP_NAME NOT LIKE '김%';
📎 _ (언더바) : 문자가 1개 아무 문자나 허용할 때 사용
ex)
_강_ : 중간에 강이 있는 세 글자
_강 : 강으로 끝나는 두 글자
강_ : 강으로 시작하는 두 글자
_강% : 두 글자 이상의 두 번째 자리에 강을 포함하는 문자
✏️ 사원 중 유씨 성을 가진 사원의 이름, 월급, 부서코드를 조회
SELECT EMP_NAME, SALARY, DEPT_CODE
FROM EMPLOYEE
WHERE EMP_NAME LIKE '유__'; ('유%'도 사용 가능)
📎 ESCAPE : '%'나 '_' 앞에 ESCAPE로 특수문자를 지정하면 검색
✏️ 이메일 주소에 _ 앞글자가 3 글자인 사원의 사원명, 이메일 조회하기
❗ ESCAPE 에는 내가 원하는 특수문자를 넣을 수 있다.
SELECT EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE '___*_%' ESCAPE '*';
👉 NULL 은 아무 의미없는 값으로 연산이 불가능하다.
✏️ 보너스를 받고 있는 사원의 이름, 보너스를 조회하기
❗ 보너스를 받지 않는 사원은 IS NULL 로 조회 가능
SELECT EMP_NAME, BONUS
FROM EMPLOYEE
WHERE BONUS IS NOT NULL;
👉 NVL (컬럼명, 대체값)
SELECT EMP_NAME, SALARY, NVL (BONUS, 0)
FROM EMPLOYEE;
❗ AS DEPT_CODE 쓰지 않으면 컬럼이 DEPT_CODE,'인턴' 으로 나온다.
SELECT EMP_NAME, NVL(DEPT_CODE,'인턴') AS DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE IS NULL;
👉 여러 개의 값을 OR로 연결해서 동등 비교할 때 사용하는 연산자
SELECT *
FROM EMPLOYEE
WHERE DEPT_CODE NOT IN ('D5','D6','D7','D8');