ALTER SESSION SET NLS_LANGUAGE = AMERICAN;
데이터 타입
1) 개념
2) 기본 작성법
SELECT : 조회하고자 하는 컬럼명 기술
여러 컬럼을 기술하는 경우 쉼표로 구분
모든 컬럼 조회시 * 기호 사용 가능
조회 결과는 기술한 컬럼명 순으로 표시
FROM : 조회 대상 컬럼이 포함된 테이블명 기술
WHERE : 행을 선택하는 조건 기술
여러 개의 제한 조건 포함 / 각각의 제한 조건은 논리 연산자로 연결
3) 예시
SELECT
DEPARTMENT_NAME "학과 명"
, CATEGORY 계열
FROM tb_department;
SELECT
EMP_NAME
FROM EMPLOYEEE
WHERE SALARY IS NOT NULL;
SELECT
EMP_NAME
FROM EMPLOYEE
WHERE DEPT_CODE IN ('D6', 'D8);
SELECT
EMP_NAME
, HIRE_DATE
FROM EMPLOYEE
WHERE EMP_NAME LIKE '김%';
SELECT
EMP_NAME
, PHONE
FROM EMPLOYEE
WHERE PHONE LIKE '___9%';
-- 전화 번호 국번이 4자리면서 9로 시작하는 직원의 이름, 전화번호 조회
SELECT
EMP_NAME
, PHONE
FROM EMPLOYEE
WHERE PHONE LIKE '___9_______';
SELECT
EMP_NAME
, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE '___#_%' ESCAPE '#';
1) 정의
1) SUM
2) AVG
3) MAX
4) MIN
5) COUNT
1) 문자 처리 함수
LENGTH : 주어진 문자열의 길이 반환
LENGTHB : 주어진 문자열의 길이를 바이트로 계산해서 반환
INSTER('문자열' 또는 컬럼명, '찾을 문자', 찾을 위치의 시작값, [빈도])
SELECT INSTR('AABAACAABBAA', 'B') FROM DUAL;
-- 첫번째 B를 찾아달라는 뜻
SELECT INSTR('AABAACAABBAA', 'B', 1) FROM DUAL;
-- 뒤에서부터 첫번째 B를 찾아달라는 뜻
SELECT INSTR('AABAACAABBAA', 'B', -1) FROM DUAL;
-- 첫번째부터 시작해서 두번째 B를 찾아달라는 뜻
SELECT INSTR('AABAACAABBAA', 'B', 1, 2) FROM DUAL;
SELECT INSTR('AABAACAABBAA', 'B', -1, 2) FROM DUAL;
LPAD / RPAD : 주어진 컬럼 문자열에 임의의 문자열을 덧붙여 길이 N의 문자열을 반환하는 함수
SELECT
LPAD(EMAIL, 20, '#')
FROM EMPLOYEE;
LTRIM / RTRIM : 주어진 컬럼이나 문자열 왼쪽 / 오른쪽에서 지정한 문자 혹은 문자열을 제거한 나머지를 반환하는 함수
-- 앞에서부터 제거하다 만약 제거하려고 하는 문자가 아닐 경우 제거를 멈춤
SELECT LTRIM('132123GREEDY123', '123') FROM DUAL;
SELECT LTRIM(' GREEDY') FROM DUAL;
TRIM : 주어진 칼럼이나 문자열의 앞/뒤에 지정한 문자를 제거
SUBSTR : 컬럼이나 문자열에서 지정한 위치로부터 지정한 갯수의 문자열을 잘라서 리턴하는 함수
SELECT SUBSTR('SHOWMETHEMONEY', 5, 2) FROM DUAL;
LOWER(문자열 혹은 컬럼) : 소문자로 변경
UPPER(문자열 혹은 컬럼) : 대문자로 변경
INICAP(문자열 혹은 컬럼) : 앞 글자만 대문자로 변경
CONCAT : 문자열 혹은 컬럼 두개를 입력 받아 하나로 합친 후 리턴
SELECT CONCAT('가나다','ABCD') FROM DUAL;
REPLACE : 컬럼 혹은 문자열을 입력 받아 변경하고자 하는 문자열을 변경하려고 하는 문자열로 바꾼 후 리턴
2) 숫자 처리 함수
SELECT ROUND(123.456, 1) FROM DUAL;
3) 날짜 처리 함수
-- 근무년수를 만으로 계산하는 경우에는 월의 차이를 계산해야 한다
SELECT
EMP_NAME
, HIRE_DATE
, FLOOR(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)/12) "만 근무년수"
FROM EMPLOYEE;
SELECT SYSDATE, NEXT_DAY(SYSDEATE, '금요일') FROM DUAL;
-- 숫자는 1~7이며, 일요일부터 시작.
SELECT SYSDATE, NEXT_DAY(SYSDATE, 6) FROM DUAL;
-- 시스템 환경에 따라 설정되어 있으므로 변경을 원하면 설정을 변경해서 사용한다.
SELECT SYSDATE, NEXT_DAY(SYSDATE, 'FRIDAY') FROM DUAL;
1) TO_CHAR
SELECT TO_CHAR(1234) FROM DUAL;
-- 자리수(9 또는 0이라는 문자 사용) 9 는 자리를 맞춰주고 빈자리 비워둠
SELECT TO_CHAR(1234, '99999') FROM DUAL;
-- 0으로 맞추면 빈자리에 0이 들어감
SELECT TO_CHAR(1234, '00000') FROM DUAL;
-- L : 시스템 상 화폐 단위
SELECT TO_CHAR(1234, 'L99999') FROM DUAL;
SELECT TO_CHAR(1234, '$99999') FROM DUAL;
-- ,을 찍고 싶은 자리에 표시
SELECT TO_CHAR(1234, '00,000') FROM DUAL;
-- 표기하려는 자리수보다 작은 자리수를 주면 표기 불가
SELECT TO_CHAR(1234, '999') FROM DUAL;
-- 24시간체제
SELECT TO_CHAR(SYSDATE, 'PM HH24:MI:SS') FROM DUAL;
-- fm : 01이라고 표기하지 않고 1로 표기
SELECT TO_CHAR(SYSDATE, 'YYYY-fmMM-DD DAY') FROM DUAL;
SELECT
EMP_NAME
-- 문자를 포멧 안에 넣고 싶을땐 ""로 표기
, TO_CHAR(HIRE_DATE, 'YYYY"년" MM"월" DD"일"') 입사일
FROM EMPLOYEE;
SELECT
-- 로마문자
, TO_CHAR(SYSDATE, 'RM')
-- 요일을 표시하지 않음(목)
, TO_CHAR(SYSDATE, 'DY')
FROM DUAL;
2) TO_DATESELECT TO_DATE('2020101', 'RRRRMMDD') FROM DUAL;
3) TO_NUMBER
4) NULL 처리 함수
1) DECODE
SELECT
EMP_ID ID
, EMP_NAME 이름
, EMP_NO 주민등록번호
, DECODE(SUBSTR(EMP_NO, 8, 1), '1', '남', '여') 성별
FROM EMPLOYEE;
2) CASE WHEN THEN
/*
CASE
WHEN 조건식 THEN 결과값
WHEN 조건식 THEN 결과값
ELSE 결과값
END
*/
- 급여가 500만원을 초과하면 '고급', 300~500 사이면 '중급', 그 이하는 '초급'으로 출력
-- 처리하고 별칭은 '구분'으로 한다.
SELECT
EMP_NAME
, SALARY
, CASE
WHEN SALARY > 5000000 THEN '고급'
WHEN SALARY BETWEEN 3000000 AND 5000000 THEN '중급'
ELSE '초급'
END 구분
FROM EMPLOYEE;