SHOW USER;
-- 비교연산자 = 사용, employee_id가 100인사람 가져오기
SELECT *
FROM employees
WHERE employee_id = 100;
SELECT *
FROM employees
WHERE job_id = 'IT_PROG';
SELECT *
FROM employees
WHERE first_name = 'David' AND salary > 4800;
SELECT *
FROM employees
WHERE employee_id >= 105;
-- BETWEEN a AND b = a와 b사이의 값
SELECT *
FROM employees
WHERE employee_id BETWEEN 100 AND 200;
SELECT *
FROM employees
WHERE salary BETWEEN 10000 AND 20000;
-- IN (a, b, c) a, b, c 값만 찾기
SELECT *
FROM employees
WHERE salary IN (10000, 17000, 24000);
SELECT *
FROM employees
WHERE job_id IN ('AD_VP', 'IT_PROG');
-- LIKE 연산자 ~와 같다, % '모든문자' _ '한글자'
SELECT *
FROM employees
-- 조건절에서 AD를 포함한 모든 문자를 찾아서 출력
WHERE job_id LIKE 'AD%';
SELECT *
FROM employees
-- 조건절에서 K를 포함한 모든 문자를 찾아서 출력
WHERE last_name LIKE 'K%';
SELECT *
FROM employees
-- 조건절에서 AD 뒤에 따라오는 문자가 3자리인 데이터 찾아서 출력
WHERE job_id LIKE 'AD___';
SELECT *
FROM employees
-- Le% = Le~ , Le로 시작하는
WHERE first_name LIKE 'Le%';
SELECT *
FROM employees
-- %ame% = ~ame~ , ame를 포함하는
WHERE first_name LIKE '%ame%';
SELECT *
FROM employees
-- %in = ~in , in으로 끝나는
WHERE first_name LIKE '%in';
SELECT *
FROM employees
-- 1% = 1~ , 1로 시작하는
WHERE employee_id LIKE '1%';
SELECT *
FROM employees
WHERE employee_id LIKE '1%' AND job_id = 'AD_VP' OR job_id = 'ST_MAN';
-- AD_VP 를 제외한 데이터 찾아서 출력하는 방법
SELECT *
FROM employees
WHERE job_id != 'AD_VP';
SELECT *
FROM employees
WHERE job_id <> 'AD_VP';
SELECT *
FROM employees
WHERE NOT (job_id = 'AD_VP');
-- IS NULL 연산자 : 데이터 값이 null인 경우를 조회
SELECT *
FROM employees
WHERE manager_id IS NULL;
SELECT *
FROM employees
WHERE commission_pct IS NULL;
SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG';
SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG'
OR job_id = 'FI_ACCOUNT';
-- AND 조건이 2개 이상일 때 정확한 데이터 추출을 위해 괄호로 묶어줌
SELECT *
FROM employees
WHERE salary > 4000
AND (job_id = 'IT_PROG'
OR job_id = 'FI_ACCOUNT')
AND first_name LIKE 'D%';
SELECT *
FROM employees
WHERE employee_id <> 105;
SELECT *
FROM employees
WHERE employee_id IS NOT NULL;
--REPLACE 특정문자, 원하는 문자로 바꾸기
SELECT JOB_ID, REPLACE(JOB_ID, 'ACCOUNT', 'ACCNT')
FROM EMPLOYEES;
--LPAD 왼쪽부터 특정 문자로 자릿수 채우기 (컬럼, 자릿수, 채울문자)
--RPAD 오른쪽부터 특정 문자로 자릿수 채우기 (컬럼, 자릿수, 채울문자)
SELECT FIRST_NAME, LPAD(FIRST_NAME, 12, '-')
FROM EMPLOYEES;
SELECT FIRST_NAME, RPAD(FIRST_NAME, 12, '-')
FROM EMPLOYEES;
--LTRIM 왼쪽부터 특정 문자 삭제
--RTRIM 오른쪽부터 특정 문자 삭제
SELECT JOB_ID,
LTRIM(JOB_ID, 'F'),
RTRIM(JOB_ID, 'T')
FROM EMPLOYEES;
--TRIM 앞 뒤 공백삭제
SELECT TRIM(' 홍길 동 안녕하세요 ')AS 공백삭제
FROM DUAL;
--REPLACE로 중간 공백삭제
SELECT REPLACE(' 홍길 동 안녕하세요 ',' ','')AS 공백삭제
FROM DUAL;
--DUAL = DUMMY (X데이터 값)
--ROUND(숫자, 반올림할 자리 값)
SELECT SALARY,
SALARY/30,
ROUND(SALARY/30, 0), -- 566 : -3 -2 -1,0 : 0 에서 반올림
ROUND(SALARY/30, 1), -- 566.7 : -3 -2 -1,0 1 : 1 에서 0으로 반올림
ROUND(SALARY/30, -1) -- 567 : -3 -2 -1 : 0 에서 -1으로 반올림
FROM EMPLOYEES;
--TRUNC 숫자 절삭
SELECT SALARY,
SALARY/30,
TRUNC(SALARY/30, 0), -- 566 : 0 절삭해서 566.'6' 절삭
TRUNC(SALARY/30, 1), -- 566.6 : 1 절삭해서 566.6'6' 절삭
TRUNC(SALARY/30, -1) -- 560 : -1 값 절삭해서 56'0' 으로 6 절삭
FROM EMPLOYEES;
--SYSDATE 오라클 데이터베이스 시스템이 설치되어 있는 현재 날짜와 시간을 반환하는 함수
SELECT TO_CHAR(SYSDATE, 'YY/MM/DD/HH24:MI'),
SYSDATE + 1, -- 하루더하기
SYSDATE -24, -- 24일 빼기
TO_DATE('20171202')-TO_DATE('20171201'), -- 날짜빼기
SYSDATE + 13/24 -- 시간더하기
FROM DUAL;
--MONTHS_BETWEEN 두 날짜 사이의 개월 수 계산하기
SELECT SYSDATE AS 현재, HIRE_DATE 고용날짜,
ROUND(MONTHS_BETWEEN(SYSDATE, HIRE_DATE), 0) 일한개월수
FROM EMPLOYEES
WHERE department_id = 100;
--ADD_MONTHS 개월수 계산하기
SELECT HIRE_DATE,
ADD_MONTHS(HIRE_DATE, 3) AS 더한값,
ADD_MONTHS(HIRE_DATE, -3) 뺀값
FROM EMPLOYEES
WHERE EMPLOYEE_ID BETWEEN 100 AND 106;
--NEXT_DAY 특정 요일 계산하기
--숫자로 출력시 / 1:일요일, 2:월, 3:화, 4:수, 5:목, 6:금, 7:토
SELECT HIRE_DATE,
NEXT_DAY(HIRE_DATE,'금요일'),
NEXT_DAY(HIRE_DATE, 6)
FROM EMPLOYEES
WHERE EMPLOYEE_ID BETWEEN 100 AND 106;
--LAST_DAY 돌아오는 월의 마지막 날짜 계산하기
SELECT HIRE_DATE,
LAST_DAY(HIRE_DATE)
FROM EMPLOYEES
WHERE EMPLOYEE_ID BETWEEN 100 AND 106;
SELECT HIRE_DATE,
ROUND(HIRE_DATE, 'MONTH'), -- 반올림
ROUND(HIRE_DATE, 'YEAR'),
TRUNC(HIRE_DATE, 'MONTH'), -- 절삭
TRUNC(HIRE_DATE, 'YEAR')
FROM EMPLOYEES
WHERE EMPLOYEE_ID BETWEEN 100 AND 106;
--변환함수
--자동 데이터 타입 변환
SELECT 1 +'2' -- '' 작은따옴표로 묶었기 때문에 문자 데이터 타입
FROM DUAL;
--날짜 형식 문자로 변환
SELECT TO_CHAR(SYSDATE, 'YY'), -- 24
TO_CHAR(SYSDATE, 'YYYY'), -- 2024
TO_CHAR(SYSDATE, 'MM'), -- 06
TO_CHAR(SYSDATE, 'MON'), -- 6월
TO_CHAR(SYSDATE, 'DY'), -- 월
TO_CHAR(SYSDATE, 'YYYYMMDD'), -- 20240624
TO_CHAR(TO_DATE('20171008'),'YYMMDD') --171008
FROM DUAL;
SELECT HIRE_DATE AS 고용날짜,
TO_CHAR(HIRE_DATE, 'YYYY') YYYY,
TO_CHAR(HIRE_DATE, 'MON') MON,
TO_CHAR(HIRE_DATE, 'YYYY-MM-DD') YYYYMMDD,
TO_CHAR(HIRE_DATE, 'YYYY.MM.DD') YYYYMMDD,
TO_CHAR(HIRE_DATE, 'DY') DY
FROM EMPLOYEES;
SELECT TO_CHAR(SYSDATE, 'HH:MI:SS PM'), -- 시간:분:초 AM/PM
TO_CHAR(SYSDATE, 'HH24:MI:SS PM'), -- HH24: 0-24로표현
TO_CHAR(SYSDATE, 'HH12:MI:SS PM'), -- HH12: 1-12로표현
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS PM')
FROM DUAL;
SELECT TO_CHAR(SYSDATE, '"날짜:"YYYY.MM.DD "시각:"HH:MI:SS PM"입니다."') as 현재시각
FROM DUAL;