2021. 7. 4. 22:44ㆍ(구)공부/DB
-- 테이블 삭제
DROP TABLE EMP_TEMP2;
--집합 연산자
UNION -- 합집합(NO중복행)
UNION ALL-- 합집합(중복행 있음)
SELECT EMPNO,ENAME,SAL,DEPTNO
FROM EMP WHERE DEPTNO=20;
--오라클 함수 문자열
UPPER - 대문자로
LOWER - 소문자로
INITCAP -첫 글자만 대문자
LENGTH - 길이
LENGTHB -바이트 길이
SUBSTR('문자열','시작','갯수') - 문자열 자르기
INSTR('HELLO, ORACLE!' , 'LO') - 'LO'의 위치
INSTR('HELLO, ORACLE!' , 'L',5) - 5번째 L의 위치
INSTR('HELLO, ORACLE!' , 'L',a,b) - a부터 시작해서 b번째 L의 위치
REPLACE('010-1234-5678','-',' ') - '-'를 ' '로 치환
LPAD('ORACLE',10,'#') - 10자리의 공간을 차지하며 빈자리는 '#'로 채우고 Left 정렬
RPAD('ORACLE',10,'*')
CONCAT('a', 'b') - 'ab' 글자 붙이기
TRIM - 문자 잘라내기
ROUND - 반올림
TRUNC - TRUNC 함수는 주로 소수점 절사 및 날짜의 시간을 없앨 때 사용한다.
CEIL - 올림
FLOOR - 내림
MOD(15,6) - 나누기 후 나머지
--날짜
ADD_MONTHS(HIREDATE,3) - 날짜에 3개월 추가
MONTHS_BETWEEN(HIREDATE, SYSDATE) - 두 날짜의 차이 개월 수
NEXT_DAY(SYSDATE, '월요일') - 월요일인 다음 날짜
LAST_DAY(SYSDATE) - 현재 월의 마지막 날짜
--형변환
TO_CHAR(SYSDATE,'YYYY-MM-DD,HH24 : MI : SS , DDD, DAY, DY, W', 'NLS_DATE_LANGUAGE=ENGLISH') 문자열로 바꾸면서 형식지정
TO_CHAR(SAL, '$999,999'),
TO_CHAR(SAL, 'L999,999'),
TO_CHAR(SAL, '999,999.00'),
TO_CHAR(SAL, '000,999,999.00'),
TO_CHAR(SAL, '999,999')
TO_NUMBER('1,300','9,999')
TO_DATE('2018-07-14', 'YYYY-MM-DD'),
NVL(자료,0) - 자료가 null이면 0대입
NVL2(COMM,'O','X') - COMM이 null이면 O 아니면 X
Case문
SELECT EMPNO, ENAME, JOB, SAL,
CASE JOB
WHEN 'MANAGER' THEN SAL*1.1
WHEN 'SALESMAN' THEN SAL*1.05
WHEN 'ANALYST' THEN SAL
ELSE SAL*1.03
END AS UPSAL
FROM EMP;
SELECT EMPNO, ENAME, JOB, SAL,
CASE
WHEN JOB='MANAGER' THEN SAL*1.1
WHEN JOB='SALESMAN' THEN SAL*1.05
WHEN JOB='ANALYST' THEN SAL
ELSE SAL*1.03
END AS UPSAL
FROM EMP;
/* 다중 행(그룹) 함수
GROUP BY 를 사용하지 않고 그룹 함수 쓰면
전체 기준 한 개 행으로 끝
한개의 그룹당 한개의 결과가 나오게 하는 것*/
SUM(SAL)
COUNT(DISTINCT SAL)
COUNT(COMM)
MAX(COMM)
MIN(COMM)
AVG(COMM)
'(구)공부 > DB' 카테고리의 다른 글
mysql 조건에 따라 inser or update (0) | 2021.09.01 |
---|---|
오라클 - 3 (0) | 2021.07.04 |
오라클 - 1 (0) | 2021.07.04 |
(ORACLE) 계정 생성/준비하기 (0) | 2021.07.01 |